
xalgorix v4.5.153
Agentes autónomos de pentesting con IA: reconocimiento en tiempo real, detección de vulnerabilidades y orquestación de explotación. Go + TypeScript.
Xalgorix — Pentester de IA de código abierto que demuestra vulnerabilidades
La mayoría de los escáneres detectan. Xalgorix demuestra. Un agente LLM autónomo ejecuta una metodología completa de pentesting, y luego un verificador independiente re-explota cada hallazgo antes de que se reporte — para que obtengas pruebas, no un montón de "quizás" que triar. Autoalojado, privado y con tu propio LLM. Construido en Go + TypeScript.
🚀 Inicio rápido · 💡 Por qué Xalgorix · ✨ Características · 🎯 Casos de uso · ☁️ Nube alojada · 📖 Documentación
📸 Capturas de pantalla
🖥️ Panel de control autoalojado — se ejecuta localmente en 127.0.0.1:9137
| Panel de control general | Detalle del escaneo | Hallazgos |
|---|---|---|
![]() | ![]() | ![]() |
☁️ Panel de control en la nube alojada — la versión totalmente gestionada en www.xalgorix.com
🚀 Inicio rápido
Instalación (una línea):```bash curl -sSL https://www.xalgorix.com/install | bash
Esto descarga el binario precompilado para tu plataforma (Linux amd64/arm64) desde la última versión. Luego ejecuta el asistente de configuración interactivo:```bash
xalgorix --setup
Elija su proveedor, confirme un modelo e introduzca la clave de API cuando se le solicite. Para obtener los mejores resultados, use un modelo frontera actual con razonamiento sólido, buen rendimiento en contextos largos y llamadas a herramientas fiables, como el último GPT, Claude o Gemini capaz disponible para usted. Los modelos más pequeños o locales siguen siendo compatibles, pero pueden requerir más supervisión durante escaneos autónomos largos. Xalgorix almacena la clave de forma privada en ~/.xalgorix.env (modo 0600) y puede iniciar el panel para usted. Ollama local no necesita clave de API.
Si decide no iniciarlo de inmediato, comience más tarde con xalgorix --web y abra http://127.0.0.1:9137. Puede cambiar el proveedor o las opciones avanzadas en cualquier momento en Configuración → LLM, o volver a ejecutar xalgorix --setup.
O ejecútelo con Docker: todo incluido, sin necesidad de toolchain:```bash
docker run --rm -p 9137:9137
--privileged
-v xalgorix-data:/data
xalgord/xalgorix:latest
`--privileged` le da al conjunto de herramientas el mismo acceso similar al del host que tiene cuando se ejecuta de forma nativa como root. El sandbox predeterminado de Docker elimina capacidades (como `NET_ADMIN`) y aplica un filtro seccomp, lo que rompe herramientas de bajo nivel (cambios de iptables/ruta, ARP-spoof/MITM, VPNs tun/tap, depuradores basados en ptrace, ajuste de interfaz de masscan). Dado que una imagen no puede otorgarse estas capacidades a sí misma, deben establecerse en tiempo de ejecución. El contenedor es un sandbox de escaneo desechable y aislado de la red que se ejecuta como root — privilegiado es la postura prevista; nunca expongas el panel públicamente sin autenticación. ¿Prefieres el menor privilegio? Cambia `--privileged` por `--cap-add=NET_ADMIN --cap-add=NET_RAW --cap-add=SYS_PTRACE --security-opt seccomp=unconfined`.
Abre `http://localhost:9137`. **No necesitas una clave de LLM para empezar** — el panel se inicia sin una; establece el modelo y la clave de API en **Settings → LLM** (se guarda en el volumen `/data`). Si no pasas `XALGORIX_USERNAME`/`XALGORIX_PASSWORD`, se genera una contraseña de administrador aleatoria y se imprime en los registros del contenedor en el primer inicio.
**Lo más fácil — Docker Compose** (mapea el puerto y un volumen persistente por ti):```bash
curl -sSLO https://raw.githubusercontent.com/xalgorix/xalgorix/main/docker-compose.yml
docker compose up -d
docker compose logs -f # shows the generated admin password on first start
La imagen incluye un amplio conjunto de herramientas ofensivas de seguridad preinstaladas (nmap, nuclei, httpx, subfinder, katana, ffuf, gobuster, sqlmap, masscan, dalfox, feroxbuster y más) y mantiene disponibles todos los gestores de paquetes (apt, go, cargo, pipx, npm) para que el agente pueda autoinstalar cualquier cosa que falte en tiempo de ejecución. Se ejecuta como root dentro del contenedor por diseño: trata el contenedor como un sandbox de escaneo desechable y aislado de la red, y nunca expongas el panel sin autenticación. (Imagen amd64; el instalador anterior cubre arm64).
O compilar desde el código fuente (requiere Go 1.25+ y Node.js):```bash git clone https://github.com/xalgorix/xalgorix.git cd xalgorix make build sudo install -m 755 build/xalgorix /usr/local/bin/xalgorix
> [!TIP]
> ¿Prefieres cero configuración? Una versión totalmente gestionada está disponible en [www.xalgorix.com](https://www.xalgorix.com/) — haz clic para escanear, sin instalación ni claves API.
### 🤖 Revisa pull requests automáticamente — App gratuita de GitHub
¿Quieres una revisión de seguridad en cada pull request sin configuración? Instala la **[App de GitHub Xalgorix](https://github.com/apps/xalgorix)**. Lee el diff de cada PR y comenta una revisión de seguridad — inyección, auth/IDOR roto, SSRF, secretos, patrones inseguros — directamente en el pull request. Se actualiza en cada nuevo commit, y puedes comentar **`@xalgorix review`** para volver a ejecutarla bajo demanda. Sin archivo de workflow, sin clave API, sin cuenta — y es gratuita.
<div align="center">
[**➕ Añadir Xalgorix a GitHub →**](https://github.com/apps/xalgorix/installations/new)
</div>
Para bloqueo de merges y pentests completos verificados con exploits en CI, usa el [escáner alojado](https://www.xalgorix.com/) o la GitHub Action.
> [!IMPORTANT]
> Usa Xalgorix solo en sistemas que poseas o para los que tengas permiso explícito de prueba.
> [!TIP]
> ¿Prefieres no auto-alojar? Una versión totalmente gestionada está disponible en [www.xalgorix.com](https://www.xalgorix.com/) — haz clic para escanear, sin instalación ni claves API.
## 📚 Contenidos
| | | |
| --- | --- | --- |
| 📸 [Capturas de pantalla](#-capturas-de-pantalla) | 🔩 [Configuración](#-configuración) | 🧾 [Variables de entorno](#-variables-de-entorno) |
| 🚀 [Inicio rápido](#-inicio-rápido) | 🆙 [Actualización](#-actualización-desde-versiones-anteriores) | 🔤 [Prefijos de proveedores](#-prefijos-de-proveedores) |
| 🔎 [Descripción general](#-descripción-general) | 🏃 [Ejecución](#-ejecución) | 💻 [Referencia de CLI](#-referencia-de-cli) |
| 💡 [Por qué Xalgorix](#-por-qué-xalgorix) | 🧰 [Modo servicio](#-modo-servicio) | 📡 [Resumen de API](#-resumen-de-api) |
| 🎯 [Casos de uso](#-casos-de-uso) | 🔁 [Flujo de trabajo de la Web UI](#-flujo-de-trabajo-de-la-web-ui) | 💾 [Almacenamiento de datos](#-almacenamiento-de-datos) |
| ✨ [Características](#-características) | 🔀 [Modos de escaneo](#-modos-de-escaneo) | 🧪 [Desarrollo](#-desarrollo) |
| 📥 [Instalación](#-instalación) | 📂 [Escanea tu código](#-escanea-tu-código-sin-objetivo-necesario) | 🚨 [Notas de seguridad](#-notas-de-seguridad) |
| 🧭 [Metodología](#-metodología) | 📄 [Informes](#-informes) | 📜 [Licencia](#-licencia) |
| 🔧 [Ajustes](#-ajustes) | 🔗 [Enlaces](#-enlaces) | |
## 🔎 Descripción general
Xalgorix es una plataforma de pentesting de IA auto-alojada para pruebas de seguridad autorizadas, evaluación de vulnerabilidades y flujos de trabajo de bug bounty. Combina un agente autónomo impulsado por LLM, automatización de navegador, herramientas de terminal, una metodología de pruebas integral de 22 fases, telemetría WebSocket en vivo, gestión de hallazgos con puntuación CVSS, generación de informes PDF con marca, e integraciones para AgentMail, Discord y Telegram.
A diferencia de los escáneres DAST solo en la nube, Xalgorix se ejecuta completamente en tu máquina. Tú aportas tu propio proveedor de LLM (OpenAI, Anthropic, DeepSeek, Gemini, Groq, Ollama, MiniMax) y controlas el modelo, el esfuerzo de razonamiento, los límites de tasa y la configuración del proxy. Ningún dato de escaneo, clave API o información del objetivo sale de tu infraestructura.
La experiencia predeterminada es la Web UI. Desde un único panel local puedes iniciar escaneos, monitorear ejecuciones activas, inspeccionar hallazgos, configurar ajustes de modelo/proveedor, gestionar variables de entorno, generar informes PDF con marca y eliminar o reanudar escaneos históricos.
## 💡 Por qué Xalgorix
La mayoría de los escáneres **detectan**. Xalgorix **prueba**. Un agente autónomo trabaja a través de una metodología de 22 fases, y luego un verificador independiente vuelve a probar cada hallazgo candidato antes de que se informe — así obtienes resultados verificados con exploits y evidencia, no un muro de "quizás" para triar.
- 🧠 **Un agente de IA, no un motor de plantillas** — razona sobre flujos de autenticación, lógica de negocio, IDOR/BOLA y exploits encadenados que los escáneres de firmas pasan por alto.
- ✅ **Hallazgos verificados con exploits** — un verificador separado reproduce de forma independiente cada hallazgo; los no concluyentes se marcan para revisión, nunca se presentan como confirmados.
- 🔒 **Auto-alojado y privado** — se ejecuta en tu máquina con tu propia clave de LLM; ningún dato del objetivo, clave o hallazgo sale de tu infraestructura.
- 🧩 **Trae tu propio LLM** — OpenAI, Anthropic, DeepSeek, Gemini, Groq, Ollama o MiniMax — o cualquier puerta de enlace compatible con OpenAI como [LiteLLM](#-litellm--puertas-de-enlace-compatibles-con-openai-github-copilot-claude-opus-codex-openrouter-azure-modelos-locales) (GitHub Copilot, Codex, OpenRouter, Azure). Tú controlas el modelo, el esfuerzo de razonamiento y el costo.
- 📄 **Informes listos para auditoría** — PDFs con marca, puntuaciones CVSS, prueba de concepto y remediación.
### 📊 Cómo se compara
| | **Xalgorix** | Escáneres de plantillas (p. ej. Nuclei) | Escáneres de rastreo (p. ej. OWASP ZAP) | DAST comercial |
| -------------------------------------------- | ------------------------ | ------------------------------- | ---------------------------------- | ---------------------- |
| Enfoque | Agente de IA autónomo | Firmas / plantillas | Spider + reglas activas | Firmas + heurísticas |
| Cobertura de lógica de negocio / IDOR / bypass de auth | ✅ | Limitada | Limitada | Parcial |
| Verificado con exploits (prueba el impacto) | ✅ verificador independiente | ❌ | ❌ | Parcial |
| Carga de falsos positivos | Baja (probada) | Dependiente de plantillas | Alta | Media |
| Auto-alojado / los datos permanecen locales | ✅ | ✅ | ✅ | Generalmente en la nube |
| Trae tu propio LLM | ✅ | — | — | ❌ |
| Informes PDF con marca | ✅ | ❌ | Básico | ✅ |
| Costo | Código abierto + tu LLM | Gratis | Gratis | $$$ |
> Comparación direccional — Nuclei y ZAP son excelentes en lo que hacen. Xalgorix añade la capa de descubrimiento con razonamiento intensivo y verificación de exploits encima.
### ☁️ Auto-alojado vs nube alojada
Xalgorix es gratuito y de código abierto — auto-alójalo para siempre, sin condiciones. La [nube alojada](https://www.xalgorix.com/) ejecuta el **mismo** motor verificado con exploits; existe para quienes prefieren no gestionar claves API, infraestructura y facturas impredecibles de LLM. Ambas son de primera clase — elige lo que se adapte.
| | **Auto-alojado** (este repositorio) | **[Nube alojada](https://www.xalgorix.com/)** |
| ---------------------------------- | ---------------------------------------- | ----------------------------------------------- |
| Precio para empezar | Gratis, Apache-2.0 | Nivel gratuito · un escaneo completo desde $1 |
| Clave API de LLM | Trae y gestiona la tuya | Incluida — nada que gestionar |
| Costo por escaneo | Tokens LLM brutos — variable, puede dispararse | 1 crédito por host en vivo — predecible |
| Configuración y operación | Tú instalas, actualizas y ejecutas el conjunto de herramientas | Nada que ejecutar — escanea en ~60s |
| Infraestructura fuera de banda (SSRF/RCE ciego) | Levanta tu propio servidor OOB | OOB gestionado incluido |
| Programación · equipo · RBAC | Hazlo tú mismo | Integrado |
| Actualizaciones | `git pull` + reconstrucción | Siempre en el motor más reciente |
| Residencia de datos / sin conexión | ✅ permanece en tu infraestructura · compatible con air-gap | Se ejecuta en nuestra infraestructura (DPA disponible) |
**Auto-aloja si** los datos deben permanecer en tu red, quieres control total, o ejecutarás sin conexión/air-gapped — es exactamente para eso. **Usa la nube si** prefieres saltarte las claves API, la infraestructura y las facturas sorpresa de tokens, y pagar solo por los hosts en vivo que realmente escaneas.
<div align="center">
[**☁️ Prueba la nube alojada — gratis →**](https://www.xalgorix.com/) · [**⚖️ Compara el costo real (calculadora) →**](https://www.xalgorix.com/hosted-vs-self-hosted)
</div>
Si Xalgorix te ahorra un ciclo de triaje, por favor **[⭐ da una estrella al repositorio](https://github.com/xalgorix/xalgorix)** — realmente ayuda a que otros lo encuentren.
## 🎯 Casos de uso
| Caso de uso | Cómo ayuda Xalgorix |
| -------- | ------------------ |
| **Pruebas de penetración** | Ejecuta una metodología completa de 22 fases contra objetivos autorizados. El agente de IA maneja reconocimiento, descubrimiento de vulnerabilidades, pruebas de inyección, SSRF, IDOR, bypass de auth, condiciones de carrera y más — luego verifica los hallazgos antes de informar. |
| **Caza de bug bounty** | Apunta Xalgorix a un objetivo dentro del alcance y deja que el agente enumere la superficie de ataque, pruebe clases comunes de vulnerabilidades y muestre hallazgos verificados con puntuaciones CVSS y evidencia de prueba de concepto. |
| **Operaciones de red team** | Usa los modos de escaneo con comodines y multi-objetivo para mapear la superficie de ataque externa de una organización. El DAST asistido por navegador maneja flujos de auth, formularios y comportamiento en tiempo de ejecución que los escáneres estáticos pasan por alto. |
| **Investigación de seguridad** | La fase de descubrimiento de vulnerabilidades novedosas empuja al agente más allá del emparejamiento de plantillas conocido. Trae tu propio LLM (OpenAI, Anthropic, DeepSeek, Gemini, Ollama, MiniMax) para controlar la profundidad de razonamiento y el costo. |
| **Pruebas de seguridad continuas** | Ejecuta como servicio del sistema con `xalgorix --start`. Escanea según un horario, transmite hallazgos a Discord o Telegram y genera informes PDF con marca para las partes interesadas. |
| **Automatización DAST** | Pruebas impulsadas por navegador para aplicaciones web — flujos de auth, formularios, contenido renderizado con JavaScript y comportamiento en tiempo de ejecución. Se integra con Caido para la inspección del tráfico del proxy. |
## ✨ Características
| Área | Capacidades |
| -------------- | --------------------------------------------------------------------------------------------------------------------------- |
| 📊 Panel | Web UI local en `127.0.0.1:9137` por defecto, gestión de escaneos, estado en vivo, acciones de escaneo masivo y recuperación de escaneos históricos. |
| 🔍 Escaneo | Flujos de objetivo único, DAST, comodines y multi-objetivo con fases de metodología seleccionables. |
| 📡 Telemetría en vivo | Llamadas de herramientas, mensajes del agente, hallazgos, errores, actividad HTTP y actividad de LLM a través de WebSockets. |
| 🐞 Hallazgos | Páginas de detalle de escaneo, filtros de severidad, detalles de CVSS, índice de hallazgos y flujos de trabajo de hallazgos verificados. |
| 📄 Informes | Informes PDF con marca con nombre del objetivo/empresa, logo subido, lista de informes, acciones de abrir/descargar/eliminar. |
| 🔔 Integraciones | Bandejas de entrada de prueba de AgentMail, correos de verificación, flujos de OTP, eventos de triaje de correo, notificaciones de Discord y Telegram. |
| ⚙️ Configuración | Ajustes del panel para LLM, AgentMail, Discord, Telegram, proxy, tiempo de ejecución, navegador, auth, límites de tasa y recursos. |
| 🛡️ Seguridad en tiempo de ejecución | Límites de instancias conscientes de recursos y enlace solo a loopback a menos que se configure explícitamente acceso externo con auth. |
## 📥 Instalación
Las rutas más rápidas no necesitan ningún conjunto de herramientas.
### ⚡ Instalación de una línea (binario precompilado)```bash
curl -sSL https://www.xalgorix.com/install | bash
Descarga el binario de la última versión para tu plataforma (Linux amd64/arm64) y lo instala en /usr/local/bin (o ~/.local/bin sin sudo). Se puede sobrescribir con XALGORIX_INSTALL_DIR o fijar una versión con XALGORIX_VERSION=vX.Y.Z.
Completa la configuración inicial de forma interactiva, sin necesidad de editar manualmente el archivo de entorno:```bash xalgorix --setup
El asistente conserva la configuración existente cuando se vuelve a ejecutar, oculta la entrada de la clave de API en una terminal y, opcionalmente, inicia la interfaz web al finalizar.
### 🐳 Docker```bash
docker run --rm -p 9137:9137 \
--privileged \
-e XALGORIX_LLM=openai/gpt-5.6 \
-e XALGORIX_API_KEY=your_openai_api_key \
-v xalgorix-data:/data \
ghcr.io/xalgord/xalgorix:latest
--privileged (o el más restringido --cap-add=NET_ADMIN --cap-add=NET_RAW --cap-add=SYS_PTRACE --security-opt seccomp=unconfined) otorga al conjunto de herramientas un acceso similar al del host. El sandbox predeterminado de Docker elimina capacidades y filtra llamadas al sistema, lo que rompe las herramientas de bajo nivel (cambios de iptables/route/interfaces, ARP-spoof/MITM, VPNs tun/tap, depuradores basados en ptrace). Una imagen no puede otorgarse estas capacidades a sí misma — son una decisión en tiempo de ejecución — así que pasa la bandera, o usa el docker-compose.yml proporcionado, que lo configura por ti.
La imagen es todo incluido: un extenso conjunto de herramientas ofensivas de seguridad está preinstalado (nmap, nuclei, httpx, subfinder, dnsx, naabu, katana, ffuf, gobuster, dalfox, feroxbuster, sqlmap, masscan, nikto, whatweb, hydra, y más), además de Chromium para DAST asistido por navegador. También mantiene disponible el conjunto completo de gestores de paquetes (apt, go, cargo, pipx, npm), por lo que el agente instala automáticamente cualquier cosa que falte en tiempo de ejecución. Los datos de escaneo persisten en el volumen /data, y el servidor se vincula a 0.0.0.0 dentro del contenedor — establece XALGORIX_USERNAME/XALGORIX_PASSWORD antes de exponerlo más allá de localhost.
El contenedor se ejecuta como root por diseño (el motor solo habilita la instalación automática en tiempo de ejecución para uid 0, y las instalaciones de apt/go/cargo necesitan acceso de escritura al sistema). Trátalo como un sandbox de escaneo desechable y aislado de la red. Está publicado para amd64; usa el instalador de una línea para hosts arm64.
En la primera ejecución, si no configuras la autenticación del panel, el contenedor genera una contraseña de administrador aleatoria y la imprime en los registros (la imagen se vincula a 0.0.0.0, lo que el motor no hará sin autenticación). Establece XALGORIX_USERNAME + XALGORIX_PASSWORD (o XALGORIX_PASSWORD_HASH) para usar las tuyas propias. El binario nunca se autoactualiza dentro del contenedor (XALGORIX_NO_AUTO_UPDATE=1) — extrae una nueva etiqueta de imagen para actualizar. El motor nuclei y sus plantillas de vulnerabilidades se actualizan a la última versión en cada compilación de imagen (el CI de lanzamiento y redeploy.sh lo fuerzan); pasa --build-arg NUCLEI_VERSION=vX.Y.Z para fijar el motor, o NUCLEI_REFRESH=0 ./redeploy.sh para reutilizar la caché de Docker.
📋 Requisitos (compilar desde el código fuente)
| Requisito | Notas |
|---|---|
| Linux | Plataforma principal compatible. |
| Go | 1.25 o más reciente. |
| Node.js + npm | Requerido al compilar la interfaz web React incluida desde el código fuente. |
| Herramientas de seguridad | Se instalan bajo demanda solo cuando la instalación automática está habilitada. |
Comprueba tu versión de Go:```bash go version
### 🔨 Compilar desde el código fuente```bash
git clone https://github.com/xalgorix/xalgorix.git
cd xalgorix
make build
sudo install -m 755 build/xalgorix /usr/local/bin/xalgorix
make build compila la interfaz web de React en internal/web/static y luego compila el binario de Go.
📦 Instalar con Go```bash
GOPROXY=direct GOSUMDB=off go install github.com/xalgord/xalgorix/v4/cmd/xalgorix@latest
## 🔩 Configuración
Xalgorix carga la configuración en este orden. Las fuentes posteriores anulan a las anteriores.
| Orden | Fuente |
| ----- | -------------------------------------------------------------- |
| 1 | `/etc/xalgorix.env` |
| 2 | `/home/<sudo-user>/.xalgorix.env` cuando se lanza mediante `sudo` |
| 3 | `~/.xalgorix.env` |
| 4 | Variables de entorno ya presentes en el proceso |
Crea el archivo de entorno local:```bash
nano ~/.xalgorix.env
🧩 Configuración mínima
Para obtener los resultados de escaneo autónomo más sólidos, selecciona un modelo frontera actual. El ID de modelo a continuación es un ejemplo concreto; se pueden introducir IDs de modelo compatibles más recientes sin esperar a una versión de Xalgorix.```bash XALGORIX_LLM=openai/gpt-5.6 XALGORIX_API_KEY=your_openai_api_key
### 🔌 Ejemplos de Proveedores
OpenAI:```bash
XALGORIX_LLM=openai/gpt-5.6
XALGORIX_API_KEY=sk-...
Custom OpenAI-compatible provider:```bash XALGORIX_LLM=custom/security-model XALGORIX_API_BASE=https://your-provider.example/v1 XALGORIX_API_KEY=your_provider_api_key
#### 🌉 Puertas de enlace compatibles con LiteLLM / OpenAI (GitHub Copilot, Claude Opus, Codex, OpenRouter, Azure, modelos locales)
Debido a que `XALGORIX_API_BASE` acepta cualquier endpoint `/v1/chat/completions` compatible con OpenAI,
Xalgorix funciona con un proxy [LiteLLM](https://docs.litellm.ai/) sin configuración adicional — no se
necesitan cambios en Xalgorix. LiteLLM gestiona la autenticación del proveedor upstream (inicio de
sesión de dispositivo de Copilot, claves de Azure, OpenRouter, Ollama, etc.); Xalgorix solo habla OpenAI con la puerta de enlace.
Ejecuta LiteLLM (ejemplo de `config.yaml`):```yaml
model_list:
- model_name: claude-opus-5
litellm_params:
model: github_copilot/claude-opus-5 # or openrouter/…, azure/…, ollama/…
general_settings:
master_key: sk-local-litellm-key
Apunte Xalgorix hacia él: use el prefijo custom/ para que el nombre del modelo se envíe tal cual y se
utilice el protocolo de chat-completions de OpenAI:```bash
XALGORIX_LLM=custom/claude-opus-5 # the LiteLLM model_name
XALGORIX_API_BASE=http://localhost:4000/v1 # your LiteLLM proxy
XALGORIX_API_KEY=sk-local-litellm-key # LiteLLM master_key / virtual key
El mismo patrón cubre GitHub Copilot Business/CLI, Claude Opus, modelos estilo Codex,
OpenRouter, Azure OpenAI y modelos locales de Ollama — cualquier cosa que LiteLLM pueda enrutar. Mantén
el prefijo `custom/` (o `openai/`) y una `XALGORIX_API_BASE` que no sea de Anthropic/Gemini para que Xalgorix
use la forma estándar de solicitud de OpenAI que LiteLLM espera.
### 🔔 Integraciones Opcionales```bash
GEMINI_API_KEY=AIza...
AGENTMAIL_POD=am_us_pod_47
AGENTMAIL_API_KEY=ak_...
XALGORIX_DISCORD_WEBHOOK=https://discord.com/api/webhooks/...
XALGORIX_DISCORD_MIN_SEVERITY=high
🔐 Autenticación del Panel```bash
XALGORIX_USERNAME=admin XALGORIX_PASSWORD=change-this-password
> [!TIP]
> Prefiere `XALGORIX_PASSWORD_HASH` para despliegues en producción.
## 🆙 Actualización desde versiones anteriores
Esta versión incluye una mejora de estabilidad y aislamiento del espacio de trabajo con un cambio disruptivo y algunos ajustes nuevos que vale la pena conocer.
### 💥 Cambio disruptivo: el espacio de trabajo predeterminado se movió a `~/.xalgorix/data/`
La salida de escaneo, notas, programaciones y otros artefactos generados ahora se almacenan en `~/.xalgorix/data/` en lugar de `$CWD` (el directorio desde el que se lanzó el binario).
Para conservar el comportamiento anterior, apunta `XALGORIX_DATA_DIR` a tu directorio de trabajo actual:```bash
export XALGORIX_DATA_DIR=$(pwd)
A [MIGRATION] warning is emitted at startup when legacy markers (notes.json, _schedules/, vulnerabilities.json, or YYYY-MM-DD/scan-* directories) are detected in $CWD and XALGORIX_DATA_DIR is unset. Xalgorix never reads, copies, or deletes those legacy files automatically; the warning is informational and only fires once per process.
🆕 New environment variable
| Variable | Default | Description |
|---|---|---|
XALGORIX_LLM_MAX_INFLIGHT | 4 × EffectiveMaxInstances | Caps simultaneous outbound LLM calls across all running scans. Minimum 1. Cancelled waiters do not consume a slot. |
🩺 New health endpoint counters
GET /api/status now exposes:
| Field | Meaning |
|---|---|
panics_recovered | Goroutine, HTTP handler, and tool panics that were recovered without crashing. |
path_rejections | Filesystem writes refused by Path_Policy (outside data_dir / ~/.xalgorix/ / /tmp). |
watchdog_kills | Subprocesses terminated by the per-tool hard-timeout watchdog. |
admission_refusals | Scan admission requests denied due to the concurrency ceiling. |
llm_inflight_cap | Effective XALGORIX_LLM_MAX_INFLIGHT value for this process. |
data_dir | Resolved Data_Dir in use. |
allow_list | Filesystem roots accepted by Path_Policy. |
🏃 Running
🪟 Web UI```bash
xalgorix --web
Abierto:```text
http://127.0.0.1:9137
Usa un puerto diferente:```bash xalgorix --web --port 8080
### 🌐 Acceso Externo
Vincula a otra interfaz solo después de habilitar la autenticación del panel:```bash
XALGORIX_USERNAME=admin XALGORIX_PASSWORD=change-this xalgorix --web --bind 0.0.0.0
[!WARNING] El servidor rechaza el enlace externo sin autenticación del panel.
🏹 Escaneo CLI```bash
xalgorix --target https://example.com
Con instrucciones personalizadas:```bash
xalgorix --target https://app.example.com --instruction "Focus on SQL injection, IDOR, and auth bypass. Avoid destructive tests."
🧰 Modo de Servicio
Instalar e iniciar como un servicio del sistema:```bash sudo xalgorix --start
Gestiona el servicio:```bash
sudo xalgorix --restart
sudo xalgorix --stop
sudo xalgorix --uninstall
Ver registros:```bash journalctl -u xalgorix -f
### 🌍 Acceso a Servicios Remotos
Exponga el servicio a navegadores remotos solo después de habilitar la autenticación del panel:```bash
sudo tee -a /root/.xalgorix.env >/dev/null <<'EOF'
XALGORIX_BIND=0.0.0.0
XALGORIX_USERNAME=admin
XALGORIX_PASSWORD=change-this
EOF
sudo xalgorix --restart
Luego abre http://<server-ip>:9137.
Si el proceso está escuchando pero la página aún no carga de forma remota, permite el puerto TCP 9137 en el firewall del servidor o en el grupo de seguridad de la nube.
🏠 Escaneo de objetivos locales/internos
Por defecto, Xalgorix se niega a escanear direcciones de loopback, localhost, rangos privados o
las direcciones de su propia interfaz — son la máquina en la que se ejecuta Xalgorix, no un
objetivo. En un equipo autoalojado y de un solo inquilino, puedes optar por escanear una
aplicación de demostración/ensayo alojada localmente:```bash
echo 'XALGORIX_ALLOW_LOCAL_TARGETS=true' | sudo tee -a /root/.xalgorix.env
sudo xalgorix --restart
El propio listener del panel está **siempre** protegido, incluso con esto habilitado.
> **⚠️ Implementaciones compartidas / multiinquilino / alojadas: mantén esto DESACTIVADO.** Habilitarlo
> permitiría que el escaneo de un usuario llegara a la propia máquina del operador y a su red interna.
> Está desactivado por defecto, así que no se necesita ninguna acción para mantenerse seguro — no establezcas
> `XALGORIX_ALLOW_LOCAL_TARGETS` (o fija `XALGORIX_ALLOW_LOCAL_TARGETS=false`),
> y no expongas la página de Configuración del motor a usuarios no confiables.
## 🔁 Flujo de trabajo de la interfaz web
1. Abre el panel en `http://127.0.0.1:9137`.
2. Ve a Configuración y confirma el proveedor de LLM, la clave de API, los límites de tasa y las integraciones opcionales.
3. Crea un escaneo desde Nuevo escaneo.
4. Elige un modo de escaneo.
5. Selecciona las fases de metodología cuando quieras una ejecución enfocada.
6. Establece filtros de severidad cuando solo ciertas severidades deban informarse en vivo. El filtro afecta únicamente al feed del panel en tiempo real y a las notificaciones; el informe PDF y `/api/findings` siempre incluyen todas las vulnerabilidades que el agente descubrió.
7. Añade el nombre de la empresa y sube un logotipo para informes con marca.
8. Supervisa el progreso desde Resumen, Detalle de escaneo o Feed en vivo.
9. Abre los detalles de los hallazgos, descarga informes o gestiona escaneos históricos desde Escaneos e Informes.
## 🔀 Modos de escaneo
| Modo | Ideal para |
| ---------------- | ------------------------------------------------------------------------------- |
| 🎯 Objetivo único | Probar una URL u host conocido. |
| 🌐 Comodín / múltiple | Enumerar objetivos relacionados y escanear la superficie de ataque descubierta. |
| 🧭 DAST | Pruebas asistidas por navegador para aplicaciones web, flujos de autenticación, formularios y comportamiento en tiempo de ejecución. |
## 📂 Escanea tu código (sin necesidad de objetivo)
Apunta Xalgorix a un código fuente — una URL de Git, una ruta local o un zip subido — y
escanea el código directamente. Sin URL implementada, sin infraestructura que levantar.```bash
# Source review (SAST): audit the code, no running target required
xalgorix --source ./my-app --code-scan review
# Provision + DAST: build & run the app locally, then pentest the running instance
xalgorix --source https://github.com/org/app.git --code-scan provision
| Modo de escaneo de código | Qué hace | Nivel de verificación |
|---|---|---|
review | Lee el código fuente, rastrea la entrada del usuario desde el punto de entrada → sumidero peligroso, e informa vulnerabilidades alcanzables. Sin objetivo en vivo. | Verificado por código fuente — comprobado como alcanzable en el código (claramente etiquetado como no explotado en tiempo de ejecución). |
provision | Inspecciona el repositorio, compila y ejecuta la aplicación en un puerto de bucle local, y luego ejecuta DAST guiado por caja blanca contra la instancia en ejecución. Vuelve a review si la aplicación no se puede compilar. | Verificado por explotación — reproducido contra la aplicación en ejecución. |
--sourceacepta una URL de Git (clonado superficial), un directorio local o una ruta a un archivo subido/extraído. En la interfaz web / aplicación alojada también puedes subir un.zipde tu código base (POST /api/upload-source).- También puedes combinar un repositorio y un objetivo en vivo para la mejora clásica de caja blanca — esa ruta no cambia. Los modos de escaneo de código son para cuando el código base es el sujeto completo.
El modo de aprovisionamiento ejecuta los comandos de compilación/inicio de tu aplicación en el sandbox del agente y solo realiza pruebas de penetración en el único puerto de bucle local donde levantó la aplicación — el panel y todo lo demás en la máquina queda fuera del alcance.
🧭 Metodología
Xalgorix organiza las pruebas autónomas en 22 fases.
| Fase | Enfoque |
|---|---|
| 1 | Reconocimiento |
| 2 | Descubrimiento manual de vulnerabilidades |
| 3 | Descubrimiento de directorios y archivos |
| 4 | Análisis de CORS y cookies |
| 5 | Pruebas de autenticación y sesión |
| 6 | Pruebas de inyección |
| 7 | Pruebas de SSRF |
| 8 | IDOR y control de acceso roto |
| 9 | Pruebas de API y GraphQL |
| 10 | Pruebas de subida de archivos |
| 11 | Deserialización y RCE |
| 12 | Condiciones de carrera y lógica de negocio |
| 13 | Toma de control de subdominios |
| 14 | Pruebas de redirección abierta |
| 15 | Pruebas de seguridad de correo electrónico |
| 16 | Nube e infraestructura |
| 17 | Pruebas de WebSocket |
| 18 | Pruebas específicas de CMS |
| 19 | Secuestro de enlaces rotos y suplantación de contenido |
| 20 | Verificación de explotación |
| 21 | Descubrimiento de vulnerabilidades novedosas |
| 22 | Informe final |
La selección de fases en la interfaz web te permite ejecutar todas las fases o solo el subconjunto necesario para un compromiso específico.
📄 Informes
Los informes se generan como archivos PDF y pueden incluir:
| Sección | Contenido incluido |
|---|---|
| 📌 Resumen | Resumen ejecutivo, metadatos del objetivo, metadatos del escaneo y descripción general de severidad. |
| 🐞 Hallazgos | Hallazgos verificados, detalles de CVSS, análisis técnico y prueba de explotación. |
| 🔬 Evidencia | Comandos de prueba de concepto, scripts, notas de payloads y observaciones de respaldo. |
| 🩹 Remediación | Guía de corrección y próximos pasos priorizados. |
| 🎨 Marca | Nombre de empresa/objetivo y logotipo subido. |
Los informes están disponibles desde la página de detalles del escaneo y la página de Informes. Las filas de informes admiten abrir, descargar y eliminar.
🔧 Configuración
La mayoría de los ajustes operativos se pueden cambiar desde la interfaz web en Configuración.
| Área | Ejemplos |
|---|---|
| 🤝 Compromiso | Límites de tasa de solicitudes del panel |
| 🧠 LLM | Modelo, clave de API, base de API, esfuerzo de razonamiento, reintentos, iteraciones máximas |
| 📬 AgentMail | Pod y clave de API |
| 🔔 Notificaciones | Webhook de Discord y severidad mínima, token de bot de Telegram, ID de chat y severidad mínima |
| 🕵️ Proxy | URL del proxy, archivo de proxy, rotación, verificación TLS |
| 🧱 Tiempo de ejecución | Espacio de trabajo, ruta del navegador, controles de instalación automática |
| 🔐 Seguridad | Nombre de usuario del panel, contraseña, hash de contraseña, dirección de enlace |
| 📈 Recursos | Umbrales de CPU/RAM/disco y presupuesto de concurrencia de escaneo |
Algunos ajustes requieren un reinicio porque afectan el inicio del proceso o el enlace del servidor. La interfaz marca esos campos.
🧾 Variables de Entorno
🧱 Núcleo
| Variable | Predeterminado | Descripción |
|---|---|---|
XALGORIX_LLM | ninguno | ID de modelo nativo del proveedor utilizado para solicitudes LLM. |
XALGORIX_LLM_PROVIDER | ninguno | Proveedor seleccionado por el panel, almacenado por separado del ID del modelo. |
XALGORIX_API_KEY | ninguno | Clave de API del proveedor LLM requerida. |
XALGORIX_API_BASE | predeterminado del proveedor | URL base de API personalizada compatible con OpenAI. |
XALGORIX_REASONING_EFFORT | high | Esfuerzo de razonamiento: none, low, medium, high o xhigh (xhigh se asigna a high para Ollama). |
XALGORIX_LANGUAGE | en | Idioma de salida para la prosa generada por IA (razonamiento del agente, notas, hallazgos, contenido del informe, chat posterior al escaneo). en o zh-CN. Los tokens técnicos (payloads, comandos, URLs, IDs de CVE/CWE) siempre permanecen en su forma original. Los idiomas no latinos se renderizan automáticamente en el panel y en el informe HTML. |
XALGORIX_PDF_CJK_FONT | ninguno | Ruta absoluta a una fuente TrueType (.ttf) con glifos CJK, utilizada para renderizar idiomas no latinos (p. ej., chino simplificado) en el informe PDF exportado. Solo se admite .ttf (no .ttc/.otf). Sin ella, el PDF recurre a fuentes básicas y los glifos no latinos no se renderizarán (el informe HTML no se ve afectado). |
XALGORIX_OLLAMA_COMPATIBLE | false | Aplicar semántica de razonamiento de Ollama a un endpoint personalizado en un puerto no estándar. El puerto 11434 se detecta automáticamente. |
XALGORIX_LLM_MAX_RETRIES | 5 | Número de reintentos para fallos transitorios de LLM. |
XALGORIX_MEMORY_COMPRESSOR_TIMEOUT | 30 | Tiempo de espera en segundos para la compresión de contexto. |
XALGORIX_MAX_ITERATIONS | 0 | Límite de iteraciones del agente. 0 significa ilimitado. |
XALGORIX_PPROF_ADDR | ninguno | Perfilador Go opcional. Cuando se establece (p. ej., 127.0.0.1:6060), inicia un servidor pprof independiente en /debug/pprof/ en esa dirección para diagnóstico de CPU/memoria. Deshabilitado por defecto. Expone internos del proceso — enlaza a bucle local y accede a él mediante un túnel SSH; nunca lo expongas públicamente. |
GEMINI_API_KEY | ninguno | Clave Gemini opcional para enriquecimiento de búsqueda web. |
🔒 Web y Seguridad
| Variable | Predeterminado | Descripción |
|---|---|---|
XALGORIX_BIND | 127.0.0.1 | Dirección de escucha del servidor web. |
XALGORIX_ALLOW_LOCAL_TARGETS | false | Permitir escanear aplicaciones alojadas localmente (localhost / 127.0.0.1 / IPs privadas) en una instalación autoalojada. El propio listener del panel siempre está protegido. Déjalo desactivado en implementaciones compartidas/alojadas. |
XALGORIX_USERNAME | ninguno | Nombre de usuario del panel. |
XALGORIX_PASSWORD | ninguno | Contraseña del panel. |
XALGORIX_PASSWORD_HASH | ninguno | Hash de contraseña bcrypt preferido. |
XALGORIX_WORKSPACE | directorio actual | Raíz del espacio de trabajo para la ejecución de escaneos. |
🤝 Integraciones
| Variable | Predeterminado | Descripción |
|---|---|---|
AGENTMAIL_POD | ninguno | Identificador del pod de AgentMail. |
AGENTMAIL_API_KEY | ninguno | Clave de API de AgentMail. |
XALGORIX_DISCORD_WEBHOOK | ninguno | Webhook global de Discord. |
XALGORIX_DISCORD_MIN_SEVERITY | ninguno | Severidad mínima enviada a Discord. |
XALGORIX_TELEGRAM_BOT_TOKEN | ninguno | Token de bot de Telegram de @BotFather. |
XALGORIX_TELEGRAM_CHAT_ID | ninguno | ID de chat/canal de Telegram (numérico o @nombredeusuario). |
XALGORIX_TELEGRAM_MIN_SEVERITY | ninguno | Severidad mínima enviada a Telegram. |
CAIDO_PORT | 0 | Puerto del proxy Caido. 0 significa detección automática. |
CAIDO_API_TOKEN | ninguno | Token de API de Caido. |
🚦 Límites de Tasa, Proxy y Tiempo de Ejecución
| Variable | Predeterminado | Descripción |
|---|---|---|
XALGORIX_RATE_LIMIT_REQUESTS | 60 | Solicitudes del panel por ventana. |
XALGORIX_RATE_LIMIT_WINDOW | 60 | Ventana de límite de tasa del panel en segundos. |
XALGORIX_RATE_RPS | 10 | Tasa sostenida de solicitudes salientes. |
XALGORIX_RATE_BURST | 20 | Tamaño de ráfaga saliente. |
XALGORIX_USE_PROXY | false | Habilitar enrutamiento de proxy. |
XALGORIX_PROXY_URL | ninguno | URL de proxy única. Anula el archivo de proxy. |
XALGORIX_PROXY_FILE | ninguno | Archivo que contiene un proxy por línea. |
XALGORIX_PROXY_ROTATION | roundrobin | Estrategia de rotación de proxy: roundrobin o random. |
XALGORIX_TLS_SKIP_VERIFY | false | Omitir verificación TLS para tráfico de pruebas. |
XALGORIX_DISABLE_BROWSER | false | Deshabilitar automatización del navegador. |
XALGORIX_BROWSER_PATH | automático | Ruta personalizada del ejecutable de Chrome/Chromium. |
XALGORIX_ALLOW_AUTO_INSTALL | solo root | Permitir instalación automática de paquetes. |
XALGORIX_AUTO_INSTALL_SUDO | false | Permitir instalaciones automáticas con prefijo sudo. |
🔤 Prefijos de Proveedor
Cuando XALGORIX_API_BASE está vacío, Xalgorix infiere los valores predeterminados del proveedor a partir del prefijo del modelo.
| Prefijo | Base de API predeterminada |
|---|---|
openai/ | https://api.openai.com/v1 |
anthropic/ | https://api.anthropic.com |
deepseek/ | https://api.deepseek.com/v1 |
groq/ | https://api.groq.com/openai/v1 |
google/ | https://generativelanguage.googleapis.com/v1 |
gemini/ | https://generativelanguage.googleapis.com/v1 |
ollama/ | http://localhost:11434/v1 |
minimax/ | https://api.minimax.io/v1 |
Los nombres de modelos no están codificados en esta lista. La página de Configuración acepta IDs de modelos escritos para que los modelos más nuevos del proveedor puedan usarse sin esperar una actualización del menú desplegable de la interfaz.
💻 Referencia de CLI
| Bandera | Alias | Descripción |
|---|---|---|
--web | -w | Iniciar la interfaz web. |
--port <port> | -p | Puerto de la interfaz web. Predeterminado: 9137. |
--bind <addr> | ninguno | Dirección de enlace. Predeterminado: 127.0.0.1. |
--target <target> | -t | URL, host, IP o ruta del objetivo. Repetible. |
--instruction <text> | -i | Instrucciones de escaneo personalizadas. |
--model <model> | -m | Anular XALGORIX_LLM para esta ejecución. |
--update | -up | Actualizar a la última versión. |
--version | -v | Imprimir versión. |
--start | ninguno | Instalar e iniciar el servicio del sistema. |
--stop | ninguno | Detener el servicio del sistema. |
--restart | ninguno | Reiniciar el servicio del sistema. |
--uninstall | ninguno | Eliminar el servicio del sistema. |
--help | -h | Mostrar ayuda. |
📡 Resumen de API
| Método | Endpoint | Propósito |
|---|---|---|
POST | /api/scan | Iniciar o guardar un escaneo. |
POST | /api/stop | Detener todos los escaneos en ejecución. |
GET | /api/status | Estado global actual. |
GET | /api/scans | Listar escaneos. |
GET | /api/scans/:id | Obtener detalle del escaneo. |
DELETE | /api/scans/:id | Eliminar un escaneo y sus datos de informe. |
GET | /api/findings | Listar todos los hallazgos (deduplicados entre escaneos). |
GET | /api/findings/summary | Recuento de severidad en todos los escaneos. |
GET | /api/report/:id | Descargar un informe PDF. |
GET | /api/instances | Listar instancias en vivo e históricas. |
GET | /api/instances/:id/events | Obtener historial de eventos almacenados en búfer. |
POST | /api/instances/:id/stop | Detener una instancia específica. |
POST | /api/instances/:id/start | Iniciar un escaneo guardado o completado como una nueva ejecución. |
POST | /api/instances/:id/restart | Reiniciar con la misma configuración. |
POST | /api/instances/:id/pause | Pausar un escaneo en ejecución. |
POST | /api/instances/:id/resume | Reanudar un escaneo pausado. |
POST | /api/upload-logo | Subir un logotipo de informe. |
POST | /api/upload-targets | Subir una lista de objetivos. |
GET | /api/settings/environment | Listar ajustes de entorno editables. |
POST | /api/settings/environment | Guardar ajustes de entorno. |
GET | /api/settings/llm | Obtener ajustes de LLM. |
POST | /api/settings/llm | Guardar ajustes de LLM. |
GET | /api/settings/agentmail | Obtener ajustes de AgentMail. |
POST | /api/settings/agentmail | Guardar ajustes de AgentMail. |
GET | /ws | Flujo de eventos en vivo por WebSocket. |
💾 Almacenamiento de Datos
Los datos de escaneo en modo web se almacenan en:```text
~/xalgorix-data/
|-- _saved/
|-- logos/
|-- queue_state.json
-- <target>/ -- /
-- <scan-id>/ |-- scan.json -- report.pdf
El servidor mantiene registros históricos de escaneos en disco para que la interfaz pueda recuperarse tras una actualización o reinicio.
## 🧪 Desarrollo
| Tarea | Comando |
| --------------------------- | ----------------------------- |
| 📦 Instalar dependencias de la interfaz web | `make webui-install` |
| 🔨 Compilar todo | `make build` |
| ✅ Ejecutar pruebas | `go test ./...` |
| 🖥️ Ejecutar la interfaz web desde el código fuente | `go run ./cmd/xalgorix --web` |
| ⚡ Ejecutar el servidor de desarrollo del frontend | `make webui-dev` |
## 🚨 Notas de seguridad
- Utilice Xalgorix únicamente contra objetivos autorizados.
- No realice pruebas activas contra sistemas de terceros sin permiso.
- Revise las instrucciones de escaneo antes de iniciar.
- Configure los límites de velocidad y la configuración de proxy para cumplir con las reglas del compromiso.
- Exponer el panel de control externamente requiere autenticación.
- La instalación automática está deshabilitada por defecto para usuarios no root y debe habilitarse solo cuando confíe en el entorno.
## 📜 Licencia
Xalgorix se publica bajo la Licencia Apache 2.0. Consulte [LICENSE](https://github.com/xalgord/xalgorix/blob/main/LICENSE).
## 🔗 Enlaces
| Recurso | Enlace |
| ------------- | -------------------------------------------------------------------------------- |
| ☁️ Alojado (Nube) | [www.xalgorix.com](https://www.xalgorix.com/) |
| 📖 Documentación | [docs.xalgorix.com](https://docs.xalgorix.com) |
| 🐛 Problemas | [github.com/xalgorix/xalgorix/issues](https://github.com/xalgorix/xalgorix/issues) |
| ☕ Soporte | [buymeacoffee.com/xalgord](https://buymeacoffee.com/xalgord) |


