PyLoader Writeup - Proving Grounds
Created October 7, 2026 • Last updated October 7, 2026 • 2 min read
PyLoader runs the pyLoad download manager on port 9666. pyLoad 0.5.0 is vulnerable to CVE-2023-0297, a pre-authentication remote code execution. The application runs as root, so the exploit lands a shell directly as root with no privilege escalation.
Reconnaissance
Nmap
Scan all TCP ports and fingerprint the services.
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 9666/tcp open http CherryPy wsgiserver (Cheroot/8.6.0)
Explain command
| -p- | Scan all 65535 TCP ports. |
| -sCV | Run the default scripts and probe service versions. |
SSH on 22 and a CherryPy web server on 9666. Browsing to http://$TARGET_IP:9666 redirects to a pyLoad login page. pyLoad is an open-source download manager written in Python.
Exploitation
pyLoad pre-auth RCE (CVE-2023-0297)
pyLoad 0.5.0 is vulnerable to CVE-2023-0297, a pre-authentication remote code execution through the js2py engine. A public exploit is on Exploit-DB.
Explain command
| -m | Mirror (copy) the exploit to the current directory. |
Start a listener, then run the exploit against the pyLoad instance with a reverse shell command.
Explain command
| -lvnp | Listen, verbose, no DNS resolution, on the given port. |
connect to [$ATTACKER_IP] from (UNKNOWN) [$TARGET_IP] 36132 id uid=0(root) gid=0(root) groups=0(root)
Explain command
| -u | Target pyLoad URL. |
| -c | Command to execute on the target. |
pyLoad runs as root, so the pre-auth RCE returns a shell directly as root. No privilege escalation is required.
Related
References
-
pyLoad pre-authentication code injection via the js2py engine leading to remote code execution.
-
pyLoad 0.5.0 pre-auth RCE exploit (CVE-2023-0297).