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

http://natas0.natas.labs.overthewire.org

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

http://natas2.natas.labs.overthewire.org/files/


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 ...

http://natas3.natas.labs.overthewire.org/robots.txt

Nos aparecera el nombre de una carpeta

Disallow: /s3cr3t/

y si ingresamos a esa carpeta

http://natas3.natas.labs.overthewire.org/s3cr3t/

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

"http://natas5.natas.labs.overthewire.org/"


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