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

9.2 KiB
Raw Blame History

Bypass 403 e 401

Impara l'hacking AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Configurazione immediatamente disponibile 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 segnalazione. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per dare loro più tempo per approfondire, aprire shell e divertirsi.

{% embed url="https://pentest-tools.com/" %}

Fuzzing dei Verbi/ Metodi HTTP

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

  • Controlla gli header di risposta, forse possono essere fornite alcune informazioni. 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 header HTTP come X-HTTP-Method-Override: PUT può sovrascrivere il verbo utilizzato.
  • Utilizza il verbo TRACE e se sei molto fortunato forse nella risposta puoi vedere anche gli header aggiunti dai proxy intermedi che potrebbero essere utili.

Fuzzing degli Header HTTP

  • Cambia l'header Host con un valore arbitrario (che ha funzionato qui)

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

  • Fuzz degli Header HTTP: Prova ad utilizzare Headers di Proxy HTTP, Autenticazione HTTP di Base e forza bruta NTLM (con poche combinazioni) e altre tecniche. Per fare tutto ciò 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 questi altri header:

  • X-Original-URL: /admin/console
  • X-Rewrite-URL: /admin/console
  • Se la pagina è dietro un proxy, forse è il proxy quello che ti impedisce di accedere alle informazioni private. Prova ad abusare di HTTP Request Smuggling o header hop-by-hop.
  • Fuzz degli header HTTP speciali cercando risposte diverse.
  • Fuzz degli header HTTP speciali mentre fuzzi i Metodi HTTP.
  • Rimuovi l'header Host e forse sarai in grado di bypassare la protezione.

Fuzzing del Percorso

Se /percorso è bloccato:

  • Prova a utilizzare /%2e/percorso _(se l'accesso è bloccato da un proxy, questo potrebbe bypassare la protezione). Prova anche_** /%252e**/percorso (doppio URL encoding)
  • Prova il bypass Unicode: /%ef%bc%8fpercorso (I caratteri codificati nell'URL sono come "/") quindi quando decodificati torneranno a essere //percorso e forse avrai già bypassato il controllo del nome /percorso
  • Altri bypass del percorso:
  • sito.com/segreto > HTTP 403 Forbidden
  • sito.com/SEGRETO > HTTP 200 OK
  • sito.com/segreto/ > HTTP 200 OK
  • sito.com/segreto/. > HTTP 200 OK
  • sito.com//segreto// > HTTP 200 OK
  • sito.com/./segreto/.. > HTTP 200 OK
  • sito.com/;/segreto > HTTP 200 OK
  • sito.com/.;/segreto > HTTP 200 OK
  • sito.com//;//segreto > HTTP 200 OK
  • sito.com/segreto.json > HTTP 200 OK (ruby)
  • Utilizza tutta questa lista nelle seguenti situazioni:
  • /FUZZsegreto
  • /FUZZ/segreto
  • /segretoFUZZ
  • Altri bypass API:
  • /v3/dati_utenti/1234 --> 403 Forbidden
  • /v1/dati_utenti/1234 --> 200 OK
  • {“id”:111} --> 401 Non autorizzato
  • {“id”:[111]} --> 200 OK
  • {“id”:111} --> 401 Non autorizzato
  • {“id”:{“id”:111}} --> 200 OK
  • {"user_id":"<legit_id>","user_id":"<victims_id>"} (Inquinamento dei Parametri JSON)
  • user_id=ID_ATTACCANTE&user_id=ID_VITTIMA (Inquinamento dei Parametri)

Manipolazione dei parametri

  • Cambiare il valore del parametro: Da id=123 --> id=124
  • Aggiungere parametri aggiuntivi all'URL: ?id=124 —-> id=124&isAdmin=true
  • Rimuovere i parametri
  • Riordinare i parametri
  • Utilizzare caratteri speciali.
  • Eseguire test di boundary testing nei parametri - fornire valori come -234 o 0 o 99999999 (solo alcuni valori di esempio).

Versione del protocollo

Se si utilizza HTTP/1.1 provare a utilizzare 1.0 o testare se supporta 2.0.

Altri bypass

  • Ottenere l'IP o il CNAME del dominio e provare a contattarlo direttamente.
  • Provare a stressare il server inviando comuni richieste GET (Ha funzionato per questo ragazzo con Facebook).
  • Cambiare il protocollo: da http a https, o da https a http
  • Andare su https://archive.org/web/ e verificare se in passato quel file era accessibile in tutto il mondo.

Brute Force

  • Indovinare la password: Testare le seguenti credenziali comuni. Sai qualcosa sulla vittima? O sul nome della sfida CTF?
  • Forza bruta: Provare autenticazioni di base, 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

Configurazione immediatamente disponibile per valutazione delle vulnerabilità e test di penetrazione. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla generazione di report. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento ed exploit per permettere loro di dedicarsi a approfondire, ottenere shell e divertirsi.

{% embed url="https://pentest-tools.com/" %}

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: