Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ats-jsonrpc-unrestricted — Apache Traffic Server 10.2.0 - Élevé - Local - Résidu de privilèges - Socket unix JSON-RPC en mode non restreint 0777 | Kitploit
Outils/GitHubGitHub/abraxas/ats-jsonrpc-unrestricted
Escalade de PrivilègesAnalyse des VulnérabilitésCollecte d'InformationsMauvaise ConfigurationLabs et Pratique
GitHubabraxas/ats-jsonrpc-unrestricted

ats-jsonrpc-unrestricted

Apache Traffic Server 10.2.0 - Élevé - Local - Résidu de privilèges - Socket unix JSON-RPC en mode non restreint 0777

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
il y a 14 joursPas encore vérifié

Abraxas Labs - ats-jsonrpc-unrestricted

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

ats-jsonrpc-unrestricted

Classe : Privilège résiduel (reconnaissance) Portée : Locale

Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation

Le socket unix JSON-RPC est par défaut à restricted_api false. Le fichier jsonrpc.yaml livré ne contient que des commentaires, donc l'initialiseur C++ l'emporte. Le mode de bind SO_PEERCRED sous Linux est 0777. Tout uid local capable d'atteindre l'inode du rundir se connecte sans jeton et extrait les enregistrements actifs (y compris les chemins de clés SSL) ainsi que les 5-uplets du connection-tracker. Les écritures restent protégées par SO_PEERCRED (euid == 0 ou euid d'ATS). Le tableau de la documentation indique true / 0700 ; le code et l'exemple commenté indiquent false / 0777.

Il ne s'agit pas de CVE-2026-58159 (ACL du listener UDS HTTP). Il n'y a pas de JSON-RPC TCP/HTTP. Le chargement de plugins et l'écriture de configuration restent refusés pour un uid étranger.

IDpas encore de CVE
ClassePrivilège résiduel (reconnaissance)
PortéeLocale (uid non privilégié sur l'hôte ATS)
CWECWE-276, CWE-284
CVSSÉlevé : 7.1 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
ProduitApache Traffic Server
Affecté10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) unix JSON-RPC par défaut
Authaucune sur les méthodes non restreintes. Accès au système de fichiers local du rundir.
LicenceGNU Affero GPL v3.0
Lab127.0.0.1:18720 uniquement. Image ats-10.2.0-lab:local.

J'ai épinglé le tag 10.2.0, commit b1df7334b39a878971c376da849e8da4984918b6. Image construite depuis les sources.

Ce qu'un attaquant peut faire

Uid local sur l'hôte ATS (pas root, pas l'euid d'ATS). RPC activé. JSON-RPC unix activé. Rundir typique 0755 appartenant à ATS. Socket $RUNTIMEDIR/jsonrpc20.sock.

MéthodeCiblePrivilège
admin_lookup_records en tant qu'uid 10000 sur jsonrpc20.sock en 0777JSON-RPC non restreint (RpcAdminPubHandlers.cc)Reconnaissance (prouvé en lab) : proxy.config.proxy_name=ATS-JSONRPC-UNRESTRICTED-WITNESS actif, chemins de clés SSL etc/trafficserver, proxy.config.admin.user_id=nobody. Les octets des clés ne figurent pas dans les enregistrements.
get_connection_tracker_infomême socketReconnaissance (prouvé en lab) : tables de tracker entrant/sortant (vides sans charge).
get_server_status, admin_host_get_status, admin_storage_get_device_status, filemanager.get_files_registrymême bit non restreintReconnaissance (déduit) : état de drain, markdown d'hôte, chemins de disques de cache, chemins de configuration absolus.
admin_config_set_records en tant qu'uid 10000restreint par SO_PEERCREDIntégrité : fermée (prouvé en lab). Erreur JSON-RPC 10 Unauthorized, Denied privileged API access for uid=10000. Enregistrement témoin inchangé.
drain / vidage de cache / mise hors ligne du stockageméthodes restreintesDisponibilité : fermée pour un uid étranger (source).

Prouvé en lab vs déduit : socket 0777, lookup par uid 10000 de proxy_name / chemins de clés SSL, tables de tracker, écriture refusée, absence de JSON-RPC TCP : lab. Autres méthodes de lecture non restreintes : déduites du même contrôle.

Nécessite : un uid local sur l'hôte ATS. JSON-RPC unix activé (par défaut). SO_PEERCRED sous Linux pour que le bind non restreint soit en 0777. Rundir accessible (typiquement 0755).

Surface adjacente qui reste fermée

SurfaceLab
admin_config_set_records en tant qu'uid 10000Non autorisé ; enregistrement témoin inchangé
TCP / HTTP JSON-RPCabsent ; HTTP 8080 / 18080 uniquement
Chargement de plugin .so via RPCSO_PEERCRED
traffic_ctl de même uidadmin prévu
umask+bind atomique quand restricted_api est vrai0700, correctif CHANGELOG maintenu
ACL du listener HTTP UDS CVE-2026-58159pas ce socket

Comment je l'ai trouvé

RPC est actif sauf si rpc.enabled: false. Seul CommType::UNIX existe. Le fichier jsonrpc.yaml.default fourni ne contient que des commentaires. Le décodage YAML n'écrit restrictedAccessApi que lorsque la clé est présente. Sinon :

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

NON_RESTRICTED_API vaut false (IPCSocketServer.h:128-129). Le commentaire indique que 0700 est la valeur par défaut. L'initialiseur est la constante non restreinte.

Bind (IPCSocketServer.cc:310-342) : restricted_api à false plus SO_PEERCRED -> mode 0777. La dernière phrase du tableau de la documentation indique true par défaut. Le code et l'exemple commenté suivent false.

Fausses pistes : considérer le true de la documentation comme la valeur par défaut ; qualifier cela de RCE (écritures refusées) ; considérer que CVE-2026-58159 couvre le JSON-RPC de mgmt ; chercher un reliquat TCP de l'ancien XMLRPC de traffic_manager.

Mise en scène : une écriture en uid 10000. L'oracle est un proxy_name implanté plus des chaînes de chemin de clé SSL, puis un ensemble refusé.

Lab

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

ou

cd lab
./run.sh

Loopback 127.0.0.1:18720. Projet Compose ats-jsonrpc-unrestricted. Image ats-10.2.0-lab:local. uid du labo 10000. Mode du socket 0777. Témoin ATS-JSONRPC-UNRESTRICTED-WITNESS. Dernière ligne :

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

Le correctif

Définir restricted_api sur true par défaut et lier en 0700, conformément au tableau de la documentation. Aligner l'exemple commenté de jsonrpc.yaml. Maintenir les lectures non restreintes derrière une activation explicite. Les écritures nécessitent déjà SO_PEERCRED ; ne pas les ouvrir.

Références

Télécharger l’outil