悲伤才是真正的魔鬼,越强大的,藏得越深
brutexss是一款自动检测xss漏洞的工具,开源地址我稍微修改了一下,实现批量检测xss的功能。
虽然他的检测方式是对传入的url加载payload,然后查看返回的网页中是否存在payload,这种方式的误报会比较多,但是对我这种基础的小学生来说,能够掌握其中几个payload,结合实战获取宝贵的经验,就很满足了。
chapter 1
页面返回的内容为:
在搜索框中,如果没有结果则会直接输出传入的内容,即:
输入点:keyword
输出点:<tr><td colspan="6">没有搜索到“aaaaaa”相关纪念币资料!</td></tr>
可以看到输出点在一段文本中,按照之前得到的宝贵经验,先测试一些必备的参数看看有无过滤,发现并没有….
检测:"<script>alert(666)</script>
实现弹窗:
收获:搜索框返回的位置很敏感,输出位置多测试看看什么标签可以使用。
chapter 2
这个在页面中并没有结果显示,但是你访问这个网址是不会报错,通过查看页面的源代码,找到了输出点:
双引号闭合,按照宝贵的经验测试一下必备的参数看看有没有过滤:
alert被拦截了- -,哦霍弹窗我只会alert啊,看看有没有其他方法实现弹窗目的,查了下笔记,js有三个方法可以弹窗,学到了学到了
- alert
- prompt
- confirm
通过onmousemove(鼠标移动事件)+confirm实现弹窗,美滋滋美滋滋
查看扫描器的payload,才发现自己的知识有多么浅薄…原来只是过滤了script+alert的组合…
总结:js的弹窗有三种方式可以实现。分别是alert,confirm,prompt。通过svg标签也可以实现弹窗。
chapter 3
首先页面没有显示传入的参数,并且参数接受的只能是数字,出现英文则会报错,弹出这个:
感觉是对传参判断,只能是数字类型,否则后端直接返回一个弹窗,就在我要放弃的时候,群里有个大佬告诉我可以通过错误页面输出导致的xss,即网址存在waf拦截,但是把,你加上敏感参数比如and 1=1的话,页面返回的内容就够意思了:
这下ok了,只需要在后面加上弹窗语句就能弹窗了,总的来说还是经验不够啊。学到老活到老。
总结:对于存在waf的网址,多观察他的输出内容,可以加上敏感参数触发更多的显示内容,然后进行弹窗测试。
chapter 4
显示的结果是这样的,可能存在xss噢
查看页面源码,找输出位置:
发现是尖括号好像都变了样子,以我现在的水平当然找不到怎么突破这个…..
尝试使用事件触发弹窗,发现还是不行,输出点绕不过去….
又到了思维死点了,这个时候我尝试搜索一些存在的物品,页面返回的源码惊呆我了
如果存在物品,在下面会返回物品的网址!!
好吧确实不能限于找输出点的时候输入aaaaaa的死胡同,搜索存在的物品可能会发现更多的信息。
这个时候闭合双引号然后弹窗就行了
总结:找输出点的时候,可以先搜索哪些存在,哪些不存在,有时候返回的信息是不一样的。
chapter 5
返回页面中存在输入点返回的内容
唯一输出点在这个js函数中,虽然我没学过js,但是我想试一试能不能尝试闭合这个js函数然后插入脚本,结果是失败了- -,好吧,这个挺简单的,直接闭合前面的script标签,然后中间插一个标签即可
总结:如果输出位置在js的函数中,可以直接闭合函数
chapter 6
这个一下就找到了输入点和输出点,但是有waf….
经过很多测试都没通过,最后测试svg标签发现成功弹窗,原来是waf没有过滤svg标签,看来很有必要多学学html中的事件触发了
总结:当一些标签事件被过滤的时候,要有耐心测试其他的标签,结合使用,所以很有必要整理html中的触发事件。
chapter 7
这个和上面一样,不过诱惑点很多,比如:
看到输出这么多aaaaaaa,就判断差不多有插入位置,但是测试了好久都没有找到 - -
想到上面那个卖药的例子,于是搜索了一下存在的物品,在网页源代码找到位置
直接截断输出:
chapter 8
这个在这里看到的,过滤规则是把英文的>改成了中文的>,作者的思路是通过img标签的src错误引用触发弹窗,即
<img onerror=alert(1) src=>
<img src=1 onerror=alert(1)//
<svg onload=alert(1)//
总结:多搜索一些物品,找到稳定的输出点。
或者使用混淆绕过,比如:
<img src=1 onerror=(alert)(/xss/)>