Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
ats-jsonrpc-unrestricted — Apache Traffic Server 10.2.0 - Alta - Locale - Privilegi residui - Socket unix JSON-RPC in modalità non limitata 0777 | Kitploit
Strumenti/GitHubGitHub/abraxas/ats-jsonrpc-unrestricted
Escalation di PrivilegiAnalisi delle VulnerabilitàRaccolta InformazioniConfigurazione ErrataLab e Pratica
GitHubabraxas/ats-jsonrpc-unrestricted

ats-jsonrpc-unrestricted

Apache Traffic Server 10.2.0 - Alta - Locale - Privilegi residui - Socket unix JSON-RPC in modalità non limitata 0777

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
14 giorni faNon ancora revisionato

Abraxas Labs - ats-jsonrpc-unrestricted

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

ats-jsonrpc-unrestricted

Classe: Privilegio residuo (ricognizione) Portata: Locale

Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation

Il socket unix JSON-RPC ha come valore predefinito restricted_api false. Il file jsonrpc.yaml distribuito contiene solo commenti, quindi vince l'inizializzatore C++. La modalità di bind SO_PEERCRED su Linux è 0777. Qualsiasi uid locale in grado di raggiungere l'inode della rundir si connette senza token ed estrae i record attivi (inclusi i percorsi delle chiavi SSL) oltre alle 5-tuple del connection-tracker. Le scritture restano protette da SO_PEERCRED (euid == 0 o euid di ATS). La tabella della documentazione indica true / 0700; il codice e l'esempio commentato indicano false / 0777.

Questa non è la CVE-2026-58159 (ACL del listener UDS HTTP). Non esiste JSON-RPC su TCP/HTTP. Il caricamento di plugin e la scrittura della configurazione restano negati per un uid estraneo.

IDnessuna CVE al momento
ClassePrivilegio residuo (ricognizione)
PortataLocale (uid non privilegiato sull'host ATS)
CWECWE-276, CWE-284
CVSSAlto: 7.1 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
ProdottoApache Traffic Server
Affetto10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) unix JSON-RPC predefinito
Autenticazionenessuna sui metodi non limitati. Raggiungibilità della rundir tramite filesystem locale.
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:18720. Immagine ats-10.2.0-lab:local.

Ho fissato il tag 10.2.0, commit b1df7334b39a878971c376da849e8da4984918b6. Immagine compilata dai sorgenti.

Cosa può fare un attaccante

Uid locale sull'host ATS (non root, non l'euid di ATS). RPC abilitato. JSON-RPC unix attivo. Rundir tipica 0755 di proprietà di ATS. Socket $RUNTIMEDIR/jsonrpc20.sock.

MetodoSinkPrivilegio
admin_lookup_records come uid 10000 su jsonrpc20.sock con permessi 0777JSON-RPC non limitato (RpcAdminPubHandlers.cc)Ricognizione (dimostrata in lab): proxy.config.proxy_name=ATS-JSONRPC-UNRESTRICTED-WITNESS attivo, percorsi delle chiavi SSL etc/trafficserver, proxy.config.admin.user_id=nobody. I byte delle chiavi non sono nei record.
get_connection_tracker_infostesso socketRicognizione (dimostrata in lab): tabelle del tracker in ingresso/uscita (vuote in assenza di carico).
get_server_status, admin_host_get_status, admin_storage_get_device_status, filemanager.get_files_registrystesso bit non limitatoRicognizione (dedotta): stato di drain, markdown dell'host, percorsi dei dischi cache, percorsi assoluti della configurazione.
admin_config_set_records come uid 10000SO_PEERCRED limitatoIntegrità: chiusa (dimostrata in lab). Errore JSON-RPC 10 Unauthorized, Denied privileged API access for uid=10000. Record di controllo invariato.
drain / svuotamento cache / storage offlinemetodi limitatiDisponibilità: chiusa per un uid estraneo (sorgente).

Dimostrato in lab vs dedotto: socket 0777, lookup di proxy_name / percorsi delle chiavi SSL da parte dell'uid 10000, tabelle del tracker, scrittura negata, assenza di JSON-RPC su TCP: lab. Altri metodi di lettura non limitati: dedotti dallo stesso gate.

Requisiti: uid locale sull'host ATS. JSON-RPC unix attivo (predefinito). SO_PEERCRED su Linux affinché il bind non limitato sia 0777. Rundir raggiungibile (tipicamente 0755).

Superficie adiacente che resta chiusa

SuperficieLab
admin_config_set_records come uid 10000Non autorizzato; record testimone invariato
TCP / HTTP JSON-RPCassente; solo HTTP 8080 / 18080
Caricamento plugin .so via RPCSO_PEERCRED
traffic_ctl con stesso uidadmin previsto
umask+bind atomico quando restricted_api è true0700, correzione CHANGELOG mantenuta
ACL del listener HTTP UDS CVE-2026-58159non questo socket

Come l'ho trovato

RPC è attivo a meno che rpc.enabled: false. Esiste solo CommType::UNIX. Il file jsonrpc.yaml.default fornito contiene solo commenti. La decodifica YAML scrive restrictedAccessApi solo quando la chiave è presente. Altrimenti:

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

NON_RESTRICTED_API è false (IPCSocketServer.h:128-129). Il commento dice che 0700 è il valore predefinito. L'inizializzatore è la costante unrestricted.

Bind (IPCSocketServer.cc:310-342): restricted_api false più SO_PEERCRED -> modalità 0777. L'ultima frase della tabella della documentazione dice true per impostazione predefinita. Il codice e l'esempio commentato seguono false.

Vicoli ciechi: considerare true della documentazione come valore predefinito; definire questo RCE (scritture negate); ritenere che CVE-2026-58159 copra il JSON-RPC di mgmt; cercare un residuo TCP del vecchio XMLRPC di traffic_manager.

Scenario: una scrittura come uid 10000. L'oracolo è un proxy_name inserito più stringhe di percorso della chiave SSL, poi un set negato.

Lab

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

o

cd lab
./run.sh

Loopback 127.0.0.1:18720. Progetto Compose ats-jsonrpc-unrestricted. Immagine ats-10.2.0-lab:local. UID del lab 10000. Modalità socket 0777. Witness ATS-JSONRPC-UNRESTRICTED-WITNESS. Ultima riga:

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 correzione

Impostare restricted_api su true per impostazione predefinita e associare 0700, in linea con la tabella della documentazione. Allineare l'esempio commentato di jsonrpc.yaml. Mantenere le letture non limitate dietro un opt-in esplicito. Le scritture richiedono già SO_PEERCRED; non aprirle.

Riferimenti

Scarica lo strumento