The Tricky XSS から学ぶ

ソース:

smaranchand.com.np

脆弱性XSS

 

訳:

ターゲットに向けて進むと、ユーザーがテキスト ボックスや入力を操作しながら特定の操作を行うために自分のアドレスを入力する必要があるオンライン ストアで、ランダムな詳細を入力し、アドレスのニックネームを値 A<h1>A で保存し。

そして、ここから出てくるすべてのバグハンター/ペンテスターに​​とって、これは非常にエキサイティングな瞬間であるに違いありません。
私の目は「AA」を探していましたが、Web ページに何も反映されていなかったので、アドレスの削除ボタンをクリックして、ボタンには、高さ h5 および h1 の指定された HTML 入力が反映されました。 

 

 

この時点では、XSS が必ず存在するはずだとほぼ確信していましたが、実際には、JavaScript ペイロードをフィードしているときに、20 文字 (空白を含む) の入力長検証があることがわかりました。

ああ、いや…

フロントエンドの検証のみではないかと考えているはずです。

HTTP リクエストのペイロードインターセプトして追加しようとしましたが、サーバーは受け入れませんでした。
ここでの主な課題は、長さが 20 文字未満の XSS ペイロードを見つけることでした。

グーグルで検索したところ、Dr. Mario による XSS ペイロードを見つけました。

 

このような短い TLDドメイン名、スクリプト全体が芸術のように見えました。 インデックス ページの Javascript ペイロードは次のとおりです。

 

アドレスニックネームで同じペイロードを使用すると、XSS アラートが発生しました。 

 

 

そして、使用されている XSS ペイロードまたはコンテンツが自分で制御されていないため、DOM と対話して Cookie を出力できるかどうかを考え、Cookie に警告するためだけに独自の最短 XSS ペイロードを作成しようと考えました。

数分間グーグルで検索した後、最初に最短のドメインを取得する予定で、Punycode ドメインを取得することを選択し、購入しました。
ペイロードの長さを短くするためだけに Punycode ドメインを取得し。

数日前、私の友人のサントシュ( 別名コードドブレイン) 2019でのマリオ博士のワークショップに参加しました 開催されたThreatcon は、カトマンズで 。 彼は、それを通じて得た経験と知識を共有することに非常に興味を持っていました。 私たちはこの問題について話し合い、より良い方法で活用し、さらに議論することを計画しました。

Punycode ドメインを購入したので、コードの実行を妨げるものがあったため、セットアップが少し複雑でした。
「=」だけが欠落していることを理解するのに数分かかりましたが、これは CTF のようなものだったと信じていますSpiderMonkey エンジンでのスクリプトの実行と部分ごとのデバッグについて調査を開始したため、これは私たちにとっての課題です。

レッドブルの神殿はこことは何の関係もありません…

これがサーバーのインデックス ページのコンテンツでした。

 

 

インデックスページ、つまりindex.htmlのコンテンツには、プレーンテキスト形式のalert(document.cookie)が含まれています。

最終的な XSS ペイロードは次のようになり。

 

上記のペイロードをアドレス名フィールドに保存すると、Cookie を含む XSS アラートが生成されました。 

 

 

信じられないかもしれませんが、彼らは P5 を自己 XSS とみなし、修正されないとマークしました。
そして、プログラムの所有者/開発者にバックエンド ダッシュボードのアクティビティを確認するように依頼できるかどうかを尋ねましたが、それでも、それは自己 XSS の問題だろうと彼らは言いました。 

 

 

ちょっと待ってください…

私はこれに本当にうんざりしていたので、バックエンドパネル/ダッシュボードで実行されるかどうかを監視するつもりでした。

XSS ハンター ペイロードを使用することもできましたが、受け入れられる入力データの長さが邪魔でした。
そこで、概念実証を収集するために独自の XSS ハンターのようなペイロードを作成しようと考えました。

以下は、Cookie を盗んでリモート サーバーに送信するための最小限のコードです。

 

Cookie をテキスト ファイルに保存する save.php ファイルのソース コードを以下に示します。 

 

サーバー上のすべてのファイル 

 

 

スクリプトが実行されるたびに、DOM から Cookie が読み取られ、リモート サーバーに送信されます。

改訂されたペイロード

 

Cookie はリモート サーバーの logs.txt ファイルに保存され、マウスの動きやキーストロークもキャプチャできます。

そして、私自身の側でスクリプトを実行して、スクリプトが機能することを確認しました。 ビスケットがリモートサーバーに来ています。 

 

 

ここで、Cookie を確認するために logs.txt を開いてください。 

 

 

そうそう!!! 私たち自身の XSS ハンター !!!

残念な部分…

この話の悲しい部分は、XSS がショップ管理ダッシュボード/バックエンドで実行されなかったということですが、私は正しい道を進んでいたと信じており、試す価値はありました。

 

ほなほな。