toxssin Explotación XSS y Generador de Payload

toxssin: Explotación XSS y Generador de Payload

toxssin es una herramienta de pruebas de penetración de código abierto que automatiza el proceso de explotación de vulnerabilidades de Cross-Site Scripting (XSS). Consiste en un servidor https que funciona como intérprete del tráfico generado por la carga útil de JavaScript maliciosa que impulsa esta herramienta (toxin.js).

Este proyecto comenzó como (y sigue siendo) un esfuerzo creativo basado en la investigación para explorar la profundidad de la explotabilidad que puede introducir una vulnerabilidad XSS mediante el uso de JavaScript vainilla, certificados de confianza y trucos baratos.

Interfaz de uso de toxssin
Interfaz de uso de toxssin

Descargo de responsabilidad

El proyecto es bastante reciente y no ha sido ampliamente probado.

Demostración

Capacidades

Por defecto, toxssin intercepta

  • cookies (si HttpOnly no está presente),
  • las pulsaciones de teclas,
  • eventos de pegado,
  • eventos de cambio de entrada,
  • selecciones de archivos,
  • envíos de formularios,
  • respuestas del servidor,
  • datos de la tabla (tanto estáticos como actualizados),

Lo más importante es que toxssin

  • intenta mantener la persistencia del XSS mientras el usuario navega por el sitio web interceptando las peticiones y respuestas http y reescribiendo el documento,
  • soporta la gestión de sesiones, lo que significa que, puedes usarlo para explotar el XSS reflejado así como el almacenado,
  • soporta la ejecución de scripts JS personalizados contra sesiones,
  • registra automáticamente cada sesión.
Resultados de toxssin
Resultados de toxssin

Instalación y Uso

Puedes instalar esta herramienta con pip3:

git clone https://github.com/t3l3machus/toxssin
cd ./toxssin
pip3 install -r requirements.txt

Para iniciar toxssin.py, necesitarás suministrar archivos de certificado ssl y clave privada.

Si no tienes un dominio con un certificado de confianza, puedes emitir y utilizar certificados autofirmados con el siguiente comando (aunque esto no te llevará muy lejos):

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

Se recomienda encarecidamente ejecutar toxssin con un certificado de confianza (ver Cómo obtener un certificado válido más abajo). Dicho esto, puedes iniciar el servidor de toxssin así:

# python3 toxssin.py -u https://your.domain.com -c /your/certificate.pem -k /your/privkey.pem

Visita la wiki del proyecto para obtener más información.

Obstáculos para la explotación de XSS

En la experiencia del autor, hay 4 obstáculos principales cuando se trata de ataques de Cross-Site Scripting que intentan incluir scripts JS externos:

  1. el error “Mixed Content“, que puede resolverse sirviendo la carga útil de JavaScript a través de https (incluso con un certificado autofirmado).
  2. el error “NET::ERR_CERT_AUTHORITY_INVALID“, que indica que el certificado del servidor no es de confianza / está caducado y puede ser evitado utilizando un certificado emitido por una Autoridad de confianza.
  3. Cross-origin resource sharing (CORS),que es manejado apropiadamente por el servidor de toxssin.
  4. La cabecera Content-Security-Policy con el script-src configurado sólo para un dominio(s) específico(s) bloqueará la carga de los scripts con src multidominio. Toxssin confía en la función eval() para entregar su veneno, así que, si el sitio web tiene un CSP y la expresión unsafe-eval no está especificada en la directiva script-src directive, el ataque probablemente fallará (se está trabajando en un segundo método de entrega de veneno para solucionar esto).

Nota

El error “Mixed Content” puede ocurrir, por supuesto, cuando el sitio web de destino está alojado a través de http y la carga útil de JavaScript a través de https. Esto limita el alcance de toxssin a los sitios web con https, ya que (por defecto) toxssin se inicia sólo con ssl.

Cómo obtener un certificado válido

En primer lugar, necesitas tener un nombre de dominio. La forma más rápida y económica de conseguir uno (según mis conocimientos) es a través de un servicio de registro de dominios barato (por ejemplo, https://www.namecheap.com/). Busca un nombre de dominio de cadena aleatoria (por ejemplo, “fvcm98duf“) y comprueba los TLD menos populares, como .xyz, ya que probablemente te costarán unos 3 $ al año.

Después de comprar un nombre de dominio, puedes utilizar certbot (Let’s Encrypt) para obtener un certificado de confianza en 5 minutos o menos:

  1. Añade un registro A a la configuración DNS de tu dominio para que apunte a la IP de tu servidor,
  2. Sigue las instrucciones oficiales de certbots.

Consejo

No instales y ejecutes certbot por tu cuenta, podrías obtener errores inesperados. Sigue las instrucciones.

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda