记一次存储型XSS的发现

0x00 前言

一次小小的学习过程,主要记录每一步的想法,如何由一个点思考到另一个点。

0x01 走流程

在测试的一个项目中看到了一个搜索框,想到XSS(见搜索框就插)

记一次存储型XSS的发现
此处做了简单的过滤,特殊字符都不行

记一次存储型XSS的发现
继续走流程,看看搜索正常的东西会到什么页面

记一次存储型XSS的发现

大概就这样,试试一些常见的语句,因为上面的过滤了大部分的特殊字符,没办法插入语句。

0x02 无意的发现

接着无意中试着搜索"xss"这个关键字,发现弹框了。由于马上点了搜索,跳到另一个页面,这时还不知道是因为以前的搜索记录触发的xss弹框。

记一次存储型XSS的发现

后面知道,这个站点之前项目组的成员有测试过,插入了挺多的xss语句,看来是测试过以后交给开发修改了,但是只是做了输入的限制,而且搜索的日志还没有清理。

从根本上来说,这个漏洞并没有真正补上,只要能把语句添加到搜索的记录中这个漏洞就有了触发的条件。我觉得想要补上这个漏洞应该在搜索框显示出过去的搜索记录时,不能执行当作html的代码来执行。

0x03 看包

搜索xss语句中的关键字,可以看到以前的记录
记一次存储型XSS的发现
加个尖括号
记一次存储型XSS的发现

发现是跳转,到一个xss处理的页面。
记一次存储型XSS的发现
这个页面大概是没办法尝试了,试试另一个页面
记一次存储型XSS的发现
在搜索框和抓包修改都行不通,只能另找办法。

0x04 burpsuite的作用

这里对第二个页面的请求包进行修改,因为第一个页面能查找到数据也就能写进搜索记录里,最终还是会跳转到第二个页面,也就是说直接在第二个页面能搜索到记录应该就能写入搜索记录里。

尝试修改,对数据包右键点击Change body encoding
记一次存储型XSS的发现

点击后会变成下面这种形式,因为第二个页面的参数有两个,都要修改成一样的,提交发现返回200。

记一次存储型XSS的发现
回去看看搜索框有没有记录。
记一次存储型XSS的发现

存储型XSS get!

0x05 小小的总结下

0.探查这个搜索的功能点,把整个搜索的过程正常走一遍,看到搜索框就想到测试xss
1.限制不能输入特殊字符
2.当搜到xss语句的关键字,时有弹框,说明存在xss
3.抓取数据包,修改搜索处的内容,还是跳转到了专门处理xss的jsp程序中
4.修改提交的方法,“change body encoding”,提交修改
5.回到搜索框,成功写入记录


如果还有不懂的地方可以关注我的公众号“沉淀Hack”,发消息向我留言,有很多干货教程,快扫下面的二维码吧
记一次存储型XSS的发现