xss绕过字符过滤_XSS 绕过WAF和字符限制

  翻译文章,原文: https://medium.com/bugbountywriteup/xss-waf-character-limitation-bypass-like-a-boss-2c788647c229


几个月前,我在我的Twitter中分享了一个然后XSS WAF和字符限制的方法,这是一个私人的赏金项目。今天我将要分享更多的关于如何绕过的技术细节。希望对大家有所帮助。

回到2019年,我那时候正测试一个Web应用程序,这个应用程序允许用户创建相册,并可以上传图片,类似下图:

0c241ece94199896fa1cdbf48cad4784.png

当我单击“编辑”时,可以重命名图片,通常研究者通过改变图片的名称来测试是否存在XSS,我也是这么做的,用了如下的payload:

xsstest'">{{7*7}}

然而我注意到以下几个问题

•输入有15个字符限制,所以我的输入变成xsstest'">{{7*7

•所有特殊字符均已正确转义

•最后,在我尝试重新加载这个相册的时候,WAF把页面重定向到了 /error.aspx?code=500,我只能重新把相册命名为xsstest来重新加载相册。

看起来此输入已经受到XSS攻击方面很好的保护了。然后,我开始使用其他可用选项并在浏览器中连接Burp Suit工具,并保持打开状态以捕获HTTP历史记录中的所有后台请求。然后,当我浏览“ HTTP历史记录”选项卡时,一个后台请求端点引起了我的注意,就像https://subdomain.company.com/ajax/generateImageList.ashx?json={albums:[{"id":"“,” value“:” on“}]}。该请求是针对相册“幻灯片放映”选项的,并且该页面的来源为:

84**00000

所以在这个新的generateImageList.ashx端点中

•用户输入未正确转义

•没有WAF检测

但是我们仍然有15个字符的限制,这使该xss毫无用处。在这种情况下,我们可以想到的最小的xss有效负载是"oncut="alert(),当我们在Windows上按CTRL + X并在键盘上的OS X上按COMMAND + X时,这将导致空白弹出窗口:(注:oncut事件是当input内容被剪切的时候触发)

84**00000
f0c2fa2cacc920d86a8edea1c8493778.png

我尝试了所有可能的方法来绕过此字符限制,但无法做到。我在此处停止测试,并在“待办事项”列表注释中保存了有关此端点的信息,以便在再次测试此资产时在此处查看。大约七个月后,我再次开始测试该网站,并再次检测在此端点。现在注意到,我可以上传相册中的多张照片,并通过选择相册中的所有照片,“幻灯片放映”选项请求端点更改为https://subdomain.company.com/ajax/generateAlbumImageList.ashx?json={albums:[{"id":"","value":"on"}]},该页面来源为:

" rel="lightbox[gallery]">84**00000" rel="lightbox[gallery]">84**00001

因此,现在我们在这里进行多次注入点,那么,为什么不上传5张图片并使用Twitter提到的payload呢?

Payload:

•1st Injection: */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值