Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-60876 | Kitploit
Herramientas/GitHubGitHub/sirredbeard/cve-2025-60876
Análisis EstáticoAnálisis de VulnerabilidadesExplotaciónSeguridad WebFuzzingPruebas de PenetraciónArchived
GitHubsirredbeard/cve-2025-60876

CVE-2025-60876

Ver Repositorio
1hace 2 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2025-60876: corrección de inyección en request-target de busybox wget

Una corrección que preserva el comportamiento para CVE-2025-60876, una vulnerabilidad de inyección de cabeceras HTTP en BusyBox wget, junto con la prueba de concepto que la demuestra y los artefactos para enviar la corrección al proyecto upstream de BusyBox.

La vulnerabilidad

BusyBox wget copia la ruta y la consulta de la URL en la línea de solicitud HTTP textualmente. Una URL que contenga un CR sin codificar (0x0D), LF (0x0A) u otro byte de control puede dividir la línea de solicitud e inyectar cabeceras controladas por el atacante. Un espacio (0x20) tiene el mismo efecto: rompe el encuadre METHOD SP request-target SP HTTP/1.1.

Afectados: BusyBox hasta 1.37.0 (el pkgver incluido en todas las ramas de Alpine con soporte). Reportado en la lista de correo de BusyBox en agosto de 2025; se asignó el CVE como CVE-2025-60876 (NVD CVSS 6.5, Media).

La corrección

Ya se habían propuesto dos parches upstream (Takeuchi Yuma, 2025-08; Radoslav Kolev, 2025-11). Ambos rechazan una URL problemática y llaman a bb_error_msg_and_die. Eso detiene la inyección, pero también rechaza un espacio normal, de modo que una URL como http://example.org/foo bar que antes funcionaba ahora produce error. Esa regresión es la razón por la que la corrección no se ha incorporado en los derivados (downstream). Alpine está reteniendo su backport por este motivo (elemento de trabajo 17872).

Esta corrección trata la ruta y el host de manera diferente, igual que hacen GNU wget y curl.

Ruta: percent_encode_target() en networking/wget.c codifica en porcentaje los bytes de control (0x00 a 0x1f), el espacio (0x20) y DEL (0x7f) en el request-target antes de que se construya la línea de solicitud:

  • CR y LF ya no pueden llegar a la línea de solicitud, por lo que la inyección queda cerrada.
  • http://example.org/foo bar se envía como /foo%20bar, igual que GNU wget y curl. Sin regresión.
  • Un % existente se deja igual, de modo que una ruta ya codificada no se codifica dos veces.

Host: los mismos bytes se rechazan en el host de la URL. Un nombre de host no puede contener legítimamente caracteres de control ni espacios, y la codificación en porcentaje no está definida para el componente de autoridad. Esto importa en modo proxy: el host se coloca en el request-target en forma absoluta (GET http://host/path) y en la cabecera Host:, pero no se resuelve localmente, por lo que un CR o LF sin codificar en el host permitiría la inyección de otro modo. GNU wget (desde CVE-2017-6508) y curl también rechazan caracteres de control en el host.

El cambio se limita a networking/wget.c y añade una función auxiliar.

Fuera de alcance: el canal de control FTP (ftpcmd envía target->path y el usuario/contraseña sin codificar, un TODO reconocido por upstream) es una clase de inyección aparte, no forma parte de CVE-2025-60876, y no se aborda aquí. Debería registrarse por separado.

Validación

Compilado contra BusyBox 1.37.0 con la misma configuración que usa Alpine (CONFIG_WERROR y CONFIG_TC desactivados). Un listener local captura los bytes exactos que wget envía por la red.

Captura completa: test/poc-output.txt. Las cuatro pruebas de BusyBox testsuite/wget pasan todas con la compilación parcheada (test/testsuite-output.txt); el resto de fallos de la suite completa indicados allí no están relacionados (mount/taskset requieren root, y algunas peculiaridades conocidas de contenedores restringidos). El impacto de tamaño en aarch64 defconfig es de +185 bytes (wget_main +142, .rodata +43, sin símbolos añadidos ni eliminados), medido con scripts/bloat-o-meter y registrado en cover-letter.txt.

Archivos

Reproducción de la prueba

test/finalize.sh se ejecuta dentro de un contenedor alpine:edge con Docker y reproduce todo (PoC, tamaño, testsuite, parche):

root@kitploit:~
docker run --rm -v "$PWD:/work" alpine:edge sh /work/test/finalize.sh

Descarga BusyBox 1.37.0, lo compila sin modificar (mostrando la inyección directamente y a través de un proxy), aplica la corrección, recompila, reproduce los casos de solicitud anteriores, ejecuta bloat-o-meter y el testsuite de wget, y escribe el parche. test/driver.sh es una variante más ligera solo con el PoC.

Envío upstream

BusyBox es un proyecto basado en lista de correo. La corrección se envía a [email protected] mediante git send-email, como respuesta [PATCH v3] en el hilo de Radoslav Kolev de noviembre de 2025, dando crédito a los informadores y revisores anteriores. Ver cover-letter.txt. La corrección es GPLv2, la misma licencia que BusyBox.

Referencias

  • CVE-2025-60876: https://www.cve.org/CVERecord?id=CVE-2025-60876
  • Lista de correo de BusyBox, Kolev v2 (2025-11): https://lists.busybox.net/pipermail/busybox/2025-November/091840.html
  • Lista de correo de BusyBox, informe y parche de Takeuchi (2025-08): https://lists.busybox.net/pipermail/busybox/2025-August/091710.html
  • Elemento de trabajo 17872 de Alpine: https://gitlab.alpinelinux.org/alpine/aports/-/work_items/17872
  • Bug de Debian #1120795: https://bugs.debian.org/1120795
Descargar herramienta
URL de entradaVanilla 1.37.0Parcheado
/x + CRLF + Evil: injectedEvil: injected llega como cabecera real (vulnerable)GET /x%0D%0AEvil:%20injected HTTP/1.1, sin cabecera inyectada
/foo barenvía un espacio literalGET /foo%20bar HTTP/1.1 (sin regresión)
/foo%20bar (ya codificada)sin cambiosGET /foo%20bar HTTP/1.1 (no %2520)
/normalsin cambiosGET /normal HTTP/1.1 (sin cambios)
proxy, host = h + CRLF + PInjected: 1PInjected: 1 llega como cabecera real (vulnerable)termina con bad character in URL host, no se envía nada
proxy, host = example.testnormalGET http://example.test/p HTTP/1.1 (sin cambios)
ArchivoDescripción
wget-cve-2025-60876.patchLa corrección como git format-patch contra networking/wget.c de BusyBox, lista para enviar
commit-message.txtEl mensaje de confirmación (también la cabecera del parche)
cover-letter.txtLa carta de presentación para la lista de correo [PATCH v3] que retoma el hilo existente
apply_fix.pyGenerador que aplica el cambio a networking/wget.c (se usa para producir el parche)
test/serve_once.pyListener de una sola conexión que devuelve la solicitud HTTP cruda
test/driver.shCompila BusyBox vanilla y parcheado y ejecuta el PoC directo + proxy antes/después
test/finalize.shEjecución completa: PoC antes/después, bloat-o-meter, testsuite/wget y regenera el parche
test/poc-output.txtBytes de solicitud capturados antes/después (directo y proxy)
test/testsuite-output.txtResultados de BusyBox testsuite/wget contra la compilación parcheada