Explotación vulnerabilidades Web
Last updated
Last updated
En ocasiones, es necesario editar el archivo /etc/hosts
para asociar un dominio con la dirección IP de una máquina víctima (o servidor específico). Este archivo actúa como un mapa local de nombres de dominio a direcciones IP, permitiendo que las consultas de dominio se resuelvan localmente sin depender de DNS externos.
Nota: también hay que añadir lo que encontremos en el /etc/hosts
Tenemos un dominio y el puerto 53 se puede realizar este ataque
Nota: también hay que añadir lo que encontremos en el /etc/hosts
Nota: también hay que añadir lo que encontremos en el /etc/hosts
Tenemos que ver siempre donde se subió por lo que realizamos el comando:
Nos ponemos en escucha.
Nos mandamos la Reverse Shell. Por lo que nos ponemos en escucha otra vez.
Al hacer la Reverse Shell tenemos que hacer los siguientes comandos para trabajar más cómodamente en la máquina víctima.
Una Webshell es un archivo que se sube a un servidor para la ejecución remota de comandos.
Por lo que se podría hacer ahora.
Para hacer URL una Reverse Shell en Burpuiste entrar en la opción de Decoder.
Tras esto dar a la opción Encode as URL.
Cuando no nos dejan subir un archivo en .php
cambiamos la extensión a .phtml
ya que a efectos prácticos es lo mismo.
Realizamos fuzzing para ver donde se subió el archivo.
Vamos a ajustes y configuramos el proxy de esta manera.
Interceptamos la conexión al dar al archivo de la Reverse Shell. Cambiamos la extensión del archivo y le damos a Forward. Apagamos la intercepción.
El uso del Repeater en Burp Suite es fundamental para realizar pruebas de seguridad en aplicaciones web. Primero interceptas una petición HTTP usando el Intercept y, una vez capturada, puedes enviarla al Repeater. Esto permite modificar parámetros, cabeceras y cualquier parte de la petición, y después reenviarla al servidor para ver su respuesta. Al enviar la petición al Repeater, se abre una ventana donde se puede ver la solicitud completa en formato HTTP. Desde ahí es posible manipular aspectos como la URL, los parámetros, las cabeceras y el cuerpo de la solicitud, lo que facilita la simulación de ataques como inyecciones SQL, XSS o manipulación de parámetros con el objetivo de observar cómo responde el servidor ante cada cambio.
Después de realizar la modificación deseada, solo necesitas hacer clic en "Send" para enviar la petición modificada al servidor. La respuesta se muestra en el panel de la derecha, y allí puedes analizar si la modificación que realizaste produce algún error del servidor, comportamiento anómalo o filtración de información que indique una posible vulnerabilidad. Este proceso se puede repetir cuantas veces sea necesario sin tener que interceptar de nuevo la solicitud original. Además, el Repeater permite crear múltiples pestañas para probar diferentes variaciones de la misma solicitud y comparar los resultados, lo cual es útil para evaluar el impacto de distintas modificaciones en el comportamiento de la aplicación web.
El Intruder de Burp Suite es una herramienta potente para realizar ataques de diccionario o de fuerza bruta en diferentes partes de las peticiones HTTP, como parámetros, cabeceras o valores específicos de los formularios. Esto es útil en pruebas de fuzzing para encontrar valores vulnerables o detectar fallos de seguridad en la validación de datos de entrada.
Aquí te explico cómo usar el Intruder en Burp Suite para hacer fuzzing con un diccionario:
Primero, intercepta una petición HTTP usando el Intercept de Burp Suite. Una vez que tengas la petición que deseas atacar, envíala al Intruder seleccionando la opción Send to Intruder. Esto te llevará a la ventana de configuración del Intruder, donde podrás configurar los detalles del ataque.
Dentro del panel de Intruder, verás cuatro pestañas importantes:
Positions: Aquí defines las partes de la petición que quieres atacar o modificar. Burp Suite marcará automáticamente ciertos puntos en la solicitud con caracteres §
, pero puedes ajustar estos puntos seleccionando el texto específico que deseas modificar y haciendo clic en Add § para añadir tu propio delimitador. Puedes elegir los parámetros o campos específicos que deseas modificar con el diccionario.
Payloads: En esta pestaña se define el tipo de datos que se enviarán a cada posición marcada. Selecciona el tipo de ataque, que puede ser uno simple (donde se prueba una lista de entradas en una posición) o múltiple (para probar varias combinaciones). Luego, elige un diccionario o crea una lista personalizada de valores que deseas enviar al servidor. Por ejemplo, puedes cargar una lista de nombres de usuario o contraseñas para probar en un formulario de inicio de sesión.
Attack Type: Burp Suite ofrece varios tipos de ataque, siendo los más comunes Sniper y Cluster Bomb.
Sniper realiza ataques sobre una sola posición por vez y es útil si quieres probar varios valores en un solo punto de la petición.
Cluster Bomb es ideal para probar varias posiciones simultáneamente, generando combinaciones de valores para cada punto marcado en la solicitud.
Start Attack: Cuando hayas configurado las posiciones y el diccionario, haz clic en Start Attack para comenzar el fuzzing. Intruder enviará todas las solicitudes, aplicando cada valor del diccionario a las posiciones que seleccionaste, y registrará todas las respuestas. En la interfaz de ataque verás una tabla con los resultados, donde puedes analizar las respuestas de cada solicitud para identificar patrones o respuestas diferentes, como códigos de error, mensajes de acceso, o tiempos de respuesta, que indiquen posibles vulnerabilidades.
Conocer las bases de datos.
Conocer las tablas de la base de datos objetivo.
Conocer las columnas de la tabla de la bases de datos objetivo.
Conocer la información que hay en esas columnas.
En esta página encontramos las credenciales más comunes de Tomcat y cómo vulnerar el servidor.
Dependiendo de la versión del servidor puede funcionar uno u otro.
Nos ponemos en escucha y vemos cual funciona.
La explotación de la vulnerabilidad Local File Inclusion (LFI) es una técnica que aprovecha fallos en aplicaciones web para acceder a archivos locales del servidor. En términos sencillos, LFI permite a un atacante manipular rutas de archivos para incluir archivos que están almacenados en el servidor, logrando así exponer datos sensibles, código fuente o archivos de configuración que, en condiciones normales, deberían estar protegidos.
LFI ocurre cuando una aplicación web permite la inclusión de archivos locales sin una validación adecuada de las entradas. Esto sucede comúnmente en aplicaciones que aceptan rutas de archivos como parámetros en una URL. Por ejemplo, si una aplicación tiene un parámetro de URL como:
Aquí, el valor de page
se utiliza para cargar un archivo en el servidor (home.php
). Si no se valida el valor de page
, un atacante puede modificarlo para intentar cargar otros archivos del sistema. Por ejemplo:
El archivo /etc/passwd
en sistemas Unix/Linux contiene información sobre los usuarios del sistema y, aunque no suele incluir contraseñas en texto claro, su acceso puede dar información importante al atacante.
La explotación de LFI se realiza a menudo mediante el uso de ruta transversal o path traversal (../../
). Esto permite que el atacante navegue fuera del directorio de la aplicación y acceda a otras áreas del sistema de archivos. Ejemplo:
id_rsa
Identificar la Vulnerabilidad LFI:
Usualmente, un parámetro en la URL, como page
, file
, doc
, o similar, se utiliza para incluir archivos en el servidor. Por ejemplo:
Si el parámetro no valida correctamente la entrada, puede ser posible manipularlo para navegar a directorios fuera del alcance de la aplicación mediante ruta transversal.
Pruebas de Ruta Transversal para Acceso a id_rsa
:
La clave privada SSH de un usuario en Linux suele estar en el directorio ~/.ssh/id_rsa
.
Puedes probar la siguiente solicitud LFI para intentar acceder a este archivo:
Nota: El número de
../
(directorios hacia arriba) depende de la ubicación relativa del archivo PHP en el sistema. Puedes necesitar probar diferentes combinaciones.
Evaluar la Respuesta:
Si el servidor no tiene protecciones adecuadas y la vulnerabilidad está presente, deberías ver el contenido del archivo id_rsa
en la respuesta. Este contenido es la clave privada en texto, que típicamente empieza con -----BEGIN RSA PRIVATE KEY-----
y termina con -----END RSA PRIVATE KEY-----
.
Copia cuidadosamente todo el contenido si aparece en la respuesta.
Utilizar la Clave Privada (id_rsa):
Si el atacante consigue el archivo id_rsa
, puede intentar utilizarlo para acceder al servidor vía SSH.
Para hacerlo, el archivo debe tener permisos restringidos. Guárdalo en tu máquina local y cambia los permisos a 600
:
Luego, intenta conectarte al servidor con el comando SSH:
Como nos pide una contraseña del archivo id_rsa
hay que usar por tanto John.
Wireshark es una herramienta de análisis de red que permite interceptar y analizar el tráfico de red en tiempo real. Como sniffer, Wireshark captura paquetes de datos que se transmiten a través de la red, y es especialmente útil para auditar y descubrir vulnerabilidades en los protocolos de comunicación. Cuando se utilizan protocolos no seguros o vulnerables, como HTTP, FTP, Telnet o POP3, es posible interceptar credenciales y otros datos sensibles, ya que estos protocolos transmiten información en texto plano.
Configuración de Wireshark y Captura de Tráfico:
Inicia Wireshark y selecciona la interfaz de red en la que deseas capturar tráfico (por ejemplo, Wi-Fi o Ethernet).
Haz clic en Start para comenzar a capturar el tráfico.
Asegúrate de estar conectado en la misma red que la máquina objetivo, especialmente en redes locales donde los protocolos no seguros son más comunes.
Filtros de Captura para Protocolos Vulnerables:
Puedes aplicar filtros en Wireshark para reducir la captura y enfocarte en protocolos específicos.
Para interceptar credenciales, usa filtros como:
HTTP: http
FTP: ftp
Telnet: telnet
POP3: pop
IMAP: imap
Al aplicar estos filtros, Wireshark solo mostrará paquetes relacionados con el protocolo seleccionado, facilitando la búsqueda de datos específicos.
Análisis de Paquetes y Extracción de Credenciales:
Para protocolos no seguros, las credenciales suelen transmitirse en texto plano. Aquí te explico cómo identificar credenciales en algunos protocolos vulnerables:
HTTP: Busca paquetes de tipo POST
en formularios de autenticación. Al revisar los paquetes POST
, podrás ver los parámetros enviados, como username
y password
.
FTP: Busca las palabras USER
y PASS
en los paquetes FTP. Estos indican el nombre de usuario y la contraseña enviados al servidor.
Telnet: Este protocolo envía comandos en texto plano. Al observar las primeras líneas de comunicación, se pueden ver las credenciales de inicio de sesión.
POP3 e IMAP: En estos protocolos de correo, los comandos USER
y PASS
también suelen aparecer en los paquetes, indicando las credenciales de acceso a la cuenta de correo.
Ejemplo de Análisis: Interceptación en HTTP
Digamos que estás capturando tráfico HTTP. Filtra el tráfico con http
y revisa los paquetes POST
o GET
que contienen parámetros de autenticación.
Selecciona un paquete HTTP y, en la parte inferior de la interfaz de Wireshark, verás la sección Packet Details, donde podrás expandir las capas de Hypertext Transfer Protocol
.
Al examinar los datos en texto claro, podrás ver los parámetros enviados, como username=johndoe
y password=12345
.