Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
ats-jsonrpc-unrestricted — Apache Traffic Server 10.2.0 - Alta - Local - Privilegio residual - JSON-RPC unix socket modo sin restricciones 0777 | Kitploit
Herramientas/GitHubGitHub/abraxas/ats-jsonrpc-unrestricted
Escalada de PrivilegiosAnálisis de VulnerabilidadesRecopilación de InformaciónMala ConfiguraciónLabs y Práctica
GitHubabraxas/ats-jsonrpc-unrestricted

ats-jsonrpc-unrestricted

Apache Traffic Server 10.2.0 - Alta - Local - Privilegio residual - JSON-RPC unix socket modo sin restricciones 0777

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
Ver Repositorio
hace 14 díasAún no revisado

Abraxas Labs - ats-jsonrpc-unrestricted

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  ats-jsonrpc-unrestricted

ats-jsonrpc-unrestricted

Clase: Privilegio residual (recon) Alcance: Local

Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation

El socket unix JSON-RPC tiene por defecto restricted_api en false. El jsonrpc.yaml distribuido contiene solo comentarios, por lo que prevalece el inicializador en C++. El modo de enlace SO_PEERCRED en Linux es 0777. Cualquier uid local que pueda alcanzar el inodo del rundir se conecta sin token y vuelca registros en vivo (incluidas las rutas de claves SSL) además de las 5-tuplas del rastreador de conexiones. Las escrituras permanecen protegidas por SO_PEERCRED (euid == 0 o el euid de ATS). La tabla de la documentación indica true / 0700; el código y el ejemplo comentado indican false / 0777.

Esto no es CVE-2026-58159 (ACL del listener HTTP UDS). No existe JSON-RPC por TCP/HTTP. La carga de plugins y la escritura de configuración siguen denegadas para un uid ajeno.

IDaún sin CVE
ClasePrivilegio residual (recon)
AlcanceLocal (uid sin privilegios en el host de ATS)
CWECWE-276, CWE-284
CVSSAlta: 7.1 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
ProductoApache Traffic Server
Afectado10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) unix JSON-RPC por defecto
Autenticaciónninguna en los métodos sin restricción. Alcance local del sistema de archivos al rundir.
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1:18720. Imagen ats-10.2.0-lab:local.

Fijé la etiqueta 10.2.0, commit b1df7334b39a878971c376da849e8da4984918b6. Imagen compilada desde el código fuente.

Qué puede hacer un atacante

Uid local en el host de ATS (no root, no el euid de ATS). RPC habilitado. JSON-RPC unix activado. Rundir típico 0755 propiedad de ATS. Socket $RUNTIMEDIR/jsonrpc20.sock.

MétodoDestinoPrivilegio
admin_lookup_records como uid 10000 sobre jsonrpc20.sock con 0777JSON-RPC sin restricción (RpcAdminPubHandlers.cc)Recon (probado en laboratorio): proxy.config.proxy_name=ATS-JSONRPC-UNRESTRICTED-WITNESS en vivo, rutas de claves SSL etc/trafficserver, proxy.config.admin.user_id=nobody. Los bytes de las claves no están en los registros.
get_connection_tracker_infomismo socketRecon (probado en laboratorio): tablas del rastreador de entrada/salida (vacías sin carga).
get_server_status, admin_host_get_status, admin_storage_get_device_status, filemanager.get_files_registrymismo bit sin restricciónRecon (inferido): estado de drenaje, markdown del host, rutas de disco de caché, rutas de configuración absolutas.
admin_config_set_records como uid 10000restringido por SO_PEERCREDIntegridad: cerrado (probado en laboratorio). Error 10 Unauthorized de JSON-RPC, Denied privileged API access for uid=10000. Registro testigo sin cambios.
drenaje / limpieza de caché / almacenamiento offlinemétodos restringidosDisponibilidad: cerrado para un uid ajeno (código fuente).

Probado en laboratorio vs inferido: socket 0777, consulta por uid 10000 de proxy_name / rutas de claves SSL, tablas del rastreador, escritura denegada, ausencia de JSON-RPC por TCP: laboratorio. Otros métodos de lectura sin restricción: inferidos a partir de la misma puerta.

Requiere: uid local en el host de ATS. JSON-RPC unix activado (por defecto). SO_PEERCRED en Linux para que el enlace sin restricción sea 0777. Rundir accesible (típicamente 0755).

Superficie adyacente que permanece cerrada

SuperficieLaboratorio
admin_config_set_records como uid 10000No autorizado; registro testigo sin cambios
TCP / HTTP JSON-RPCausente; solo HTTP 8080 / 18080
Carga de plugin .so vía RPCSO_PEERCRED
traffic_ctl con el mismo uidadmin previsto
umask+bind atómico cuando restricted_api es true0700, corrección de CHANGELOG mantenida
ACL del listener HTTP UDS de CVE-2026-58159no es este socket

Cómo lo encontré

RPC está activado a menos que rpc.enabled: false. Solo existe CommType::UNIX. El jsonrpc.yaml.default incluido contiene únicamente comentarios. La decodificación YAML solo escribe restrictedAccessApi cuando la clave está presente. En caso contrario:

bool restrictedAccessApi{
  NON_RESTRICTED_API}; // ... 0700(default) or 0777

NON_RESTRICTED_API es false (IPCSocketServer.h:128-129). El comentario dice que 0700 es el valor predeterminado. El inicializador es la constante sin restricciones.

Bind (IPCSocketServer.cc:310-342): restricted_api false más SO_PEERCRED -> modo 0777. La última frase de la tabla de la documentación dice true por defecto. El código y el ejemplo comentado siguen false.

Caminos equivocados: tratar el true de la documentación como el valor predeterminado; llamar a esto RCE (escrituras denegadas); tratar CVE-2026-58159 como si cubriera el JSON-RPC de mgmt; buscar un remanente TCP del antiguo XMLRPC de traffic_manager.

Teatro: una escritura como uid 10000. El oráculo es un proxy_name plantado más cadenas de ruta de clave SSL, luego un conjunto denegado.

Laboratorio

python3 ats-jsonrpc-unrestricted-Abraxas-Labs.py

o

cd lab
./run.sh

Loopback 127.0.0.1:18720. Proyecto de Compose ats-jsonrpc-unrestricted. Imagen ats-10.2.0-lab:local. Uid del laboratorio 10000. Modo del socket 0777. Testigo ATS-JSONRPC-UNRESTRICTED-WITNESS. Última línea:

SUCCESS ats-jsonrpc-unrestricted how=uds-0777-unrestricted-jsonrpc uid=10000 sock-mode=0777 lookup-proxy_name=ATS-JSONRPC-UNRESTRICTED-WITNESS ssl-key-path=etc/trafficserver tracker=ok write=unauthorized tcp-jsonrpc=absent ATS-JSONRPC-UNRESTRICTED-WITNESS

La solución

Establecer restricted_api en true por defecto y enlazar con 0700, coincidiendo con la tabla de la documentación. Alinear el ejemplo comentado de jsonrpc.yaml. Mantener las lecturas sin restricciones detrás de una habilitación explícita. Las escrituras ya requieren SO_PEERCRED; no abrirlas.

Referencias

Descargar herramienta