How i discovered my first CVE から学ぶ

ソース:

1-day.medium.com

脆弱性XSS

 

訳:

発見 🔎

私は HackerOne や Bugcrowd などのプラットフォームでバグを探していましたが、何ヶ月も何も見つからず。
そこで私は、「オープンソース システムを探してみてはどうだろうか?」と考え。
すぐに github にアクセスし、よく管理されている CRM リポジトリを検索し。
そこで私は SuiteCRM を見つけ。
まともな量の星があり、頻繁にメンテナンスされていました。
システムにクローンを作成し、サーバーを起動し。
すべてのボタン、ハイパーリンク、ナビゲーションをクリックして、Web アプリの構造をマッピングし始めました…

バグ🪲

約 1 時間システムをクリックした後、スイートスポットを見つけ。
ユーザーが特定のケースに関する「ケースの最新情報」を投稿できる機能。
user1 として「ケースの更新」を投稿すると、user2 がそれを閲覧できるように。

クラシック XSS ペイロードの投稿を開始しましたが、フィルターされて。
多くのタグを試しましたが、その多くは機能しませんでした。
ついに、1 つのタグが機能し。
<iframe> タグはフィルタリングされずに機能し。

投稿してみました:

 

 

そしてそれはうまくいき。
今度はuser1からログアウトし、user2にログインし。

ケースページに移動すると、iframe が正常にレンダリングされていることがわかって。

ここで、影響を実証するために、次のコードを使用してローカル マシン上に Web サーバーを作成し。

 

const express = require('express');
const app = express();
const port = 2222

app.use(express.json());
app.get('/', async (req, res)=>{
return res.send("<script>alert('You are hacked')</script>");
})



app.listen(port, () => {
console.log(`Server started`)
});

 

そして、Ngrokを使用してWebサーバーをポート転送しました。

次に、次のように iframe を作成しました。

 

 

そして、それを user1 としてケースの更新として投稿し。
user1 からログアウトし、user2 (被害者) にログインし。

ケースのアップデートにアクセスしたとき、ドーン! ページには「あなたはハッキングされました」と表示されて。
これは、XSS が iframe を介して正常に動作したことを意味し。

攻撃者として、iframe を使用して永久的なページ改ざんを行うことができ、潜在的なアカウント乗っ取り攻撃につながる可能性のある Cookieティーラー Web ページを作成することもできて。

ほなほな。