Python Firewall for Spring4Shell (CVE-2022-22965) Mitigation
1. 概述
本项目是一个简单但有效的防火墙,作为概念验证使用Python实现。它被设计为一个HTTP服务器,用于检查传入的POST请求,检测并阻止与Spring4Shell远程代码执行漏洞相关的特定payload模式。
2. 工作原理
该防火墙利用Python内置的http.server模块。核心逻辑位于ServerHandler类的do_POST方法中。
- 服务器拦截所有传入的
POST请求 - 读取整个请求体
- 搜索恶意特征字符串:
class.module.classLoader。该字符串是Spring4Shell漏洞利用的基本组成部分,攻击者很难进行混淆 - 如果发现该模式,服务器立即通过发送
403 ForbiddenHTTP响应来阻止请求 - 如果未发现该模式,请求被视为合法请求,并通过
200 OK响应正常处理
3. 为何选择此方法?
虽然其他缓解策略可能关注头部或特定URL路径,但选择此方法是因为其鲁棒性:
- 弹性强:不依赖于脆弱的指标,如文件名或自定义头部名称,这些可以被攻击者轻松更改
- 效果好:针对漏洞利用的核心机制,使其成为针对此特定漏洞的高度可靠的检测方法
4. 使用方法
要运行防火墙,请使用主脚本firewall_server.py:
|
|
服务器将在localhost:8000上启动。
然后可以使用提供的Test_Requester.py脚本来模拟恶意请求并验证它们是否被阻止。
5. 免责声明
这是一个概念验证,仅用于教育和演示目的。它不是生产就绪的防火墙解决方案。