
nomore403 は、HTTP アクセス制御のバイパスや、401、403 および関連するレスポンスにおけるパーサーの不整合をテストするためのコマンドラインツールです。
このツールは、実践的な Web セキュリティ業務(バグバウンティ、侵入テスト、セキュリティレビュー、アクセス制御ルールの回帰テスト)を目的として設計されています。幅広いリクエストの変異を自動化し、ベースラインを取得し、一般的な誤検出をフィルタリングし、意味のあるバイパスである可能性が最も高いレスポンスを強調表示します。
404 や親パスからのレスポンスによる誤検出を減らすための自動キャリブレーションnet/http で正規化されるリクエスト形式に対する raw HTTP サポートgit clone https://github.com/devploit/nomore403
cd nomore403
go build
go install github.com/devploit/nomore403@latest
go install でインストールした場合、payloads/ ディレクトリは自動的にインストールされません。リポジトリをクローンし、必要に応じて -f オプションでツールにそのディレクトリを指定してください。
http-versions、http-parser、absolute-uri など)では curl が PATH に存在する必要がありますほとんどのテクニックは curl なしで動作します。
基本的なスキャン:
./nomore403 -u https://target.tld/admin
プロキシを使用し、詳細出力:
./nomore403 -u https://target.tld/admin -x http://127.0.0.1:8080 -v
特定のテクニックのみ実行:
./nomore403 -u https://target.tld/admin -k headers,absolute-uri,raw-desync
標準入力からターゲットを読み込む:
cat urls.txt | ./nomore403
Burp 形式のリクエストファイルを使用:
./nomore403 --request-file request.txt
機械可読な出力を書き込む:
./nomore403 -u https://target.tld/admin --jsonl -o findings.jsonl
target: https://target.tld/admin method: GET frontend: AWS ELB/ALB payloads: payloads
calib: 404 | 1245b | ±50 | frag 703b
BASELINE
default 403 520 bytes https://target.tld/admin
FINDINGS
hdr-ip 100! 200 2048 bytes X-Original-URL: /
abs-uri 26. 403 236 bytes request-target: https://target.tld/admin
http 18. 400 122 bytes HTTP/2
no visible results: 17 techniques
━━━━━━━━━━━━━━ LIKELY BYPASS ━━━━━━━━━━━━━━━━━
[!100 HIGH] Header injection (IP) 403=>200 2048b
why: status 403->200, len Δ1528, body changed, type changed
item: X-Original-URL: /
curl: curl -i -sS -k -H 'User-Agent: nomore403' -H 'X-Original-URL: /' 'https://target.tld/admin'
フィルタリングを通過した、ベースラインと十分に異なる各レスポンスが 1 行で表示されます。
典型的なフィールド:
hdr-ip、abs-uri、parser)18.、61+、100!)最終要約では、ベースラインから結果への遷移が表示されます:
403=>200 は通常すぐに注目すべき403=>302 は興味深い場合があるが、認証障壁に戻る可能性もある403->400 や 403->404 は、バイパスではなくパーサーやルーティングの差異を示すことが多い実行の最後に、nomore403 は以下を表示します:
LIKELY BYPASS
curl コマンドを含むINTERESTING VARIATIONS
no visible results
スコアリングはヒューリスティックです。結果に優先順位を付けるためのものであり、悪用を証明するものではありません。
このツールは一般的に以下を高く評価します:
2xx への遷移3xx への遷移Location の変化このツールは一般的に以下を低く評価します:
400 および 404 のケース(レスポンスが大幅に変化しない場合)推奨される解釈:
HIGH: 行動可能な可能性が高い; 最初に確認MED: 妥当な候補; 通常は手動再生に値するLOW: パーサーの差異、ルーティングの異常、または信頼性の低い動作自動キャリブレーションは、非詳細モードではデフォルトで有効です。
存在しないパスに複数のリクエストを送信し、ターゲットのデフォルトエラー動作のベースラインを構築します。また、フラグメントベースのキャリブレーションリクエストを実行し、フラグメントが除去されたパスによる誤検出を減らします。
これらのフラグを使用して制御します:
--no-calibrate
--strict-calibrate
Location、Content-Type、Server などの主要ヘッダーも比較デフォルトでは、-k で指定しない限り、すべてのテクニックが実行されます。
verbs
payloads/httpmethods からの代替 HTTP メソッドverbs-case
method-override
headers
hop-by-hop
Connection を使用したホップバイホップ除去テクニックheader-confusion
X-Original-URL などの書き換え・パスオーバーライドヘッダーhost-override
forwarded-trust
Forwarded、Client-IP、Cluster-Client-IP および関連する信頼チェーンproto-confusion
X-Forwarded-Proto、X-Forwarded-Port および関連するスキームヒントendpaths
payloads/endpaths からのサフィックスおよびパス末尾の変異midpaths
payloads/midpaths からのパス挿入およびトラバーサル形式の変異double-encoding
unicode
%uXXXX および過長 UTF-8 パスのバリアントpath-case
path-normalization
suffix-tricks
.json、.css、;index.html などのサフィックスおよび拡張子テクニック、および形式スタイルのクエリトグルhttp-versions
HTTP/1.0 と HTTP/2 で比較http-parser
curl リクエストを送信し、http-versions とは別にクライアント/フロントエンドのパーサー差異を明らかにするabsolute-uri
curl --request-target を使用した絶対形式のリクエストターゲットraw-duplicates
raw-authority
raw-desync
一部のテクニックは、Go の net/http クライアントでは提供されないワイヤーレベルの制御を必要とします。そのようなテクニックは raw HTTP エンジンを使用します。
現在 raw テクニックに含まれるもの:
raw-duplicatesraw-authorityraw-desync%uXXXX Unicode パスリクエスト注意:
このツールは、以下のようなフロントエンドのヒントを推測することがあります:
これらのヒントは、テクニックの順序と出力コンテキストを改善するために使用されます。
重要:
-k を使用しない限り、ツールは引き続き完全なデフォルトテクニックセットを実行します価値の高い結果は、最終要約で自動的に再生されます。
再生出力は以下の質問に答えるのに役立ちます:
最終要約には以下が含まれます:
1/1 または 2/2 matched on replay)curl コマンド./nomore403 -u https://target.tld/admin
./nomore403 -u targets.txt
cat targets.txt | ./nomore403
./nomore403 --request-file request.txt
リクエストファイルは、Burp や他のプロキシでキャプチャしたトラフィックを再生する場合に便利です。
組み込みのエンドパスやミッドパスの変異ロジックに依存する代わりに、明示的なマーカーでペイロードを注入したい場合は --payload-position を使用します。
例:
./nomore403 -u 'https://target.tld/§100§/admin/§200§' -p §
./nomore403 -u https://target.tld/admin
./nomore403 -u https://target.tld/admin -x http://127.0.0.1:8080 -v
./nomore403 -u https://target.tld/admin -k absolute-uri,raw-duplicates,raw-authority,raw-desync
./nomore403 -u https://target.tld/admin -i 10.0.0.5
./nomore403 -u https://target.tld/admin --jsonl -o findings.jsonl
最新の CLI については ./nomore403 --help を実行してください。
主要なフラグ:
-u, --uri
-k, --technique
-x, --proxy
-H, --header
-i, --bypass-ip
-v, --verbose
--json
--jsonl
--no-calibrate
--strict-calibrate
--retry-count
デフォルトモードはインタラクティブなレビューとトリアージに最適化されています。
--json を使用すると、単一の構造化されたドキュメントが出力されます。
--jsonl は以下の場合に使用します:
payloads/ ディレクトリには、いくつかのテクニックで使用されるリストが含まれています。
現在のファイル:
httpmethodsheadersipssimpleheadersendpathsmidpathsuseragentsこれらのファイルはターゲットやワークフローに合わせてカスタマイズできます。
curl ベースのテクニックでは curl が PATH に存在する必要がありますこのツールは、テストする権限のあるシステムでのみ使用してください。
作者および貢献者は誤用に対する責任を負いません。該当する法律、プログラムルール、および組織のポリシーを遵守する責任はあなたにあります。
コントリビューションを歓迎します。
役立つコントリビューションの領域:
テクニックをコントリビュートする前に、以下を優先してください:
このプロジェクトは MIT ライセンスの下で公開されています。詳細は LICENSE を参照してください。
ip-encoding
payload-position
--retry-backoff-ms
--host-delay
--top-score-min
LIKELY BYPASS の最小スコア--variation-score-min
INTERESTING VARIATIONS の最小スコア--top
0 で要約を無効化