web-dev-qa-db-ja.com

ラボ「ホワイトリストベースの入力フィルターを備えたSSRF」に対するPortswiggerのソリューションが機能するのはなぜですか?

演習のURLは次のとおりです https://portswigger.net/web-security/ssrf/lab-ssrf-with-whitelist-filter

解決策は次のとおりです。
http://localhost:80%[email protected]/admin/delete?username=carlos

少し簡略化(ポートを指定しない):
http://localhost%[email protected]/admin/delete?username=carlos

次のことに集中できます。
http://localhost%[email protected]

資格情報コンポーネント(@の前のすべて)が、@の後のすべてがURLフラグメントの一部であるかのように処理されるのはなぜですか? #文字をダブルエンコードする前のURLは次のようになります。
http://localhost#@stock.weliketoshop.net

@をダブルエンコードした後でも、#が必要なのはなぜですか?なぜhttp://localhost%2523stock.weliketoshop.net(「@」​​ではない)が機能しないのですか? URLフラグメントステートメントは、クレデンシャルステートメントよりも優先されますか?なぜ@#を支持して無視されるのですか?

2
Kevin1923851823

RFC 3986によると:

Userinfoサブコンポーネントは、ユーザー名と、オプションで、リソースにアクセスするための認証を取得する方法に関するスキーム固有の情報で構成されます。ユーザー情報が存在する場合は、ホストから区切るための商用アットマーク( "@")が後に続きます。

RFC3986セクション-3.2.1

1
Aayush