OffSec PG - BBS Cute, Born2Root, Cybersploit1, Deception
BBS Cute
Enumeration
Machine IP → 192.168.192.128
Network Scan
Nmap scan → nmap -A -Pn -p- -T4 -o nmap.txt 192.168.192.128
OS Detection → OS: Linux; CPE: cpe:/o:linux:linux_kernel
| Port | Service | Other details (if any) |
|---|---|---|
| 22 | SSH | OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) |
| 80 | HTTP | Apache httpd 2.4.38 ((Debian)) |
| 88 | KERBEROS-SEC | nginx 1.14.2 |
| 110 | POP3 | Courier pop3d |
| 995 | POP3S | Courier pop3d |
Web Scan
GoBuster scan → gobuster dir -u http://192.168.192.128 -f -w /home/tanq/installations/SecLists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt -x html,php,txt
Directories/files listed →
- index.php
- index.html
- search.php
- rss.php
- icons/ (403)
- docs/
- print.php
- uploads/
- skins/
- core/
- manual/
- popup.php
- captcha.php
- example.php
- libs/
- snippet.php
- show_news.php
- cdata/
- server-status
The webserver is also running Cute News Management System powered by CuteNews 2.1.2.
Exploitation
Using searchsploit to look at existing vulnerabilities, there are 4 results for the version of CuteNews being run on the system. looking at the RCE expoloit, the python code has easy to understand steps.
Basically, the vulnerability is the ability to upload a reverse shell in place of the avatar for a given user and then navigating to it. The exploit requires various steps. The first is to register a user. This was done at the /index.php?register page. This required a captcha value, which did not load inline on the page. Without eefort, the captcha.php file found in directory busting gives the captcha code directly. Therefore, a user was registered.
Next, the avatar for the user must be updated. This was done by navigating to /index.php?mod=main&opt=personal page. The php reverse shell from pentest monkey is used as the file for upload here. However, this file is rejected. This implies that the server does check for file names or file headers. By hit and trial, the headers are being checked and not the extensions.
Therefore, like the exploit-db version of the RCE, the php code must be prepended with the GIF8;\n header to trick the server to think it is an image file. Also, the Content-Type header is not checked for file type. The reverse shell uploads successfully and navigating to it at /uploads/avatar_<username>_php_rev.php executes the php code and gives the reverse shell. The user flag is also obtained via the www-data permissions.
Privilege Escalation
Enumerating sudo -l and setuid files, the interesting option is that of hping3. Even if the sudo -l says only --icmp mode is allowed, since it is a setuid binary, the interface of hping3 can be sirectly exposed. The direct invocation of hping3 allows for a application shell to execute. This does support usual bash commands.
whoami shows the permissions of root. Therefore, using the hping3 shell, the root flag can be obtained as well.
Born2Root
Enumeration
Machine IP → 192.168.225.49
Network Scan
Nmap scan → nmap -A -Pn -p- -T4 -o nmap.txt 192.168.225.49
OS Detection → os_info
| Port | Service | Other details (if any) |
|---|---|---|
| 22 | SSH | OpenSSH 6.7p1 Debian 5+deb8u3 (protocol 2.0) |
| 80 | HTTP | Apache httpd 2.4.10 ((Debian)) |
| 111 | RPCBIND | rpcbind 2-4 (RPC #100000) |
| 44532 | - | - |
Web Scan
GoBuster scan → gobuster dir -u http://192.168.225.49 -f -w /home/tanq/installations/SecLists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt -x html,php,txt
Robots txt file has two directories →
- wordpress-blog/
- files/
Directories/files listed →
- index.html
- robots.txt
- icons/
- files/
- manual/
Exploitation
The /icons/ directory has a .txt file which seems out of place amongst all the other image files. Upon inspection, it contained an RSA private key. Used this to login to the ssh server running on the machine. For ther user, the most obvious one is martin given the clear mentions throughout the website. Upon loggin in, the shell asks for a secret password. Entering something random just drops into the shell and gives the user flag.
The program that asked for the secret password was located at the end of the .bashrc in martin’s home directory. This was /var/tmp/login.py. Upon close inspection, the script has an error to always allow access into the shell. The script is as follows →
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/python
import os
print("")
print("READY TO ACCESS THE SECRET LAB ? ")
print("")
password = raw_input("secret password : ")
if (password) == "secretsec" or "secretlab" : ## --> Always true
print("WELCOME ! ")
else:
print("GET OUT ! ")
os.system("pkill -u 'martin'")
Privilege Escalation
Looking at the /etc/passwd file, the users of interest are root, martin, hadi and jimmy.
User 1
Looking at the crontab, there is a job by jimmy that runs every 5 minutes as python /tmp/sekurity.py. This file does not exist, therefore, can be created and subsequently executed. This can be used to receive a shell as jimmy over netcat. The home directory consists of a networker binary, which doesn’t seem to do anything concrete.
User 2
Cracking the password for hadi was taking too long, therefore a hack was used to grep out all passwords related to “hadi” from the rockyou.txt list. This sublist was also set on the cracking task in parallel, which found the password surprisingly quick, resulting in credentials hadi:hadi123.
Root
As the hadi user, running su root directly gives the root shell and thus the root flag.
Cybersploit1
Enumeration
Machine IP → 192.168.124.92
Network Scan
Nmap scan → nmap -A -Pn -p- -T4 -o nmap.txt 192.168.124.92
OS Detection → os_info
| Port | Service | Other details (if any) |
|---|---|---|
| 22 | SSH | OpenSSH 5.9p1 Debian 5ubuntu1.10 (Ubuntu Linux; protocol 2.0) |
| 80 | HTTP | Apache httpd 2.2.22 ((Ubuntu)) |
Web Scan
GoBuster scan → gobuster dir -u http://192.168.124.92 -w /home/tanq/installations/SecLists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt -x html,php
Directories/files listed →
- index/
- index.html
- robots/
- hacker/
The hacker/ page consists of a base64 string which decodes to cybersploit{youtube.com/c/cybersploit}.
Exploitation
The source of the home page consists of <!-------------username:itsskv--------------------->. Therefore, this can be used for a password brute force on the ssh server. This did not reveal a password. Testing the previous base64 string as the password works and grants access to the user itsskv.
This gives the first flag.
Privilege Escalation
Enumerating the setuid binaries gives no info. Looking at the kernel version and os version using uname -a, it seems the kernel is indeed an outdated one → 3.13.0. Using searchsploit to look at exploits for this version using searchsploit 3.13.0, there is an overlay.fs exploit for local privilege escalation.
Compiling this binary for the 32 bit version and transferring to the machine via wget, enables getting root user shell after running it. This gives the root flag.
Deception
Enumeration
Machine IP → 192.168.225.34
Network Scan
Nmap scan → nmap -A -Pn -p- -T4 -o nmap.txt 192.168.225.34
OS Detection → OS: Linux; CPE: cpe:/o:linux:linux_kernel
| Port | Service | Other details (if any) |
|---|---|---|
| 22 | SSH | OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) |
| 80 | HTTP | Apache httpd 2.4.29 ((Ubuntu)) |
Web Scan
GoBuster scan → gobuster dir -u http://192.168.225.34 -f -w /home/tanq/installations/SecLists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt -x html,php,txt
Directories/files listed →
- index.html
- icons/ (403)
- wordpress/
- javascript/ (403)
- phpmyadmin/
Scanning the /wordpress/ directory again gives the following →
- index.php (301)
- wp-content/
- wp-login.php
- license.txt
- wp-includes/
- readme.html
- robots.txt
- robots.html
- wp-trackback.php
- wp-admin/ (302)
Running WPScan on the target shows the following result →
- XMLRPC enabled at
/wordpress/xmlrpc.php - Directory listing at
/wordpress/wp-content/uploads/ - WP-Cron enabled at
/wordpress/wp-cron.php - Wordpress version 5.3.2
- Enumerated users →
yashandhaclabs
Exploitation
Looking at the page /wordpress/robots.html, it has a click interface which shows a playful alert. Looking at the code, a new webpage /wordpress/admindelete.html was discovered. This page says LOL,A Noob is looking for a hint. Based on this, searching for /wordpress/hint.html was discovered, which says Please collect all the API tokens availabe on the home page. Therefore, the homepage was scoured for API tokens. The following were found →
1
2
3
4
API old0 : 5F4DCC3B5AA
API old1 : 765D61D8
API old2 : 327DEB
API new : 882CF99
When concatenated, this gives 5F4DCC3B5AA765D61D8327DEB882CF99. This is not any kind of hash, therefore, trying this out in credentials yash:5F4DCC3B5AA765D61D8327DEB882CF99 works. This gives the shell as user yash and the local flag.
Privilege Escalation
User
The uuser yash is not allowed to run sudo, therefore, looked at the setuid binaries. The interesting ones were /usr/bin/arping and /usr/bin/traceroute6.iputils. Looking at the files in the home directory, there is a file .systemlogs which contains a bunch of text. This does have the username haclabs within "". Grepping out " to accentuate them shows the following values →
1
2
3
haclabs
A=123456789
+A[::-1]
The following values make sense from the above → 987654321, 123456789987654321 and haclabs987654321. Trying these out for the user haclabs, the last one works and grants the shell.
Root
haclabs can execute sudo for all commands without a password. Using this to spawn a shell grants the shell as root and thus, the root flag.
