Commix (abreviatura de [comm]and [i]njection e[x]ploiter) es una herramienta de pruebas de penetración de código abierto, escrita por Anastasios Stasinopoulos (@ancst), que automatiza la detección y explotación de vulnerabilidades de tipo command (y code) injection.
Puede visitar la colección de capturas de pantalla que muestra algunas de las funcionalidades disponibles en el wiki.
Important
Este proyecto está en desarrollo activo. Es posible que se produzcan cambios incompatibles entre revisiones. Consulte el registro de cambios antes de actualizar.
Commix está pensado principalmente para usarse como herramienta autónoma de línea de comandos, y ejecuta comandos del sistema operativo en los objetivos que analiza. Ejecutar commix como un servicio puede suponer riesgos de seguridad. Se recomienda usarlo con precaución, y únicamente contra sistemas de su propiedad o para los que cuente con autorización explícita.
- Cuatro técnicas de inyección - results-based, boolean-based, time-based y file-based, elegidas con
--techniqueo según el tipo con el que se informan con--type- consulte techniques para ver qué exige cada una de un objetivo. - Out-of-band, cuando no vuelve nada -
--oobdemuestra la ejecución y trae de vuelta la salida del comando sobre HTTP/S o DNS, llegando al servidor mediante el cliente que el objetivo tenga - consulte out-of-band client para ver cuáles prueba y cómo fijar uno. - Inyección de código -
--evalprueba lo que el objetivo evalúa como código, en PHP, Python, Ruby, JavaScript, PowerShell, Perl o Lua, con esas mismas técnicas. - Dondequiera que llegue la entrada - parámetros GET/POST, cabeceras HTTP y cookies, cuerpos JSON/XML/GraphQL, además del módulo
shellshockpara objetivos CGI. - De la prueba a la shell -
--os-shell, los modos integradosreverse_tcpybind_tcpampliables a una PTY completa, transferencia de archivos, lectura y escritura del registro de Windows, y enumeración hasta los hashes de contraseñas, con un ataque de diccionario ofrecido contra ellos. - Evasión de filtros y WAF - scripts de manipulación (tamper) combinables, aplicados en un orden determinista - consulte filters bypass examples.
- Objetivos de cualquier forma - una URL, un rastreo del sitio, formularios HTML, un sitemap, una descripción OpenAPI (Swagger), un registro de proxy, un archivo con varios objetivos, una petición HTTP en bruto o entrada por
stdin- consulte target options. - Reanudable y automatizable - archivos de sesión por objetivo, salida JSON/CSV/HAR, perfiles de opciones reutilizables,
--proof, que vuelve a demostrar cualquier hallazgo con un experimento propio, y una API REST para lanzar análisis desde otro sitio. - Tipo Unix y Windows - back-ends PHP, Python, Perl, Ruby, ASP.NET, JSP y CGI - consulte Windows and Unix-like targets at a glance para ver en qué se diferencian las cargas útiles.
Puede descargar commix en cualquier plataforma clonando el repositorio Git oficial:
$ git clone https://github.com/commixproject/commix.git commix
Alternativamente, puede descargar la última versión tarball o versión zipball.
Note
Se necesita Python (versión 3.7 o posterior) para ejecutar commix. El resto de dependencias se incluyen con el programa, por lo que no hace falta ningún paso de instalación adicional.
Para obtener una lista de todas las opciones y parámetros disponibles:
$ python3 commix.py -h
Probar un único parámetro inyectable y abrir una shell en el objetivo:
$ python3 commix.py --url="http://commix-testbed/scenarios/regular/GET/classic.php?addr=127.0.0.1" --os-shell
Demostrar la ejecución fuera de banda, cuando la respuesta no devuelve nada:
$ python3 commix.py --url="http://commix-testbed/scenarios/regular/POST/blind.php" --data="addr=127.0.0.1" --oob
Note
El cliente se elige según lo que tenga el objetivo, de modo que una máquina sin los clientes HTTP
habituales sigue estando al alcance - fije uno con --oob-transport cuando su salida a red ya se
conozca. La detección fuera de banda (OAST) con --oob utiliza de forma predeterminada el servidor
interactsh público oast.fun, por lo que los metadatos de las interacciones con su objetivo salen
de su red. Apunte --oob-server a una instancia propia para mantenerlos internos. Para una guía
detallada, consulte la página
out-of-band-oob-channel del wiki.
Analizar una lista de objetivos de forma desatendida y guardar los resultados en un archivo:
$ python3 commix.py -m targets.txt --batch --report-json=results.json
Para obtener una visión general de las opciones, parámetros y conceptos básicos de uso de commix, consulte las páginas del wiki Uso, Ejemplos de uso y Evasión de filtros.
- Manual de usuario: https://github.com/commixproject/commix/wiki
- Seguimiento de incidencias: https://github.com/commixproject/commix/issues

