
🫖 PoC de validación de RCE directa de un solo objetivo para Gitea CVE-2026-60004
Una herramienta de validación directa y de objetivo único para la vulnerabilidad de ejecución remota de código en el Git-hook
diffpatchde Gitea.
Este repositorio contiene el validador AfterDark enfocado: un script, un objetivo, una ejecución. No hay subcomandos de descubrimiento, reconocimiento, verificación u otros.
Este proyecto se proporciona solo para pruebas de seguridad autorizadas, validación defensiva, investigación y educación. Úselo exclusivamente en sistemas que posea o para los cuales tenga permiso escrito explícito de evaluación.
Los autores y colaboradores no son responsables por uso indebido, daños, interrupción del servicio, pérdida de datos o consecuencias legales. Usted es responsable de cumplir con las leyes, contratos, reglas de participación y requisitos de divulgación aplicables.
Este es un PoC activo de RCE. Crea una cuenta, crea un repositorio privado, escribe un marcador de contrato y ejecuta un comando como el usuario del sistema operativo de Gitea. Trátelo en consecuencia. 🛡️
CVE-2026-60004 afecta el flujo de trabajo diffpatch del repositorio de Gitea. Un atacante con acceso de escritura al repositorio puede enviar contenido de parche controlado que instala y activa un hook de Git, lo que resulta en la ejecución de comandos como la cuenta de servicio de Gitea.
| Elemento | Detalle |
|---|---|
| Producto | Gitea |
| Versiones afectadas | >= 1.17.0, < 1.27.1 |
| Versión parcheada | 1.27.1 |
| Impacto | Ejecución remota de comandos como el usuario del SO de Gitea |
| Aviso upstream | GHSA-rcr6-4jqh-j84m |
Forgejo y otros forks requieren revisión manual de implementación y no se tratan automáticamente como afectados.
Cada ejecución realiza un flujo de trabajo fijo:
post-index-change manipulado a través de diffpatch.id por defecto.La herramienta acepta solo un único objetivo. No tiene modo de lista de objetivos, comodines, escaneo masivo o descubrimiento pasivo.
PATHEl script usa solo la biblioteca estándar de Python. No se requiere pip install.
git clone https://github.com/InfoSec-DB/CVE-2026-60004-Gitea-RCE-PoC.git
cd CVE-2026-60004-Gitea-RCE-PoC
python3 scanner.py --help
python3 scanner.py \
--contract-number ENG-2026-001 \
--username audit-eng-2026-001 \
--password 'use-a-unique-disposable-password' \
https://gitea.example
También hay opciones cortas disponibles:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
https://gitea.example
🚨 La contraseña se proporciona en la línea de comandos y se muestra en el panel de resultados final. Use solo una credencial de prueba desechable única. Tenga en cuenta que los argumentos de la línea de comandos pueden conservarse en el historial del shell o ser visibles temporalmente para herramientas locales de inspección de procesos.
El comando predeterminado es id. Se puede proporcionar un comando personalizado de alcance limitado con --cmd:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--cmd 'uname -a' \
https://gitea.example
Los comandos personalizados intencionalmente no tienen tiempo de espera. El validador espera hasta que el comando remoto termine, así que evite comandos interactivos o de larga duración a menos que el compromiso lo requiera específicamente.
Por defecto, cada ejecución escribe en:
afterdark-results/<contract>/<UTC timestamp>/
Puede seleccionar una raíz diferente o un directorio de ejecución exacto:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--results-root ./engagement-evidence \
https://gitea.example
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--output-dir ./engagement-evidence/run-01 \
https://gitea.example
Cada ejecución crea archivos privados 0600 y se niega a sobrescribir resultados existentes:
confirmation.json — objetivo, resultado de versión, nombre de cuenta, marcas de tiempo, comando, código de retorno y artefactos capturadosconfirmation.command-output.txt — salida completa del comando remotoLa evidencia puede contener información sensible del compromiso. No la confirme en Git. El .gitignore incluido excluye las rutas de resultados predeterminadas y los nombres de archivo de evidencia comunes.
El validador no elimina automáticamente los artefactos del lado del servidor. Después de la evaluación, un administrador autorizado debe:
afterdark-*/tmp/gitea-validation-<contract>/client.txt1.27.1 o posteriorUn resultado exitoso prueba la ejecución de comandos como la cuenta de servicio de Gitea. No prueba por sí mismo acceso root, persistencia, movimiento lateral o compromiso completo del host.
idLas pruebas ejercitan el análisis y la construcción del PoC sin realizar solicitudes de red:
python3 -m unittest discover -s tests -v
Se aceptan mejoras que hagan que el validador sea más seguro, más confiable o más fácil de limpiar. No envíe detalles de objetivos reales, credenciales, evidencia privada o cargas destructivas.
Para vulnerabilidades en esta herramienta, siga SECURITY.md.
Construido para una validación de seguridad cuidadosa y vinculada a contrato. 🫖🛡️