hacktricks/network-services-pentesting/pentesting-web/403-and-401-bypasses.md

9.2 KiB
Raw Blame History

403 & 401 Bypasses

{% hint style="success" %} Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks
{% endhint %}

Setup disponibile immediatamente per valutazione delle vulnerabilità e penetration testing. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla reportistica. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento e sfruttamento per restituire loro del tempo per approfondire, aprire shell e divertirsi.

{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}

HTTP Verbs/Methods Fuzzing

Prova a utilizzare verbi diversi per accedere al file: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK

  • Controlla le intestazioni di risposta, forse alcune informazioni possono essere fornite. Ad esempio, una risposta 200 a HEAD con Content-Length: 55 significa che il verbo HEAD può accedere alle informazioni. Ma devi comunque trovare un modo per esfiltrare quelle informazioni.
  • Utilizzare un'intestazione HTTP come X-HTTP-Method-Override: PUT può sovrascrivere il verbo utilizzato.
  • Usa il verbo TRACE e se sei molto fortunato, forse nella risposta puoi vedere anche le intestazioni aggiunte da proxy intermedi che potrebbero essere utili.

HTTP Headers Fuzzing

  • Cambia l'intestazione Host in un valore arbitrario (che ha funzionato qui)

  • Prova a usare altri User Agents per accedere alla risorsa.

  • Fuzz HTTP Headers: prova a utilizzare le intestazioni HTTP Proxy, l'autenticazione HTTP Basic e NTLM brute-force (con solo alcune combinazioni) e altre tecniche. Per fare tutto questo ho creato lo strumento fuzzhttpbypass.

  • X-Originating-IP: 127.0.0.1

  • X-Forwarded-For: 127.0.0.1

  • X-Forwarded: 127.0.0.1

  • Forwarded-For: 127.0.0.1

  • X-Remote-IP: 127.0.0.1

  • X-Remote-Addr: 127.0.0.1

  • X-ProxyUser-Ip: 127.0.0.1

  • X-Original-URL: 127.0.0.1

  • Client-IP: 127.0.0.1

  • True-Client-IP: 127.0.0.1

  • Cluster-Client-IP: 127.0.0.1

  • X-ProxyUser-Ip: 127.0.0.1

  • Host: localhost

Se il percorso è protetto, puoi provare a bypassare la protezione del percorso utilizzando queste altre intestazioni:

  • X-Original-URL: /admin/console
  • X-Rewrite-URL: /admin/console
  • Se la pagina è dietro un proxy, forse è il proxy a impedirti di accedere alle informazioni private. Prova ad abusare di HTTP Request Smuggling o hop-by-hop headers.
  • Fuzz intestazioni HTTP speciali cercando risposte diverse.
  • Fuzz intestazioni HTTP speciali mentre fuzzing HTTP Methods.
  • Rimuovi l'intestazione Host e forse sarai in grado di bypassare la protezione.

Path Fuzzing

Se /path è bloccato:

  • Prova a utilizzare /%2e/path _(se l'accesso è bloccato da un proxy, questo potrebbe bypassare la protezione). Prova anche_** /%252e**/path (doppia codifica URL)
  • Prova il bypass Unicode: /%ef%bc%8fpath (I caratteri codificati in URL sono come "/") quindi quando vengono ricodificati tornerà a essere //path e forse avrai già bypassato il controllo del nome /path
  • Altri bypass di percorso:
  • site.com/secret > HTTP 403 Forbidden
  • site.com/SECRET > HTTP 200 OK
  • site.com/secret/ > HTTP 200 OK
  • site.com/secret/. > HTTP 200 OK
  • site.com//secret// > HTTP 200 OK
  • site.com/./secret/.. > HTTP 200 OK
  • site.com/;/secret > HTTP 200 OK
  • site.com/.;/secret > HTTP 200 OK
  • site.com//;//secret > HTTP 200 OK
  • site.com/secret.json > HTTP 200 OK (ruby)
  • Usa tutta questa lista nelle seguenti situazioni:
  • /FUZZsecret
  • /FUZZ/secret
  • /secretFUZZ
  • Altri bypass API:
  • /v3/users_data/1234 --> 403 Forbidden
  • /v1/users_data/1234 --> 200 OK
  • {“id”:111} --> 401 Unauthriozied
  • {“id”:[111]} --> 200 OK
  • {“id”:111} --> 401 Unauthriozied
  • {“id”:{“id”:111}} --> 200 OK
  • {"user_id":"<legit_id>","user_id":"<victims_id>"} (Inquinamento dei parametri JSON)
  • user_id=ATTACKER_ID&user_id=VICTIM_ID (Inquinamento dei parametri)

Manipolazione dei Parametri

  • Cambia il valore del parametro: Da id=123 --> id=124
  • Aggiungi parametri aggiuntivi all'URL: ?id=124 —-> id=124&isAdmin=true
  • Rimuovi i parametri
  • Riordina i parametri
  • Usa caratteri speciali.
  • Esegui test di confine nei parametri — fornisci valori come -234 o 0 o 99999999 (solo alcuni valori di esempio).

Versione del Protocollo

Se utilizzi HTTP/1.1 prova a usare 1.0 o anche a testare se supporta 2.0.

Altri Bypass

Brute Force

  • Indovina la password: Testa le seguenti credenziali comuni. Sai qualcosa sulla vittima? O il nome della sfida CTF?
  • Brute force: Prova autenticazioni basic, digest e NTLM.

{% code title="Credenziali comuni" %}

admin    admin
admin    password
admin    1234
admin    admin1234
admin    123456
root     toor
test     test
guest    guest

{% endcode %}

Strumenti Automatici

Impostazione disponibile istantaneamente per la valutazione delle vulnerabilità e il pentesting. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla reportistica. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento e sfruttamento per restituire loro del tempo per approfondire, aprire shell e divertirsi.

{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}

{% hint style="success" %} Impara e pratica il Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks
{% endhint %}