Hello there, ('ω')ノ
フィルタを回避して任意の URL リダイレクト攻撃を実行するを。
脆弱性:
オープンリダイレクト
記事:
任意の URL リダイレクト攻撃は、オープン リダイレクト攻撃として
広く知られていて。
これは、攻撃者が被害者のユーザを攻撃者が制御するドメインに
リダイレクトすることを可能にする一般的な Web 脆弱性で。
この攻撃を利用して、トークンなどの機密情報を盗んだり、
ソーシャル エンジニアリングやその他の攻撃を実行したりする可能性があって。
任意の URL リダイレクト攻撃は、ほとんどの場合、アプリケーションが
ユーザ指定の URL を受け入れ、脆弱な機能の実行時にそれを
リダイレクトするエンドポイントで発生し。
共通パラメータには、?return=、?returnURI=、?forwardedTo=、?redirect=、
?redirectURI=、?url=、?forward= など、ユーザを別のエンドポイントに
ロードまたはリダイレクトするようなパラメータがあって。
今回は、フィルタを回避して任意の URL リダイレクト攻撃を
実行できたという最近の発見の 1 つについて。
最新のフレームワークは、オープン リダイレクト攻撃を検証して
回避するためのセキュリティ チェックをデフォルトで実装していて。
多くの場合、サードパーティの URL または IP が使用されているかどうかの検証、
HTTPS:// プロトコルが使用されているかどうかの検証など、
さまざまなフィルタが使用され、見つかった場合はアプリケーションが
リダイレクトの発生をブロックして。
最近、プライベート アプリケーション (target.com など) をテストしているときに
同様の状況に遭遇し。
アプリケーションのセキュリティ チェックリストでさまざまな脆弱性を
チェックしながら、次に URL リダイレクトを探して。
この攻撃をテストするために一般的なアプローチは次のとおりで。
アプローチ1:
1.アプリケーションにログインし、「My Profile」などの認証された
ページに移動して。
2.URL は通常次のようになり。
https://www.target.com/my-profile/
3.次に、アプリケーションからログアウトし。
多くの場合、一部のアプリケーションは、/my-profile ページに
リダイレクトするリダイレクト パラメータをスローして。
4.URL は次のようになり。
https://www.target.com/login?forward=/my-profile
5.この場合、forward パラメータは、任意の URL リダイレクト攻撃を
テストするための潜在的な攻撃ベクトルで。
アプローチ2:
1.ParamSpider や Arjun などのパラメータ列挙ツールを使用して。
2.任意の URL リダイレクト攻撃に対して疑わしいパラメータをテストして。
アプローチ3:
1.ターゲット アプリケーションで gau と waybackurls を実行し、
ファイルに保存して。
2.手順 1 で保存したファイルに対して Open Redirection GF Patterns を実行し、
出力を別のファイルに保存して。
3.これらの URL は、任意の URL リダイレクト攻撃の
疑わしいエンドポイントである可能性があって。
この場合、テストしていたアプリケーションではアプローチ1を使用し、
次のオープン リダイレクトの潜在的なエンドポイントを見つけて。
https://www.target.com/login?forward=/account/address
ただし、forward パラメータは URL が指定されているかどうかを検証し、
リダイレクトの発生をブロックしていて。
さらに調査した結果、次のことが分かって。
・アプリケーションは HTTPS プロトコルをフィルタリングしていて。
・アプリケーションはホストと IP アドレスをフィルタリングしていて。
ただし、アプリケーションは HTTP プロトコルの使用を許可していて。
しばらく考えた後、次のペイロードをバイパスとして使用して。
2899905732 は、google.com の IP(142.250.64.100) を整数で表現したもので。
最終的なペイロードは次のようになり。
https://www.target.com/login?forward=http://2899905732
上記の URL に移動し、有効な資格情報を使用してログインし。
ログイン時に、アプリケーションは google.com にリダイレクトされ、
その結果、任意の URL リダイレクト攻撃が成功して。
テイクアウト:
・考えられるすべてのアプローチを試して、すべての脆弱性を調べて。
・何かが機能していない場合、またはブロックされている場合は、
可能な代替手段を探してみて。
・成功するためにフィルタを回避するために考えられるすべての方法を試して。
・途中で学び、その知識をあらゆる場所に応用して。
Best regards, (^^ゞ