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-ipallow-method-case — Apache Traffic Server 10.2.0 - Alta - Remoto - Privilegi residui - Maiuscole/minuscole nel metodo ip_allow | Kitploit
Strumenti/GitHubGitHub/abraxas/ats-ipallow-method-case
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebSicurezza di ReteLab e Pratica
GitHubabraxas/ats-ipallow-method-case

ats-ipallow-method-case

Apache Traffic Server 10.2.0 - Alta - Remoto - Privilegi residui - Maiuscole/minuscole nel metodo ip_allow

Vedi Repository
14 giorni faNon ancora revisionato

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

Abraxas Labs - ats-ipallow-method-case

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  ats-ipallow-method-case

ats-ipallow-method-case

Classe: Privilegio residuo Portata: Remota

Apache Traffic Server 10.2.0 (b1df7334) - Apache Software Foundation

I metodi HTTP/1 con maiuscole/minuscole miste aggirano il blocco predefinito di ip_allow.yaml per PURGE/PUSH/DELETE/TRACE e il TUNNEL verso l'origine rimappata con l'uid di ATS. Il parsing YAML e quello di @method nel remap non distinguono maiuscole e minuscole. H1 tokenizza e poi esegue strncmp sui byte della richiesta, restituendo -1 in caso di mancata corrispondenza di maiuscole/minuscole. L'inversione del deny tratta quel token sconosciuto come consentito. Il :method di HTTP/2 non distingue maiuscole e minuscole e resta bloccato. PURGE/PUSH della cache richiedono comunque un wksidx ben noto, quindi le maiuscole/minuscole miste non svuotano né inseriscono nella cache.

Questo è un residuo dell'ACL predefinita sui metodi in ingresso, non è CVE-2026-33267 (hop-by-hop) e non è l'ACL remap invertita per metodi vuoti non standard (chiusa su questo pin).

IDnessuna CVE al momento
ClassePrivilegio residuo
PortataRemota (HTTP/1 non autenticato da un client non loopback)
CWECWE-178, CWE-863
CVSSAlto: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
ProdottoApache Traffic Server
Affetto10.2.0 (b1df7334b39a878971c376da849e8da4984918b6) reverse proxy predefinito
Authnessuna. ip_allow.yaml predefinito. remap_required: 1 più una map.
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:18710. Immagine ats-10.2.0-lab:local.

Ho fissato il tag 10.2.0, commit b1df7334b39a878971c376da849e8da4984918b6. Ultima Stable 17 ago 2026. Immagine compilata dai sorgenti, non un gadget.

Cosa può fare un attaccante

Raggiungere un tipico reverse proxy (remap_required: 1 più una map) su HTTP/1 da un indirizzo non loopback. 127.0.0.1 è allow ALL. plugin.config vuoto. ip_allow.yaml predefinito.

MetodoSinkPrivilegio
HTTP/1 delete / DeLeTe dopo remap da un sidecar 172.xhdrtoken_method_tokenize poi process_quick_http_filter poi TUNNEL METHOD_NOT_SUPPORTED (HdrToken.cc:512-528, HttpTransact.cc:6855-6858)Integrità (dimostrata in lab): origine 200 DELETED ATS-IPALLOW-METHOD-CASE-WITNESS. DELETE maiuscolo è 403. Metodo sull'origine con l'uid di ATS.
HTTP/1 tracestesso TUNNELRicognizione (dimostrata in lab): origine 200 TRACE-OK. ATS non costruisce l'eco TRACE (wksidx non è TRACE). TRACE maiuscolo è 403.
HTTP/1 purge / pushTUNNEL per metodo sconosciuto, non operazione di cacheIntegrità (cache ATS): chiusa (dimostrata in lab). L'origine ha visto PURGE-ORIGIN / PUSH-ORIGIN. Le operazioni di cache richiedono un wksidx ben noto. push_method_enabled predefinito 0.
Stessa richiesta con maiuscole/minuscole misteun hop extra verso l'origineDisponibilità (dimostrata in lab): non è morte del processo.

Dimostrato in lab vs dedotto: deny maiuscolo, tunnel DELETE/TRACE con maiuscole/minuscole miste, PURGE/PUSH della cache chiusi: lab. DELETE/TRACE sull'origine solo se quell'origine normalizza le maiuscole/minuscole del metodo (IIS / alcuni Java). Le origini RFC 9110 sensibili alle maiuscole/minuscole (nginx, httpd, Go) rispondono 501. L'origine del lab normalizza le maiuscole/minuscole.

Richiede: HTTP/1 da un client non-loopback. remap_required: 1 più una map. Deny inbound predefinito di PURGE/PUSH/DELETE/TRACE. Anche :method HTTP/2 nocase resta negato.

Superficie adiacente che resta chiusa

SuperficieLab
DELETE / TRACE con case esatto da 172.x403, origin non raggiunto
:method HTTP/2 con case mistotokenizzazione nocase, comunque negato
purge / push con case misto come operazioni cache ATSl'origin ha visto il verbo; il percorso cache è rimasto chiuso
Deny destinazione CONNECT (0.0.0.0/8, RFC1918, link-local, ::ffff:0:0/96)ip_allow.yaml outbound predefinito
Miss di remap_required: 1404, non un open relay
ACL remap invertita vuota-nonstandardcorrezione del CHANGELOG mantenuta
CVE-2026-33267 hop-by-hop / rimozione @chiuso su questo pin

Come l'ho trovato

Il file predefinito ip_allow.yaml è l'ACL standard dei metodi remoti. Il caricamento YAML usa hdrtoken_tokenize (nocase). L'inversione DENY imposta poi _method_mask = ALL & ~listed e _deny_nonstandard_methods = true con una lista nonstandard vuota (IPAllow.cc:545-548).

Il parsing HTTP/1 tokenizza con hdrtoken_method_tokenize. Il DFA è case-insensitive; l'helper esegue poi strncmp sui byte della richiesta rispetto alla stringa well-known e restituisce -1 in caso di mancata corrispondenza del case:

retval = hdrtoken_tokenize(string, string_len, &string_out);
if (retval >= 0) {
  if (strncmp(string, string_out, string_len) != 0) {
    // Not a case match
    retval = -1;
  }
}

EndRemapRequest chiama isNonstandardMethodAllowed per method == -1 (IPAllow.h:365-376). L'insieme nonstandard vuoto più deny-nonstandard equivale a !method_in_set, quindi il mixed-case è consentito. is_this_http_method_supported(-1) è false. METHOD_NOT_SUPPORTED imposta ProxyMode_t::TUNNELLING e restituisce true. La documentazione afferma che ATS inoltra i metodi sconosciuti all'origine. La ricerca nella cache viene saltata in TUNNELLING.

Il :method di HTTP/2 passa attraverso HTTPHdr::method_set -> hdrtoken_tokenize senza alcun controllo di maiuscole/minuscole. Il delete H2 diventa DELETE e viene negato. Questo residuo è HTTP/1.

Vicoli ciechi: considerare le origini case-sensitive di RFC 9110 come motivo per rendere la deny list un no-op (PURGE/PUSH nella cache ATS restano chiusi; DELETE/TRACE verso l'origine è il residuo); fare curl da 127.0.0.1 (allow ALL); sostenere un cache purge; ri-segnalare hop-by-hop.

Teatro: una reverse shell. L'oracolo è una stringa testimone sull'origine dopo il 403 in maiuscolo.

Lab

python3 ats-ipallow-method-case-Abraxas-Labs.py

o

cd lab
./run.sh
Scarica lo strumento