当前位置: 首页 > 技术干货 > 某SRC BypassXSS

某SRC BypassXSS

发表于:2022-01-20 16:33 作者: 望海寺快下课 阅读数(3131人)

声明:
挖掘的案例均已提交至漏洞平台并已经修复,本文仅限于技术讨论与分享,严禁用于非法途径。若读者因此作出任何危害网络安全行为后果自负,与本号及原作者无关。


先是在一个某SRC千万级APP,摸到其论坛,瞎逛,啥都去点一遍,发现一个发表感想的地方

尝试打了一个<h1>whskxk</h1>whskxk,发送之后比较一下字体会进行变化,猜测此处存在XSS。

小天才bypassXSS180.png

刚开始用svg  iframe标签  form表单 a标签带JavaScript,details ontoggle 尝试携带xss的执行语句,发现发送之后全部被过滤掉,并且全部被过滤为空。

小天才bypassXSS280.png

顺带一提,如果直接在发表评论的文本框直接打payload,会被一个<p>标签和<br>标签包住,导致打入的payload会被以文本的形式输出,这边可以利用Burpsuite抓取请求包,把里面的<p>和<br>标签全删掉,注意要全删掉 不能就删个<br>标签 不然上传服务器的时候会请求格式错误。

小天才bypassXSS431.png

小天才bypassXSS433.png

后续尝试了多种标签 发现唯独img标签没有被过滤掉,猜测应该是本来这个论坛就支持图片插入,支持远程加载图片,导致让我们有机可乘。如图所示↓

小天才bypassXSS506.png

尝试打个<img src=1>,这个目的是为了看看系统有没有判断src来源必须是http协议或者https协议,结果显而易见没有进行来源判断,前端成功显示payload.

小天才bypassXSS594.png

发现这些居然都没过滤 直接简单无脑打payload:<img src=1 onerror=alert(1)>,发现onerror后面全部被过滤为空。

当时以为onerror被过滤,替换了oneload,onpageshow,onmouseover,onbounce,onstart等

Tips:onstart,onbounce当时这两个本地调试的时候,就只有火狐能弹,chrome弹不出来。

小天才bypassXSS793.png

当时第一感觉应该是空格的问题导致他们被分割 系统牛马的读取方式我也猜不到,于是尝试性的去把src=1和onerror之间的空格改成+看看会不会解析。

payload:<img+src=1+onerror=alert(1)>

居然发现!虽然onerror事件前面的+被没解析为空格但是确切发现了是空格的问题,同时还发现了()被url编码了一遍

小天才bypassXSS967.png

空格过滤+圆括号过滤!简单有手就行.

为了万无一失重组一下payload:<img/src=1/onerror=alert`1`>,但是又发现这个src和onerror之间的/的又没有被解析为空格。看到“1/onerror=`1`”是整个双引号包住了,当作一个整体成为了src的来源值,所以onerror事件不会被执行

小天才bypassXSS1130.png

小彩蛋:当时由于这个系统每天只能回帖15次 我找F12群里的师傅们帮忙试几个payload,

我一直在编辑里面捣鼓毕竟没次数了,后来发现甘栗酿编辑怎么样也弹不了,重新回复发帖就可以弹。这边还过滤了alert但是Alert没过滤 但话又说回来编辑功能点这边Alert不会被解析所以导致编辑处弹不了窗。(其实还可以用别的弹窗事件,当是感觉Alert也会弹的,就没去尝试别的)

小天才bypassXSS1319.png

当时我这边的思路就是利用“再去尝试闭合掉,把前面的“和src=1后面的自己输入转义之后的”闭合,接着遇到了空格被正常解析 ,onerror后面的又被“”包住,且本地调试是包住带着反引号也是可以执行的

小天才bypassXSS1422.png

当时发现这个回显我有点迷糊所以本地调试了一下

小天才bypassXSS1448.png

发现是可以弹的,但是注意!我当时是在编辑里面改的!不是直接重新发帖,回过头发现这个payload 在发表评论是可以弹出来的!!!

小天才bypassXSS1515.png

小天才bypassXSS1517.png

后来就在群里讨论 ,讨论完就继续试。突然一声QQ提示音 打开一看尼玛出xss了

小天才bypassXSS1560.png

小天才bypassXSS1562.png

当时看这个payload还是有点糊涂,仔细理解了一边 和我自己当时琢磨的差不多 想去过滤为空重新组合一遍完整的,但是这个系统的过滤很奇葩 每当组合起来过滤之后的东西就不是自己想要的。同时由于自己在编辑里面测 导致什么都弹不了窗口。直到12点了 可以重新评论

打入自己刚开始在编辑处怎么也弹不出来的payload:

<img/src=#\"onerror=alert`whskxk`>成功弹窗。


我觉得刑,师傅们在测试的尽量弹console.log,由于我这边可以编辑修改掉 我图方便就直接在网页弹框了。

小天才bypassXSS1816.png

小天才bypassXSS1819.png