Natas level 16 – OverTheWire – Paso a Paso (Walkthrough) en Español

      Comentarios desactivados en Natas level 16 – OverTheWire – Paso a Paso (Walkthrough) en Español
5/5 - (1 voto)

Para acceder al level 16 de Natas necesitamos los siguientes datos de acceso (la contraseña ha sido obtenida en el reto natas15):

Username: natas16
Password: WaIHEacj63wnNIBROHeqi3p9t0m5nhmh
URL: http://natas16.natas.labs.overthewire.org

Una vez hayamos accedido a este nivel veremos un mensaje que nos indica Por razones de seguridad, ahora filtramos aún más en ciertos caracteres y un campo de texto para buscar palabras que contengan una cierta cadena (string) que deberemos introducir en el campo de texto.

También podemos ver el código fuente del sitio web haciendo clic en el enlace View sourcecode que se encuentra resaltado en color azul.

Si analizamos el código, observamos que se han definido una serie de caracteres que no podrán ser introducidos. También podemos observar que se realiza una búsqueda en el fichero dictionary.txt, esta búsqueda se realiza utilizando la función passthru de PHP. Por último, la URL deberá de contener la clave needle.

La forma de realizar un ataque a este código, es realizar un ataque a ciegas por inyección SQL, en inglés, Blind SQL injection, como hicimos en el ejemplo anterior.

Para que eso funcione, necesitamos encontrar una manera de responder a la pregunta ¿tiene la contraseña, almacenada en /etc/natas_webpass/natas17, la letra a? .

Una forma es el hecho de que muestra datos si existe una subcadena, de lo contrario devuelve un contenido vacío.

Para ello, el equipo de Init0 (ciberseguridad) ha desarrollado el siguiente script en PHP: https://github.com/oddworldng/natas16-php-overthewire

Si analizamos este código desarrollado, podemos diferenciar dos partes:

  1. La primera parte utiliza una lista con todos los caracteres disponibles a-zA-Z0-9 haciendo una consulta CURL GET a la URL del reto para comprobar los caracteres son parte de la contraseña y cuáles no, con esto optimizamos la búsqueda de la contraseña final.
  2. La segunda parte utiliza los caracteres filtrados en el paso anterior para realizar un ataque de fuerza bruta siguiendo la misma idea de la primera parte utilizada para filtrar.

Podemos ejecutar el script natas16.php con el comando php natas16.php y podremos ver la contraseña para acceder al siguiente nivel.

Checking chars in password ...
Characters filtered: bcdghkmnqrswAGHNPQSW035789
Using brute force to get final password ...
8
8P
8Ps
8Ps3
8Ps3H
8Ps3H0
8Ps3H0G
8Ps3H0GW
8Ps3H0GWb
8Ps3H0GWbn
8Ps3H0GWbn5
8Ps3H0GWbn5r
8Ps3H0GWbn5rd
8Ps3H0GWbn5rd9
8Ps3H0GWbn5rd9S
8Ps3H0GWbn5rd9S7
8Ps3H0GWbn5rd9S7G
8Ps3H0GWbn5rd9S7Gm
8Ps3H0GWbn5rd9S7GmA
8Ps3H0GWbn5rd9S7GmAd
8Ps3H0GWbn5rd9S7GmAdg
8Ps3H0GWbn5rd9S7GmAdgQ
8Ps3H0GWbn5rd9S7GmAdgQN
8Ps3H0GWbn5rd9S7GmAdgQNd
8Ps3H0GWbn5rd9S7GmAdgQNdk
8Ps3H0GWbn5rd9S7GmAdgQNdkh
8Ps3H0GWbn5rd9S7GmAdgQNdkhP
8Ps3H0GWbn5rd9S7GmAdgQNdkhPk
8Ps3H0GWbn5rd9S7GmAdgQNdkhPkq
8Ps3H0GWbn5rd9S7GmAdgQNdkhPkq9
8Ps3H0GWbn5rd9S7GmAdgQNdkhPkq9c
8Ps3H0GWbn5rd9S7GmAdgQNdkhPkq9cw
Password: 8Ps3H0GWbn5rd9S7GmAdgQNdkhPkq9cw

La contraseña para acceder a nivel natas 17 es 8Ps3H0GWbn5rd9S7GmAdgQNdkhPkq9cw

Este reto ha sido resuelto por Init0 (initcero) un equipo red team en Canarias (España).