
xpath es un escáner rápido de inyección XPath con múltiples técnicas escrito en Nim. Se centra en la detección práctica, la comparación de respuestas, la extracción visible y la extracción ciega.
Escáner avanzado de inyección XPath para pruebas de seguridad autorizadas.
Codificado por Chokri Hammedi (blue0x1) · Licencia MIT
xpath es un escáner de inyección XPath rápido y con múltiples técnicas escrito en Nim. Se centra en la detección práctica, la comparación de respuestas, la extracción visible, la extracción ciega y la cobertura de payloads para aplicaciones reales respaldadas por XML.
No tiene dependencias externas en tiempo de ejecución más allá de la biblioteca estándar de Nim.
| Área | Soporte |
|---|---|
| Detección | Basado en errores, ciego basado en booleanos, ciego basado en tiempo, bypass de autenticación, unión/selección de nodos |
| Extracción | Análisis de HTML visible, extracción por unión de selectores, extracción ciega de datos XPath |
| Payloads | Clásicos, de predicado, basados en funciones, escape de ruta, codificados, de entidad, variantes con mayúsculas/minúsculas mixtas |
| Descubrimiento | Detección de parámetros URL y rastreo de formularios HTML |
| Evasión | Indicadores de WAF/IDS, payloads de bypass codificados en URL y basados en entidades |
| Salida | Informe de terminal legible por humanos y exportación de informe JSON |
| Transporte | Cookies, cabeceras, proxy, reintentos, timeout, User-Agent, controles de redirección |
nimble install xpath
Esto instala el último paquete de la lista oficial de paquetes de Nim.
git clone https://github.com/blue0x1/xpath.git
cd xpath
make linux
make test
El binario de Linux se escribe en:
dist/xpath-linux-amd64
sudo make install
Por defecto instala:
/usr/local/bin/xpath
Para cambiar el prefijo de instalación:
sudo make install PREFIX=/usr
make deb
sudo dpkg -i dist/xpath_1.0.0_amd64.deb
make windows
El binario de Windows se escribe en:
dist/xpath-windows-amd64.exe
En Linux, la compilación para Windows requiere MinGW:
sudo apt install mingw-w64
Escanea un parámetro GET:
xpath -u "http://target.local/search?q=test" -p q
Escanea todos los parámetros de consulta detectados:
xpath -u "http://target.local/search?q=test&id=1"
Escanea un cuerpo POST:
xpath -u "http://target.local/login" -m POST -d "user=*&pass=test"
Ejecuta todas las técnicas y extrae datos visibles o ciegos cuando sea posible:
xpath -u "http://target.local/search?q=test" -p q -t A -x
Usa un proxy:
xpath -u "http://target.local/search?q=test" -p q --proxy http://127.0.0.1:8080
Guarda la salida JSON:
xpath -u "http://target.local/search?q=test" -p q -t A -o report.json -f json
USAGE
xpath [OPTIONS] -u <URL>
TARGET
-u, --url <URL> Target URL
-m, --method <METHOD> HTTP method: GET or POST
-d, --data <DATA> POST body, use * to mark injection point
-p, --param <PARAM> Parameter(s) to test, comma-separated
-c, --cookie <COOKIE> Cookie string
-H, --header <HEADER> Extra header, repeatable
DETECTION
-t, --technique <FLAGS> E, B, T, U, P, or A
-l, --level <1-5> Payload thoroughness level
-x, --extract Extract data after confirming injection
--xpath <EXPR> XPath expression for extraction
OUTPUT
-o, --output <FILE> Save report
-f, --format <FMT> text or json
-v, --verbose Verbose output
Envía payloads XPath malformados y detecta firmas de error específicas de frameworks a partir de códigos de error de Java, .NET, PHP, libxml2, Saxon, Xalan y W3C XQuery.
xpath -u "http://target.local/item?id=1" -p id -t E
Compara respuestas de payloads VERDADERO/FALSO emparejados mediante la similitud del cuerpo y los deltas de tamaño. Esto es útil cuando los resultados no se imprimen directamente, pero el comportamiento de la aplicación cambia.
xpath -u "http://target.local/search?q=test" -p q -t B
Usa expresiones XPath computacionalmente costosas para crear diferencias medibles en el tiempo de respuesta cuando las señales basadas en contenido no están disponibles.
xpath -u "http://target.local/search?q=test" -p q -t T --time-sec 3
Comprueba si un parámetro tipo selector puede combinarse con rutas XPath absolutas o relativas, como //text(), ../../..//text(), //@*, y rutas indexadas.
xpath -u "http://target.local/search?q=INVALID&field=name" -p field -t U -x
Comprueba payloads de ruptura de predicados, payloads basados en posición, payloads de subcadena de rol, funciones booleanas y formas de bypass sensibles al contexto.
xpath -u "http://target.local/login" -m POST -d "username=*&password=test" -t P
Cuando -x está habilitado, xpath elige el mejor modo de extracción disponible:
| Modo | Descripción |
|---|---|
| Respuesta de autenticación visible | Analiza nuevas filas, enlaces, redirecciones y valores renderizados de respuestas de bypass exitosas |
| Rutas de unión visibles | Extrae texto recientemente renderizado de payloads de unión/selección de nodos |
| Extracción ciega | Usa string-length(), substring(), name() y count() para inferir datos XML |
Ejemplo:
xpath -u "http://target.local/query?q=test" -p q -t A -x
Expresión personalizada:
xpath -u "http://target.local/query?q=test" -p q -x --xpath "name(/*[1])"
| Nivel | Enfoque |
|---|---|
1 | Payloads clásicos rápidos |
2 | Rupturas de predicado comunes en el mundo real |
3 | Escaneo equilibrado por defecto |
4 | Payloads codificados, de entidad y de escape de ruta |
5 | Cobertura máxima y variantes exóticas |
| Objetivo | Salida |
|---|---|
make linux | dist/xpath-linux-amd64 |
make windows | dist/xpath-windows-amd64.exe |
make test | Ejecuta la suite de pruebas de Nim |
make install | Instala en $(PREFIX)/bin/xpath |
make deb | dist/xpath_1.0.0_amd64.deb |
make clean | Elimina build/ y dist/ |
src/
xpath.nim
core/
analyzer.nim
crawler.nim
extractor.nim
http.nim
payloads.nim
reporter.nim
scanner.nim
utils/
cli.nim
config.nim
logger.nim
Licencia MIT. Consulta LICENSE.
Esta herramienta es solo para pruebas de seguridad autorizadas. Úsala únicamente en sistemas de tu propiedad o sobre los que tengas permiso explícito por escrito para realizar pruebas.