OverTheWire (Natas)
Natas es un CTF centrado mas en seguridad web del lado del servidor. Hasta la fecha son 34 niveles, tratare de llegar hasta el final y subire en el camino las soluciones.
Herramientas que use para esta primera parte
- Chromium con algunas extensiones(pueden usar chrome tambien si quieren)
- Firefox
Nivel 0
Nivel inicial
Nos dan como dato :
Username: natas0
Password: natas0
y la url del reto
A primera vista no hay nada sugestivo, entonces lo que se hace es revisar el codigo con el inspector de chromium(click derecho -> Inspect), y aparecera el codigo del html
Observandolo con detenimiento se aprecia en forma de comentario la flag
<!--The password for natas1 is gtVrDuiDfck831PqWsLEZy5gyDz1clto -->"
Nivel 1
Username: natas1
Password : gtVrDuiDfck831PqWsLEZy5gyDz1clto
En este nivel se nos dice que el click derecho ha sido bloqueado, y si lo intentamos nos sale un alert diciendonos que esta bloqueado.
Dado que tenemos que inspeccionar el codigo al no funcionar el click derecho , podemos usar los atajos directo(ctrl+shift+i,o aprentando F12)
Al inspeccionar el codigo se visualiza la flag
<!--The password for natas2 is ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi -->
Nivel 2
Username: natas2
Passwor: ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi
Este nivel nos dice que no hay nada en la pagina
Nos ponemos a inspeccionar el codigo y nos topamos con la direccion de una imagen, la cual nos revela informacion de su directorio.
<img src="files/pixel.png">
Entramos a la carpeta files mediante la url
Vemos que se encuentra el la imagen pixel.png y tambien el users.txt, y si lo revisaremos encontraremos
natas3:sJIJNW6ucpu6HPZ1ZAchaDtwd7oGrD14
Nivel 3
Username: natas3
Password:sJIJNW6ucpu6HPZ1ZAchaDtwd7oGrD14
Inspeccioanndo el codigo veremos un curioso mensaje que nos dice
Not even Google will find it this time
Y cuando hablamos de las busquedas de google en una pagina estamos hablando del archivo robots.txt
robots.txt o tambien "robots exclusion protocol" es usado por pagina para decir a las web crawlers o robots que partes no deben ser procesadas o escaneadas.
Y si ingresamos a ese txt ...
Nos aparecera el nombre de una carpeta
Disallow: /s3cr3t/
y si ingresamos a esa carpeta
nos aparecera como en el natas3 un users.txt el cual contiene nuestra flag
natas4:Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ
Nivel 4
Username: natas4
Password : Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ
Este reto nos dice que no tenemos acceso y que solo esta permitido para los usuarios que vengan de
En ese sentido, estariamos hablando de la cabecera Referer, mas informacion , la cual le sirve a una pagina para saber de donde venimos a la hora de ingresar a la misma, y en este nivel es justo lo que se necesita.
Usaremos una extension que se llama ModHeader
Agregamos el header Referer y asignamos su valor
Le damos un refresh a la pagina y nos dara efectivamente la flag
iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq
Nivel 5
Username: natas5
Password: iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq
En este nivel nos dice que el acceso esta desactivado, que no estamos logeados, esta ultima palabra nos da la idea de cookies.
Y si revisamos las cookies encontraremos una en particular llamada loggedIn
Para manipular esta cookie se puede usar la extension EditThisCookie
Aparece con valor 0(false) la cookie, entonces se cambia a 1 , hacemos click en el ticket verde para que se guarde, le damos un refresh a la pagina y listo
aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1
Nivel 6
Username: natas6
Password: aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1
Este nivel nos da un campo de input, al cual se introducir la clave que nos dara la flag.
Hacemos click en View sourcode, dentro nos aparecera el codigo.
Se puede apreciar que el codigo da informacion sobre un el archivo includes/secret.inc.
Al ingresar mediante la url aparecera el siguiente fragmento
<? $secret = "FOEIUWGHFEEUHOFUOIU"; ?>
Se toma el valor de $secret y lo ingresamos en el campo de input inicial y aparece la flag
7z3hEENjQtflzgnT29q7wAvMNfZdh0i9
Nivel 7
Username: natas7
Password : 7z3hEENjQtflzgnT29q7wAvMNfZdh0i9
En este nivel, ya empieza a requerir mas conocimientos.
En la pagina sola hay dos links hacia Home y About, no se ve nada sospechoso a simple vista, asi que inspeccionando el codigo aparece una pista
<!-- hint: password for webuser natas8 is in /etc/natas_webpass/natas8 -->
El archivo /etc/natas_webpass/natas8 es ahora el objetivo, la carpeta etc es la que nos sugiere que se podria aplicar un LFI.
http://natas7.natas.labs.overthewire.org/index.php?page=/etc/natas_webpass/natas8
DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe
Nivel 8
Username: natas8
Password: DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe
Similar al nivel 7, nos da una opcion para ver el codigo fuente.
Aparece una funcion que codifica nuestro input y lo compara con el encodedSecret
El proceso actual es el siguiente :
binario a hex -> reversa de string -> base64 codificado
Pero para obtener la clave a partir de encodedSecret se debe hacer un proceso inverso
base64 -> reversa de string -> hex a binario
Abrimos la terminal para hacer correr el siguiente codigo php
php -r '$clave=base64_decode(strrev(hex2bin("3d3d516343746d4d6d6c315669563362")));echo $clave;'
Esto devuelve:
oubWYf2kBq
Volviendo al campo de entrada e introduciendo el valor nos dara la flag
W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl
Nivel 9
Username: natas9
Password : W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl
De igual manera similar a los niveles previos, la pagina contiene un campo de entrada para buscar palabras que contengan el texto que introduzcamos.
Hacemos click en la opcion de ver el codigo fuente
La pieza fundamental del codigo es
passthru("grep -i $key dictionary.txt");
Ya que passthru nos permite ejecutar comandos en nuestro php, podemos usar esto para acceder a archivos del servidor.
Recordar que en la pagina de inicio de bandit
All passwords are also stored in /etc/natas_webpass/.
De forma que a la hora de ingresar un texto en el campo de entrada podemos manipular esta linea
"grep -i $key dictionary.txt"
para acceder al archivo /etc/natas_webpass/natas10
Ingresamos el siguiente texto
; cat /etc/natas_webpass/natas10
Lo cual produce
nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu
Eso seria todo por esta primera parte.
La sociedad perdona a veces al criminal, pero no perdona nunca al soñador.(Wilde)
-Luna
Comentarios: