ちょっとだけ複雑なXXEの話   no comments

Posted at 12:27 pm in Security

お久しぶりです。もう年末ですね。

OWASP top 10 2017が発表されて、その中にXXEとデシリアライゼーションが新たにランクインしたことがWebセキュリティクラスタでは話題のようです。そもそもXXEもデシリアライゼーションの脆弱性もあまり診断業務では見かけないものなのでどうして入ったのかという驚きもあるのでしょう。

先月までは日本ではあまり話題に上ることは少なかったXXEですが、この数年海外では脆弱性報告をわりと見かけます。自分もいくつか報告をしているのですが、それほど重要度が高くないと認識されているのか修正されることは少なく1つがようやく修正されただけです(他の件は実際に悪用される危険は本当に少ないと思いますが)。

XXEの基本的な原理についてはすでにいくつかのところで説明されているようですので、ちょっとだけ複雑だった修正された事例を紹介したいと思います。

○ExcelファイルのXXE
XXEですが、xml形式のリクエストを行う、またはxmlファイルを読み込ませることで攻撃を行うということが多いのですが、表向きは他のファイル形式だけど実はXMLだというファイルを使うことで攻撃が行えることもあります。

実例として先月脆弱性が修正された
WordPress用プラグイン TablePressにおける XML 外部実体参照 (XXE) 処理の脆弱性
http://jvn.jp/jp/JVN05398317/index.html
がありますので紹介させていただきます。

これはExcelのファイルをWordPressに取り込むプラグインなのですが、現行のExcelで採用されているファイル形式であるxlsxファイルを読み込むことでサーバー内の任意のファイルを読み込むことができるという脆弱性でした。

xlsxというファイルは実はZIP圧縮されたXMLファイルの集合体です。手元のファイルに.zipの拡張子を付けて解凍してみるといくつかのフォルダとxmlファイルとなることがわかるでしょう。

解凍したxlsxファイル

 

攻撃を行うためには解凍した中のどれかのxmlファイルを開き、サーバー内のファイルを読み込むようなDOCTYPE宣言と実体参照を追記して保存します。

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"
 count="1" uniqueCount="1"><si><t>&xxe;</t>
<phoneticPr fontId="1"/></si></sst>

 

そして再圧縮すると攻撃するためのxlsxファイルができ上がりました。
簡単ですね。
このファイルをインポートすると以下の図のようにサーバー内のファイルが表示されます。

/etc/passwdが読み込まれた

WordPressのプラグインにはこのようにxmlの処理の際に内部ファイルを読み込むような機能があるのですが、これだけで大騒ぎしてはいけません。
WordPressはAdminister権限でログインしている場合、任意のphpコードの実行が可能です。ですのでAdminister権限でこのようなことができるからといって脆弱性だと決めつけることはあまりよろしくはないです。

ですが、このプラグインの場合は管理権限のないユーザーであってもこの機能を使用することができましたので、管理権限のないユーザーがサーバー内の任意ファイルを読み込むことができるという由々しき脆弱性として報告/修正されました。

実は修正の方向としてはこの機能を管理者しか使えなくするという方法もあったのだと思いますが本編とは関係ないのでこれ以上は言及しません。

ですが、管理者しか使えない場合であってもこのxlsxファイルが外部の悪意ある人の作成したもので、読み込んだファイルの内容を外部に送信されるような機能がある場合どうなるでしょう。その場合ファイルをインポートすると知らずにサーバー内のファイルを攻撃者のサーバーに送信してしまうということになります。
送信させる手段としては古い環境(libxml2.8未満?)なら属性値を使った攻撃が可能です。新しい環境なら他のプラグインのXSSを使うというやり方などがあると思いますが、疲れたのでこの話はここまでにします。

なおxmlではないのに実はxmlであるものとしては、Office関連のファイル以外にもepubファイルやxspf形式のファイルなどがありますので皆様も試してみるのはいかがでしょうか。

 

Written by bogus on 12月 2nd, 2017

Leave a Reply