13- BBB64: Buscando Bujeros en Base64

Base 64 es un sistema de numeración posicional que usa 64 como base. Es la mayor potencia de dos que puede ser representada usando únicamente los caracteres imprimibles de ASCII. [Wikipedia]

Como tal, es un sistema de codificación de información y no de cifrado de la misma, es decir, es una forma distinta de representar la misma información, que no añade ninguna medida de seguridad extra. Es por eso, que me llamó mucho la atención cuando encontré que el diccionario de sinónimos de Word propone codificar como sinónimo de cifrado. Para ilustrar aquel rápido post desde un aeropuerto, se me ocurrió buscar algunos ejemplos que ilustraran ese hecho, algo rápido. Sin embargo, al hacer las pruebas, me encontré con la sorpresa de que se puede encontrar mucho más de lo que al principio supuse. Es por ello, que pospuse los ejemplos hasta tener realizadas más pruebas. Y estas van en este artículo

Jugando con Admin

La primera de las pruebas que hice fue buscar la codificación de admin, que en base64 es YWRtaW4= a ver que salía, y me hizo gracia encontrar cosas como estas:


Figura 1: Lista de usuarios en un sistema. Es un servidor de chats

Figura 2: Metadatos en la página de la UGT con el usuario admin como creador

Figura 3: Log de ficheros subidos por el usuario admin

Figura 4: “Extraño” valor en la cookie de una aplicación de la rfef
Por supuesto, de jugar con la palabra admin, a utilizar este truco para buscar credenciales, solo iba un paso, así que, a por ello.

Jugando con Username y Password

Tras ver la cantidad de información que aparecía codificada en Base64, decidí que era momento de buscar ficheros de log que guardasen datos de conexiones. Para ello basta con utilizar las palabras Username (VXNlcm5hbWU=) y Password (UGFzc3dvcmQ6) – ojo que Base64 es case-sensitive – en las búsquedas de ficheros de texto o lde tipo log, y esto es lo que apareció.


Figura 5: Usuario autenticado. Password en Base64

Figura 6: Usuario admin autenticado. Password en Base64

En algunos casos no es necesario ni decodificar los valores, basta con seguir leyendo el log.


Figura 7: Password decoficada

Al final, éste es el más sincero de todos los logs, ya que el que aparezca la password en los anteriores codificada en base64 y no en texto claro crea una falsa sensación de seguridad.

Jugando con localhost

Otra de las cadenas chulas para encontrar cosas curisosas es la palabra localhost: bG9jYWxob3N0. Con esta cadena aparecen cosas muy curiosas como la cadena de conexión a una base de datos configurada en local.



Figura 8: Configuración de conexión a base de datos

Otra cosa curiosa que ha aparecido por Internet ha sido esta URL en la que se comprueba la disponibilidad de un nombre para utilizar en una aplicación web. En los parámetros de la URL va la dirección del servidor, en este caso localhost, y el nombre de la base de datos.



Figura 9: Conexión a base de datos con parámetros GET en Base 64

Por supuesto, encontrar ficheros de configuración general, como este domain.xml que no tengo ni idea de que configura…



Figura 10: Ficheros de configuración en xml

Jugando con direcciones IP en concreto

Otra de las cosas curiosas que se pueden hacer consiste en buscar direcciones IP concretas puestas en formato Base64. Esto puede servir para detectar fallos de configuración, encontrar ficheros de log, o encontrar más información de una determinada dirección IP en Internet que se esté traceando.



Figura 11: GuestBook encontrado con 127.0.0.1
 



Figura 12: Log de conexiones a bases de datos descubierto con 192.168.0.1

Descargar fuentes de contenido

Muchas aplicaciones intentan ocultar la fuente de contenido para que el usuario menos avezado no sepa donde está el fichero original, y utilizan sistemas en Base64 para ocultar la ubicación de estos. Esto se puede encontrar casi con cualquier tipo de fichero multimedia.



Figura 14: MusicDumper codifica en Base64 la ubicación el fichero mp3

Si te quieres entretener, puedes descubrir la ubicación original de estos tres ejemplos, aunque tal vez en alguno de ellos tengas que jugar un poco con la codificación manualmente.

- Averiguar la ubicación de la foto de “la señorita”.
- Averiguar la ubicación de el video del gol del Diego.
- Averigura la ubicación de la canción de Rosendo Mercado.

Armas de destrucción masiva

Los ejemplos anteriores, en los que se averiguan las rutas, tienen la gracia, todos ellos, de que están cargando el contenido desde rutas accesibles vía web. Es decir, que si se le cambian las URLs se puede hacer que estas aplicaciones hagan GET a la URL que a ti te interese, con lo que se podría hacer un ataque como el que se explicaba en el artículo de “Buscadores como arma de destrucción masiva“.

Acceso local (LFI) o a contenido remoto

Otra de las curiosidades de este sistema es que las peticiones se hacen desde la dirección IP del servidor, así que será el servidor el que realice la petición desde su URL y a donde tenga acceso. En este ejemplo, de la Universidad de Camberra, se puede ver que utilizan una variable para cargar el resultado de las búsquedas.



Figura 15: Variable que carga el contenido con una ruta en Base64

El proceso de buscar se realiza en otro servidor, codificado este en Base64 y no accesible desde Internet, que se puede ver al decodificar el parámetro.



Figura 16: Decodificación de la ruta de carga de contenido

La pregunta sería… ¿y si cambiamos el protocolo, la ruta y el fichero? ¿A dónde tendrá acceso esta aplicación? ¿Qué usuario es realmente el que está realizando la petición?

Buscando rutas locales

Para encontrar algunas webs que hicieran cosas graciosas con Base64, se me ocurrió buscar algunas rutas de fichero típicas para ver que veíamos. Aquí hay algunos ejemplos.

/Home:

Con /home/, cuya codificación es L2hvbWUv, encontré esta URL, con un parámetro muy divertido.



Figura 17: Fichero devuleto con parámetro en Base64

Como os podéis imaginar, la URL esa daba una cosa muy divertida…



Figura 18: Ruta a fichero local decodificada

/etc/:

Buscar por /etc/, cuya codificación es L2V0Yy8=, aparece en la caché de Google una shell devolviendo un fichero de configuración de un sitio vulnerado, curiosa casualidad. Aunque visto lo visto con las shells y Google.



Figura 19: Shell caheada

Esos valores raros en parámetros extraños

El tema es que las posibilidades de uso de Base64 se me escapan de las manos, ya veo Base64 en cualquier sitio. El otro día, revisando una obra de teatro apareció este parámetro.



Figura 20: Parametro por Get codificado

Que tiene cosas muy sospechosas al decodificarlo… ¿alguna idea de inyección?



Figura 21: Decodificación

En resumen, visto lo visto, parece que muchos creen lo que dice Word, que codificar es lo mismo que cifrar.

Saludos Malignos!

Los comentarios están cerrados.