Sypnosis
SysAdmins is a Linux-based challenge lab that simulates a real-world breach scenario. The box exposes FTP, SSH, HTTP, and SNMP services. Initial access is gained by chaining information disclosure across multiple protocols and services: an anonymously-accessible FTP share leaks a data breach notification pointing to a public Pastebin credential dump, the corporate website leaks valid usernames via its team page, and a misconfigured SNMPv3 service ultimately exposes a plaintext password embedded in a running process's command-line arguments — granting SSH access as helena. Root is then obtained by exploiting CVE-2025-32463, a critical privilege escalation vulnerability in sudo's chroot (-R) feature.
Objectives
You have been hired to perform a penetration test against a sensitive Linux server in the client's internal network. Your task is to thoroughly enumerate the machine, identify all vulnerabilities, and (if possible) elevate your privileges to root to demonstrate impact.
Skills Required
- Basic TCP/UDP port scanning and service enumeration
- Familiarity with FTP anonymous access
- Basic web enumeration (manual browsing / source inspection)
- Understanding of SNMP versions (v1/v2c vs v3) and why community-string tools like Hydra don't apply to SNMPv3
- Comfort reading public CVE advisories and PoC repositories on GitHub
- Basic Linux privilege escalation methodology
Skills Learned
- Enumerating and exploiting anonymous FTP access
- Correlating OSINT (leaked breach data, employee names from a website) into a usable attack path
- Distinguishing SNMPv3 authentication errors (
Unknown user namevsauthorizationError) to enumerate valid usernames without full credential guessing - Brute-forcing SNMPv3
authNoPrivcredentials with a filtered password list - Using
snmpbulkwalk/hrSWRunParametersto discover plaintext credentials leaked via process arguments - Exploiting CVE-2025-32463 (
sudochroot privilege escalation) to escalate from a low-privileged user to root
Enumeration
Port Scanning (TCP)
An initial rustscan scan revealed three open TCP ports:
Output:
Notably, the FTP service allowed anonymous login (FTP code 230).
FTP Enumeration
Logging in anonymously to FTP revealed a single file:
Downloading and reading this file revealed an internal data breach notice from "Peter, Lead Sysadmin," referencing a Pastebin link containing leaked credentials:
The Pastebin link was retrieved, yielding a leaked password dump, saved locally as SysAdmins Passwords Leak.txt.
Web Enumeration
Browsing to http://sysadmins.hsm revealed a static corporate site with the following pages of interest:
| Page | Path | Notes |
|---|---|---|
| Home | /index.html | Marketing/services overview |
| Careers | /careers.html | Job posting, no direct leads |
| Contact | /contact.html | Client-side only form (validated via assets/js/script.js, no backend endpoint) |
| Team | /team.html | Discloses employee names: waserby (Senior Monitoring Engineer), helena (Infrastructure Engineer), peter (Lead Sysadmin) |
Reviewing assets/js/script.js confirmed the contact form only performs client-side validation with no exposed backend logic — a dead end for this path.
Since no username list was included in the Pastebin leak, a usernames.txt wordlist was manually built from the names disclosed on /team.html, combined with a few common role-based guesses (admin, support) and case variations, to use against the leaked passwords in later stages.

Failed SSH Brute Force (Dead End)
With a manually-built username list and the leaked password file in hand, the first instinct was to attempt SSH credential brute-forcing with Hydra:
This attempt was run to exhaustion without a single valid hit — none of the leaked credential combinations were valid for SSH directly. This ruled out SSH as the intended initial entry point and prompted a pivot to check for additional, less obvious services beyond the three TCP ports already found — specifically, a full UDP sweep.
Port Scanning (UDP) / SNMP
Output:
A follow-up targeted scan confirmed SNMPv3 specifically (not v1/v2c), meaning community-string brute-forcing (e.g. via Hydra's SNMP module) would not work here either — valid username + auth passphrase pairs are required instead.
Initial Access
Identifying a Valid SNMPv3 Username
Using the manually-built usernames.txt list, each username was tested against the SNMPv3 service without authentication to observe differing error responses:
Output:
Two distinct error types were observed:
Unknown user name→ the username does not exist on the SNMP engine.Error in packet. Reason: authorizationError (access denied to that object)→ the username is valid, but no authentication was provided.
This confirmed waserby as a valid SNMPv3 identity.
Cracking the SNMPv3 Auth Passphrase
The leaked password file (SysAdmins_Passwords_Leak.txt) contained Windows-style line endings and was converted for use:
Since SNMPv3 requires auth passphrases of at least 8 characters, the list was filtered and brute-forced against the waserby account using authNoPriv:
Result:
Valid SNMPv3 credentials: waserby / butterfly (authNoPriv, MD5)
Dumping the Full MIB Tree
With valid credentials, a full SNMP bulk walk was performed:
Grepping the dump for credential-related keywords revealed a running process with a plaintext password embedded in its command-line arguments:
This is a classic SNMP hrSWRunParameters information disclosure — a scheduled script (likely a cron job or monitoring health-check, given the sleep 60 loop) was leaking helena's plaintext SSH password via the process table, which is world-readable through SNMP's Host Resources MIB.
Gaining SSH Access
Using the disclosed credentials:
Access was granted successfully:
Privilege Escalation Enumeration
With a shell as helena, standard privesc enumeration was performed. Checking the installed sudo version proved to be the key lead:
Sudo version 1.9.16p2 is affected by CVE-2025-32463, a critical (CVSS 9.3) local privilege escalation vulnerability in sudo's --chroot (-R) option. The flaw allows a local user — even without any sudo rules granted to them — to escalate to root by abusing how sudo resolves NSS (Name Service Switch) configuration inside an attacker-controlled chroot environment.
A quick manual test confirmed the -R flag was reachable (even though no filesystem target existed yet):
This confirmed the vulnerable code path was present and reachable without needing any prior sudo privileges.
Proof-of-Concept Github Reference
The public PoC repository for CVE-2025-32463 was located and reviewed:
- Repository:
pr0v3rbs/CVE-2025-32463_chwoot - Title: CVE-2025-32463 – sudo chroot ("chwoot") PoC
- Reported by: Rich Mirch (@0xm1rch) @ Stratascale Cyber Research Unit (CRU)
- NVD Reference: CVE-2025-32463 — CVSS 9.3 (Critical)
The core exploit script, sudo-chwoot.sh, works as follows:
- Creates a temporary staging directory (
mktemp -d). - Compiles a small malicious shared library (
woot1337.c) with aconstructorfunction that callssetreuid(0,0)/setregid(0,0)and thenexecls a shell — meaning the code runs as root the moment the library is loaded. - Fakes an
/etc/nsswitch.confinside the staging directory pointing thepasswdNSS lookup at the malicious shared object (libnss_/woot1337.so.2). - Copies the real
/etc/groupinto the staged directory to keep group resolution working. - Invokes
sudo -R <staged_dir> woot, tricking sudo into chrooting into the attacker-controlled directory and loading the malicious NSS library while still running its own privileged pre-exec logic — resulting in the constructor executing as root.
Exploit Script
Execution
The exploit script was created on the target and made executable:
The woot! output combined with the prompt changing to root@sysadmins:/# confirmed successful privilege escalation to root.
Getting Root Flag
Conclusion
The SysAdmins box demonstrates a realistic, multi-stage attack chain built almost entirely from information disclosure rather than any single flashy exploit:
- Anonymous FTP leaked an internal breach notice pointing to a public credential dump.
- Manual OSINT on the company website's Team page supplied the usernames the leak itself didn't include.
- An initial SSH brute-force attempt failed, correctly ruling out the "obvious" path and forcing a pivot to a full UDP scan, which revealed SNMPv3.
- SNMPv3's distinct error responses allowed username enumeration without needing valid credentials first, and a filtered password brute-force cracked the
waserbyaccount. - SNMP's Host Resources MIB (
hrSWRunParameters) leaked a plaintext SSH password forhelenaembedded in a scheduled script's command line — a textbook example of why credentials should never be passed via CLI arguments. - Finally, an outdated sudo 1.9.16p2 build was vulnerable to CVE-2025-32463, allowing trivial escalation to root via the
chwoottechnique with no sudo rules required.
Key takeaways for defenders:
- Disable anonymous FTP access, especially on hosts storing internal communications.
- Rotate credentials immediately after any breach — leaked passwords should never remain valid on internal services.
- Avoid publishing employee names/roles on public-facing pages where they can be trivially harvested for username enumeration.
- Never pass secrets via command-line arguments (
sshpass -p); use SSH keys, environment files with restricted permissions, or a secrets manager instead — process arguments are visible system-wide, including through SNMP. - Keep
sudopatched. CVE-2025-32463 is trivially exploitable and grants full root with no pre-existing privileges.