🔒 项目2 — WAF规则开发与绕过测试
项目: Web应用安全 — 项目2
摘要: 本仓库演示了在Apache上构建和测试ModSecurity WAF规则,以检测和阻止针对故意存在漏洞的PHP应用程序的SQL注入(SQLi)及相关绕过尝试。
⚠️ 重要提示: 本仓库中的所有测试和工具仅用于实验室环境。请勿对您不拥有或未获得明确测试权限的系统运行攻击或扫描。
仓库结构
|
|
内容与目标
本项目演示:
- 在Apache上安装和配置ModSecurity
- 创建针对性的ModSecurity规则(示例:检测
UNION SELECTSQLi) - 执行基线和绕过测试(混淆、URL编码、注释)
- 启用和分析ModSecurity审计日志
- 迭代和强化规则以减少误报并防御绕过
先决条件
测试环境选项(选择其一):
- Linux虚拟机(Ubuntu / Kali)— 推荐(隔离实验室)
- Kali Linux — 有用,因为它包含许多测试工具
- WSL2与Ubuntu — 可能,但网络差异可能适用
最低软件要求:
- Apache HTTP服务器(
apache2) - ModSecurity(
libapache2-mod-security2) - PHP(
php,libapache2-mod-php) - curl(用于测试请求)
- 可选:Burp Suite / OWASP ZAP,sqlmap(用于绕过测试)
快速安装(Ubuntu / Kali)
在终端中运行以下命令:
|
|
启用ModSecurity并重启Apache:
|
|
部署存在漏洞的应用程序
将测试应用程序放置在Apache Web根目录中:
|
|
打开浏览器并访问:
http://localhost/login.php(如果在本地工作)http:///login.php(如果使用具有桥接网络的虚拟机)
添加自定义WAF规则
将包含的规则文件复制到Apache配置并启用它:
|
|
示例规则(包含在modsecurity-custom.conf中):
|
|
为演示目的,此规则故意保持简单。有关改进规则,请参阅下面的“强化”部分。
基线测试
- 访问登录页面并提交良性用户名(例如,
admin)— 预期:HTTP 200,应用程序回显输入。 - 在用户名字段中提交基本SQLi有效负载:
预期:403 Forbidden(被规则阻止)并在ModSecurity日志中记录条目。
1test' UNION SELECT 1,2,3--
您也可以使用curl进行POST:
|
|
绕过测试(示例)
尝试以下变体(仅限实验室)以测试绕过:
- 混合大小写:
test' UnIoN SeLeCt 1,2,3-- - 注释混淆:
test' UNI/**/ON SELECT 1,2,3-- - URL编码:
test'%20UNION%20SELECT%201,2,3-- - 双重编码/空字节:
union%2500select
使用curl循环自动化测试(示例):
|
|
将结果记录到evasion_results.csv以供报告使用。
日志记录与分析
在/etc/modsecurity/modsecurity.conf中启用审计日志记录:
|
|
确保文件存在且权限允许root/adm写入:
|
|
在测试时跟踪日志:
|
|
审计条目包括原始请求、匹配的变量、规则ID和转换信息。
强化规则(推荐)
使用转换和链式规则来防御绕过并减少误报:
|
|
链式规则示例:
|
|
还考虑首先在仅检测模式下启用OWASP CRS(核心规则集),进行调整,然后启用阻止。
故障排除
- 无DNS /
apt失败: 检查网络,ping 8.8.8.8。如果DNS损坏,将nameserver 8.8.8.8添加到/etc/resolv.conf或配置systemd-resolved。 - ModSecurity未加载:
sudo apache2ctl -M | grep security2— 如果不存在,运行sudo a2enmod security2并重启。 - 审计日志缺失: 确认
/etc/modsecurity/modsecurity.conf包含SecAuditLog /var/log/apache2/modsec_audit.log并且日志文件存在。 - 规则未触发: 确认您的自定义配置已启用(
ls /etc/apache2/conf-enabled/),并检查sudo apache2ctl configtest和/var/log/apache2/error.log。
交付物(仓库中应包含的内容)
modsecurity-custom.conf— 带有注释和规则ID的最终/强化规则login.php— 用于测试的存在漏洞的应用程序Project_2_WAF_Report.docx— 完整报告(截图、日志、EV结果)evasion_results.csv— 测试有效负载和结果(推荐)
贡献与说明
- 本仓库是一个培训/实验室资源。如果您改进了规则或添加了自动化测试,请打开一个包含详细信息和证据(日志、测试结果)的PR。
- 在部署到生产环境之前,始终在隔离环境中测试规则。
许可证
用于教育目的的使用和分发。您可以在此处添加您偏好的许可证(例如,MIT)。
参考
- ModSecurity项目 — https://www.modsecurity.org/
- OWASP CRS — https://coreruleset.org/
- Kali Linux / Debian软件包仓库