How I Got $5,000 for Out-of-Scope XSS から学ぶ

ソース:

medium.com

脆弱性XSS、CORS

 

訳:

XSS の影響を拡大するいくつかの XSS チェーンを発見しました。

 

Self-XSS を見つけるのにはそれほど時間はかかりませんでした。

 

範囲外の XSS

ここで、XSS に連鎖する別のバグを見つけ。
XSS に連鎖するバグを特定することを目的として、Web サイトのテストを開始し。
私がテストしたバグの 1 つは、CORS の構成ミスでした。
使用してテストすることを好みます 私はCORS* Burp Extension を

 

portswigger.net

CORS* Burp Extention

この拡張機能を使用するには、「 CORS* をアクティブにする」チェックボックス をクリックし、ターゲットを参照して拡張機能の魔法を実行するだけで。
Burp プロキシを通過するすべてのリクエストに対して、さまざまな CORS バイパス手法を試み。 あとは結果を確認するだけです。 

 

CORS* Burp Extension Results

拡張機能をアクティブ化した後、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


CORS Misconfiguration

バグが発生したようで。
通常の場合はドメインを登録する必要があります 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();

 

Bypass the SameSite Cookie using Self XSS

見事、CORS の誤った構成を範囲外の XSS と連鎖させて、SameSite Cookie のオリジン チェックをバイパスすることに成功し。

 

ほなほな。