tom@home.htb:~$

Blog o HTB

30 December 2020

Postman

Úvod a kontext

Na Postman je nejzajímavější, jak se propojí Redis, Apache a SSH.

Bez pochopení této návaznosti by nedával smysl ani stabilní uživatelský přístup opřený o id_rsa.bak a id_rsa, 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.

nmap -p 1-65535 -T4 -A -sC -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 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 46:83:4f:f1:38:61:c0:1c:74:cb:b5:d1:4a:68:4d:77 (RSA)
|   256 2d:8d:27:d2:df:15:1a:31:53:05:fb:ff:f0:62:26:89 (ECDSA)
|_  256 ca:7c:82:aa:5a:d3:72:ca:8b:8a:38:3a:80:41:a0:45 (ED25519)
80/tcp    open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-favicon: Unknown favicon MD5: __CENSORED__
| http-methods:
|_  Supported Methods: OPTIONS HEAD GET POST
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: The Cyber Geek's Personal Website
6379/tcp  open  redis   Redis key-value store 4.0.9
10000/tcp open  http    MiniServ 1.910 (Webmin httpd)
|_http-favicon: Unknown favicon MD5: __CENSORED__
| http-methods:
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-title: Site doesn't have a title (text/html; Charset=iso-8859-1).
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Vyhledání otevřených portů (2)

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.

nmap -sU -T4 -v $IP

Enumerace webu

Ve webové vrstvě hledám neveřejné cesty, vývojové artefakty a chybně vystavené soubory, protože právě ty často prozradí technologii aplikace, interní workflow nebo přímo přístupové údaje.

dirb http://$IP
	---- Scanning URL: http://10.10.10.160/ ----
	==> DIRECTORY: http://10.10.10.160/css/
	==> DIRECTORY: http://10.10.10.160/fonts/
	==> DIRECTORY: http://10.10.10.160/images/
	+ http://10.10.10.160/index.html (CODE:200|SIZE:3844)
	==> DIRECTORY: http://10.10.10.160/js/
	+ http://10.10.10.160/server-status (CODE:403|SIZE:300)
	==> DIRECTORY: http://10.10.10.160/upload/

	---- Entering directory: http://10.10.10.160/css/ ----
	(!) WARNING: Directory IS LISTABLE. No need to scan it.
		(Use mode '-w' if you want to scan it anyway)

	---- Entering directory: http://10.10.10.160/fonts/ ----
	(!) WARNING: Directory IS LISTABLE. No need to scan it.
		(Use mode '-w' if you want to scan it anyway)

	---- Entering directory: http://10.10.10.160/images/ ----
	(!) WARNING: Directory IS LISTABLE. No need to scan it.
		(Use mode '-w' if you want to scan it anyway)

	---- Entering directory: http://10.10.10.160/js/ ----
	(!) WARNING: Directory IS LISTABLE. No need to scan it.
		(Use mode '-w' if you want to scan it anyway)

	---- Entering directory: http://10.10.10.160/upload/ ----
	(!) WARNING: Directory IS LISTABLE. No need to scan it.
		(Use mode '-w' if you want to scan it anyway)

Analýza zjištění

Lámání hesel nebo hashů

Hash nebo zašifrovaný artefakt má smysl lámat jen tehdy, pokud může otevřít další službu, účet nebo vrstvu prostředí; právě to zde ověřuji.

ssh2john /opt/id_rsa.bak => /usr/sbin/john Postman-id_rsa.john --wordlist=/usr/share/wordlists/rockyou.txt
	computer2008

su Matt

Identifikace a hledání exploitu

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

whatweb -v http://$IP
	X-UA-Compatible[IE=edge], JQuery, Apache[2.4.29], Script, HTTPServer[Ubuntu Linux][Apache/2.4.29 (Ubuntu)], HTML5

Identifikace a hledání exploitu (2)

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

whatweb -v https://postman:10000
	Cookies[redirect,testing], Script, X-Frame-Options[SAMEORIGIN], HTTPServer[MiniServ/1.910], PasswordField[pass], HTML5, UncommonHeaders[auth-type,content-security-policy]

msf5 exploit(linux/http/webmin_packageup_rce)
	change fce peer rhost -> vhost

	__CENSORED__

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.

Následující úsek zachycuje přechod k uživatelskému přístupu a jeho ověření přes user.txt.

su Matt
	cat usert.txt
	517ad0ec2458ca97af8d93aac08a2f3c

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.

msf5 exploit(linux/http/webmin_packageup_rce)
	change fce peer rhost -> vhost
	a257741c5bed8be7778c6ed95686ddce

Shrnutí klíčových poznatků

Co si odnést do praxe

tags: linux - rce - ssh - sudo - php - exploit