Soccer

Enumeration

Rustscan

mkdir rust; sudo rustscan -t 1500 -b 1500 --ulimit 65000 -a 10.129.87.222 -- -sV -sC -oA ./rust/{{ip}}
Open 10.129.87.222:22
Open 10.129.87.222:80
Open 10.129.87.222:9091

PORT     STATE SERVICE         REASON         VERSION
22/tcp   open  ssh             syn-ack ttl 63 OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http            syn-ack ttl 63 nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://soccer.htb/
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: nginx/1.18.0 (Ubuntu)
9091/tcp open  xmltec-xmlmail? syn-ack ttl 63
| fingerprint-strings: 
|   DNSStatusRequestTCP, DNSVersionBindReqTCP, Help, RPCCheck, SSLSessionReq, drda, informix: 
|     HTTP/1.1 400 Bad Request
|     Connection: close
|   GetRequest: 
|     HTTP/1.1 404 Not Found
|     Content-Security-Policy: default-src 'none'
|     X-Content-Type-Options: nosniff
|     Content-Type: text/html; charset=utf-8
|     Content-Length: 139
|     Date: Sat, 17 Dec 2022 22:14:17 GMT
|     Connection: close
|     <!DOCTYPE html>
|     <html lang="en">
|     <head>
|     <meta charset="utf-8">
|     <title>Error</title>
|     </head>
|     <body>
|     <pre>Cannot GET /</pre>
|     </body>
|     </html>
|   HTTPOptions, RTSPRequest: 
|     HTTP/1.1 404 Not Found
|     Content-Security-Policy: default-src 'none'
|     X-Content-Type-Options: nosniff
|     Content-Type: text/html; charset=utf-8
|     Content-Length: 143
|     Date: Sat, 17 Dec 2022 22:14:18 GMT
|     Connection: close
|     <!DOCTYPE html>
|     <html lang="en">
|     <head>
|     <meta charset="utf-8">
|     <title>Error</title>
|     </head>
|     <body>
|     <pre>Cannot OPTIONS /</pre>
|     </body>
|_    </html>

Feroxbuster

Webpage

Nothing interesting can be found on http://soccer.htb

Checking http://soccer.htb/tiny/ will reveal a File Manager called tinyfilemanager Github: Tinyfilemanager

Exploitation

Default Credentials

We are able to login to http://soccer.htb/tiny/ by using the default credentials which are found on the Github Page. Since this is a file manager we are able to upload files.

When visiting the folder tiny we see that php is supported :)

Webshell

Go to folder tiny -> uploads and upload a php webshell of your choice.

Reverse Shell

I used wwwolf-php-webshell as php webshell and got a reverse shell using a plain old well known payload

Enumeration

While checking the system we doesn't seem to have any interesting privileges nor can we escalate directly to any user.

Once we look into the webserver configuration we identify a new vHost called soc-player.soccer.htb

soc-player.soccer.htb

First we will register an account on that page. After signing in using our credentials we will be redirected to http://soc-player.soccer.htb/check.

Once we are on the /check page we'll inspect the development console of our browser which will tell us that a websocket is used to check our ticket

Request Headers

Since there is nothing else that caught my eye I digged around and found out that we probably could try to find a blind sql injection like described on Blind SQLI over Websocket

Blind SQLI

WS MIddleware Script

Dumping Passwords

Privilege Escalation

Enumeration

We can use the credentials obtained through the database to connect as user player via ssh.

Last but not least we'll run linpeas to check for anything that could be used for further privilege escalation. We don't see anythin interesting on the first look but notice a couple of things on a second look:

  • /usr/local/share/dstat is writeable to our user! That means we are able to create plugins

  • /usr/local/bin/doas is installed

Writeable Folders

doas installed

doas.conf

Become Root

We will create a new dstat plugin in /usr/local/share/dstat that will execute python code.

dstat_os.py

Load Custom Plugin

We are now root :)

Last updated