Este es el primer post resolviendo retos de HackTheBox. Vamos a intentar resolver la mayoría de los retos retirados de la plataforma y en esta ocasión toca un reto web llamado HDC.
Es un reto de nivel sencillo, pero nos servirá para ir viendo cómo son los retos a los que nos enfrentaremos en los próximos días. En él tendremos que bypassear una página de login y finalmente, con ayuda del Intruder de ZAP, encontrar la flag.


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.

Enunciado

Creemos que cierto individuo utiliza este sitio web para asuntos turbios. ¿Puedes averiguar quién es y enviarle un correo electrónico para que lo compruebe, usando la funcionalidad del sitio web?
Nota: La bandera no es una dirección de correo electrónico.

Solución

Primeramente abrimos la página web en el navegador:

A continuación revisamos el código fuente:

[...]
<script src="jquery-3.2.1.js"></script>
<script src="myscripts.js"></script>
[...]
<form id='formaki' name='formaki' action="./main/index.php" method="post">
  <p align="center">Enter Username / Password
    <input type="text" name="name1" size="20">
  <input type="text" Name="name2" size="20">

  </p>

  <p align="center">
  <input type="hidden" value= name="name1">
  <input type="hidden" value= name="name2">

   <input type="button" value="Submit" onclick="doProcess()"/>
   
  </p>
</form>
[...]

Se incluyen el javascript de los ficheros “myscripts.js” y “jquery-3.2.1.js”. Vamos a ver el código de “myscripts.js”:

function doProcess()
{
	document.forms["formaki"].submit();
}

La función doProcess hace submit en el formulario. Vamos a buscar qué hace .submit():

The submit() method submits the form (same as clicking the Submit button).

Como veis, hace lo mismo que al clickar en el botón, busquemos si en el jQuery hay alguna función doProcess():

function doProcess() {
    var form = document.createElement("form");
    form.setAttribute("method", "post");
    form.setAttribute("action", "main/index.php");
    form.setAttribute("target", "view");
    var hiddenField = document.createElement("input");
    hiddenField.setAttribute("type", "hidden");
    hiddenField.setAttribute("name", "name1");
    hiddenField.setAttribute("value", "TXlMaXR0bGU");
    var hiddenField2 = document.createElement("input");
    hiddenField2.setAttribute("type", "hidden");
    hiddenField2.setAttribute("name", "name2");
    hiddenField2.setAttribute("value", "cDB3bmll");
    form.appendChild(hiddenField2);
    form.appendChild(hiddenField);
    form.appendChild(hiddenField2);
    document.body.appendChild(form);
    window.open('', 'view');
    form.submit();
}

En la función hay unas credenciales: TXlMaXR0bGU:cDB3bmll con las que accedemos a la plataforma.

En este portal encontramos dos tareas: “Send EMail” y “Mailbox of Special Customers”.


En el código de la segunda encontramos algo interesante:

</head><body><font size="6"><span lang="en-us">Special Customers' Mailbox</span></font><b><font size="6">&nbsp;&nbsp;&nbsp; </font></b>

<img src="./secret_area_/mails.gif" width="21" height="20" border="1"><hr><p>
</p>
<p>Up to now we have 5 special customers who will help us to achieve our goals.<br>
<br>
This list will soon be expanded with the new 'expansion program' for our corporate goals.<br>
<br>
It is planned that within the next six months we will have reached 20 dedicated Special Customers.<br>
</p>
<p><span lang="us"><a href="main.htm">���������</a></span></p>

La imagen mails.gif se encuentra en el directorio /secret_area_, veamos si hay algo más:

En mails.txt encontramos:

All good boys are here… hehehehehehe!
—————————————-
Peter Punk [email protected]
Nabuchodonosor [email protected]
Ilias Magkakos [email protected]
Nick Pipshow [email protected]
Don Quixote [email protected]
Crazy Priest [email protected]
Fishroe Salad [email protected]
TaPanta Ola [email protected]
Laertis George [email protected]
Thiseas Sparrow [email protected]
Black Dreamer [email protected]
Callme Daddy [email protected]
Aggeliki Lykolouli [email protected]
Kompinadoros Yannnnis [email protected]
Serafino Titamola [email protected]
Joe Hard [email protected]
Bond James [email protected]
Endof Text [email protected]

Ahora que tenemos la lista de emails, vamos a repasar el enunciado: “¿Puedes averiguar quién es y enviarle un correo electrónico para que lo compruebe, usando la funcionalidad del sitio web?”

Parece que tenemos que utilizar la funcionalidad de “Send EMails” con las direcciones de esta lista.
Con un script de Python obtenemos la lista de los mails y lo escribimos en un fichero para utilizarlo en el Intruder de ZAP:

import re

raw = """Peter Punk [email protected]
Nabuchodonosor [email protected]
Ilias Magkakos [email protected]
Nick Pipshow [email protected]
Don Quixote [email protected] 
Crazy Priest [email protected]
Fishroe Salad [email protected]
TaPanta Ola [email protected]
Laertis George [email protected]
Thiseas Sparrow [email protected]
Black Dreamer [email protected]
Callme Daddy [email protected]
Aggeliki Lykolouli [email protected]
Kompinadoros Yannnnis [email protected]
Serafino Titamola [email protected]
Joe Hard [email protected]
Bond James [email protected]
Endof Text [email protected]"""

with open("mails.txt", "w") as f:
    f.write('\n'.join(re.findall(r'[\w\.-]+@[\w\.-]+', raw)))

Añadimos la lista al Intruder:

Ejecutamos el ataque y ordenamos según el tamaño de la respuesta. Esto lo hacemos para detectar fácilmente si el servidor nos responde de forma distinta a algunas peticiones.
Obtenemos una respuesta distinta con “[email protected]“:

Revisemos el output de la petición:

El flag es HTB{FuckTheB3stAndPlayWithTheRest!!}

¿Me ayudas a compatirlo?