Bashed
Úvod a kontext
Bashed je jednoduchý stroj, ale právě proto dobře ukazuje, jak nebezpečné je veřejně vystavit vývojářský shell. Klíčový signál tu není složitá zranitelnost, ale samotná existence /dev/ a dalších artefaktů jako config.php, které prozradí, že server obsahuje pomocné nástroje určené jen pro interní práci.
Didakticky je to hlavně lekce o tom, že první foothold může být triviální. Jakmile je na webu dostupný funkční shell, přechází těžiště útoku z webové enumerace na stabilizaci přístupu a lokální analýzu oprávnění.
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 -Pn $IP | grep ^[0-9] | cut -d "/" -f 1 | tr "\n" "," | sed s/,$//);echo $ports;nmap -p $ports -A -sC -sV -v -Pn $IP
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 -p $ports -n -v -A -sC -sV -Pn --script *enum*,*vuln* $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.
./dirsearch/dirsearch.py -u http://$IP -e php -x 403
[20:12:51] 301 - 308B - /php -> http://10.10.10.68/php/
[20:14:02] 200 - 0B - /config.php
[20:14:07] 301 - 308B - /css -> http://10.10.10.68/css/
[20:14:11] 200 - 1KB - /dev/
[20:14:11] 301 - 308B - /dev -> http://10.10.10.68/dev/
[20:14:21] 301 - 310B - /fonts -> http://10.10.10.68/fonts/
[20:14:29] 301 - 311B - /images -> http://10.10.10.68/images/
[20:14:32] 200 - 8KB - /index.html
[20:14:36] 301 - 307B - /js -> http://10.10.10.68/js/
[20:15:01] 200 - 939B - /php/
[20:15:38] 301 - 312B - /uploads -> http://10.10.10.68/uploads/
[20:15:38] 200 - 14B - /uploads/
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.
cat root.txt
__CENSORED__
Shrnutí klíčových poznatků
- První skutečně důležitý nález nebyl port, ale veřejně dostupný adresář
/dev/, který už sám představuje webový shell. config.phpa podobné osamocené soubory tady nehrají roli exploitu, ale potvrzení, že server publikuje víc interních artefaktů, než by měl.- Po získání shellu už nejde o další webovou chybu; rozhodující je lokální enumerace procesů, účtů a oprávnění v hostu.
Co si odnést do praxe
- Vývojové shelly, debug endpointy a adresáře typu
/dev/nesmějí být dostupné z internetu ani „jen dočasně“. Pokud umí vykonávat příkazy, jde už o hotový foothold, ne o drobný leak. - I zdánlivě nevinné soubory jako
config.phpmohou potvrdit, že server publikuje interní strukturu a usnadňuje další orientaci útočníka. Obrana proto musí řešit i malé informační úniky. - Jakmile už shell existuje, kvalita obrany stojí na lokální hygieně hostu: oddělení účtů, minimálních právech a pravidelném auditu procesů a plánovaných úloh.