
Después de unas breves pruebas nos encontramos con el directorio /flag donde sale un simple mensaje (You really thought it would be that easy? Keep digging!).

Volviendo al [enunciado] (https://www.hackerone.com/blog/hack-your-way-to-nyc-this-december-for-h1-212) nos damos cuenta que se se hace referencia a un panel de administración para la organizacion de “acme.org”:

Con lo cual intuimos que el servidor puede presentar varios virtual hosts, por lo que se realizan varias pruebas en la cabecera hasta dar con el host correcto.
host: admin.acme.org

Al realizar la petición nos percatamos que en la respuesta se fija el valor de una cookie (admin=no). Nuestro instinto más primario nos llevar a cambiar ese valor a “yes”.

Tampoco iba a ser tan fácil y seguimos poco a poco con las pruebas. En este punto apreciamos que no acepta el método GET ya que nos da un error 405 por lo que lo cambiamos por el otro método “POST”.

Ahora obtenemos el error 406. Después de “fuzzear” durante un rato ficheros encontramos read.php que nos devuelve en la respuesta un error diferente. Hemos avanzamos hasta el error 418, junto a lo que parece ser una respuesta a una consulta de JSON.

A partir del error que ha devuelto el servidor, formamos una petición JSON con el valor que espera ”row”. Ahora nos pide el valor “domain”.

Volvemos a formar la petición JSON con el valor domain y vemos que nos faltan valores que vamos añadiendo.

Llegamos a formar la peticion 212.dominio.com que nos devuelve el siguiente directorio:

Vemos que nos devuelve un campo data vacío, y a cada petición que hacemos con un nuevo dominio nos crea un id nuevo id=0,id=1,id=2…

Si en el dominio ponemos un dominio válido vemos que nos resuelve el contenido del mismo en base64, para hacer la prueba usamos el dominio borjmz.com que apunta a 127.0.0.1:


Nos devuelve la página de inicio de Apache con lo cual imaginamos que podríamos estar ante un SSRF. Nos disponemos a escanear y encontramos un servidor nginx en el puerto 1337:


Decodificamos la cadena base64 y nos encontramos con la siguiente frase:
- Hmm, where would it be?

Parece que vamos por buen camino….
Nos da a entender que puede estar en el archivo /flag pero no podemos leer el directorio ya que tenemos el problema que la petición incluye un .com, con lo cual al realizar la petición queda de la siguiente manera 212.borjmz.com:1337/flag.com (127.0.0.1:1337/flag.com) con lo cual necesitamos realizar un bypass de la cadena “.com”.
Probamos con varios caracteres pero están prohibidos:

Se hacen varias pruebas para lograr el bypass:


Finalmente se ha conseguido hacer el bypass con las siguiente petición:
[{"domain" :
"212.borjmz.com/flag\\nFake:.com"}]{style="background: #f9f2f4"}
Nos llega la respuesta correctamente en base64 y al descifrar obtenemos la flag.

{"data":"RkxBRzogQ0YsMmRzVlwvXWZSQVlRLlRERXBgdyJNKCVtVTtwOSs5RkR7WjQ4WCpKdHR7JXZTKCRnN1xTKTpmJT1QW1lAbmthPTx0cWhuRjxhcT1LNTpCQ0BTYip7WyV6IitAeVBiL25mRm5hPGUkaHZ7cDhyMlt2TU1GNTJ5OnovRGg7ezYK"}
FLAG:
CF,2dsV\\/\]fRAYQ.TDEp\`w"M(%mU;p9+9FD{Z48X\*Jtt\{\%vS(\$g7\\S):f%=P\[Y@nka=<tqhnF<aq=K5:BC@Sb\*{\[%z"+@yPb/nfFna<e\$hv{p8r2\[vMMF52y:z/Dh;{6
Gracias por el reto!