Shikata Ga Nai

Private? There is no such things.

Fun With CORS Misconfigurationを訳してみた

Hello there, ('ω')ノ

 

CORSの設定ミスを楽しむを。

 

脆弱性:

 CORSの設定ミス

 XSS

 

記事:

 https://medium.com/@amangupta566/fun-with-cors-misconfiguration-ii-927caccfe932

 

今回は、機密情報の漏洩につながるCORSの設定ミスについて説明することに。

Webアプリケーションのvulnerable.comは、すべてのサブドメインを信頼していて。

これは、すべてのサブドメインが機密データを取得できることを意味して。

サブドメインが自分のドメインであり。

自分のドメインを信頼できるため、意味があるものの。

攻撃者がサブドメインに何らかの脆弱性を見つけて。

それを使用してCORSの設定ミスを悪用すると、問題が発生する可能性があって。

今回のシナリオは次のとおりで。

    GET /sensitiveData HTTP/1.1
    Host: vulnerable.com
    Origin: https: //example.vulnerable.com

 

サーバから受け取った応答:

    HTTP/1.1 200 OK
    Access-Control-Allow-Origin: https://example.vulnerable.com
    Access-Control-Allow-Credentials: true
 :

 

f:id:ThisIsOne:20211222183517p:plain

 

これで、アプリケーションがすべてのサブドメインを。

信頼していることが確認できて。

CORSへのサーバ設定は、次のようで。

    Access-Control-Allow-Origin: * .vulnerable.com

 

したがって、この設定ミスを悪用するために。

サブドメインに2つの脆弱性を見つけることができて。

 1.いずれかのサブドメインでのクロスサイトスクリプティング

 2.サブドメインの乗っ取り:

    そのサブドメインで独自のJavaScriptを作成して。

    被害者をだますことができるようにして。

 

サブドメインの脆弱性を見つけてみたところ。

https://test.vulnerable.comなどのサブドメインの1つに。

反射型XSSが見つかって。

 

f:id:ThisIsOne:20211222183558p:plain

 

あとは、そのサブドメインに悪意のあるJavaScriptを挿入して。

被害者にそのページにアクセスしてもらうことだけで。

XSSが存在するサブドメインに次のペイロードを注入すると。

CORSの設定ミスが悪用されることに。

 

 function cors(){

 var xhttp=new XMLHttpRequest();

 xhttp.onreadystatechange=function(){

  if (this.readyState ==4&& this.status==200){alert(this.responseText)}};

 xhttp.open(“GET”, “https://vulnerable.com/auth/user”, true);

 xhttp.withCredentials=true;xhttp.send();}

 

そのため、サブドメインのnameパラメータは脆弱で。

XSSペイロードは、次のようになって。

 “onclick=”[payload]

 

よって、インジェクションされてCORSの設定ミスが正常に悪用されて。

 

Best regards, (^^ゞ