Null Byte Attack Juice Shop y algo mas!!

Elzer Pineda
4 min readFeb 6, 2019

--

Hoy resolveremos unos de los retos que se encuentra dentro de juice shop owasp con una vulnerabilidad que explicamos en un post anterior, Null Byte.

Para empezar ya debemos tener nuestra aplicación ya reconocida y conocer la estructura de la aplicación, entre eso encontramos que tenemos una carpeta /ftp donde se almacenan ciertos archivos que a su simple vista no tienen importancia pero contienen información que nos permite avanzar con los siguientes retos.

https://juice-shop.herokuapp.com/ftp/

Tenemos todo tipo de archivo entre pdf,bak,md, gg y demás. Si intentamos descargar un tipo de archivo diferente a pdf la aplicación nos genera un error de 403 donde solo se permite archivos pdf y md para descarga.

error 403

Si configuramos nuestro proxy (burpsuite o owasp zap) y capturamos la petición y ver el comportamiento la aplicación y intentamos atacar con nullbyte.

Petición del servidor interceptada.

Con nuestro primer intento colocamos %00 sin encode y que nos permita descargar en formato pdf, veamos que sucede.

Respuesta 400 BadRequestError.

Al parecer nuestro ataque sin encode no funciono, ahora intentemos con %2500.pdf %25 es igual que % aquí les dejo una pagina donde podemos encontrar parámetros de URL encode https://www.degraeve.com/reference/urlencoding.php

bingo!!

Obtenemos una respuesta diferente con encodear la URL, permitiéndonos observar el contenido del archivo y descargarlo, de este modo podemos descargar los otros archivos con %2500 (null byte). https://juice-shop.herokuapp.com/ftp/coupons_2013.md.bak%2500.pdf

Descarga de los archivos

Una vez descargados estos archivos podemos realizar técnicas de estenografía para revisar su contenido, su metadata que puede ser muy importante.

Contenido de los archivos.

Strings busca y encuentra el contenido del archivo, en coupons.bak tenemos resultado de información cifrada, igualmente con eastere.gg. La información de coupons.bak la continuaremos en otro post. Busquemos en eastere.gg donde sabemos que tenemos un base64 y podemos realizar el decoder en burpsuite.

base64 decode

Nos da como resultado un root13, para los que no conocen root13 es un sencillo cifrado César utilizado para ocultar un texto sustituyendo cada letra por la letra que está trece posiciones por delante en el alfabeto. A se convierte en N, B se convierte en O y así hasta la M, que se convierte en Z. Luego la secuencia se invierte: N se convierte en A, O se convierte en B y así hasta la Z, que se convierte en M.

Podemos utilizar sitios online para decodificar la información como https://www.rot13.com/

Decodificando root13

Encontramos una ruta del sitio web.

Ruta del Servidor decodificada con root13

Conclusión: Null byte nos permitió acceder a información critica del servidor, imaginemos que estos tipos de archivos fueran archivos confidenciales de una empresa que sus cuentas bancarias son millones de dolares, información medica de los pacientes o del estado que pueden ser accedidos libremente desde el servidor web y descargados. Juice shop Owasp es un ambiente controlado donde podemos llevar acabo todas estas pruebas, que igualmente nos puede funcionar si nos encontramos un aplicación web con funciones similares. En este post he decidido mostrar otro forma de como utilizar nullbyte.

Happy Hacking!! Amigos Elzer Pineda

--

--