Shikata Ga Nai

Private? There is no such things.

Exploiting XInclude to retrieve filesをやってみた

Hello there, ('ω')ノ

 

XIncludeを利用してファイル取得を。

XMLで制御しいので、XXEするためのDTDを定義することはできないとか。

一部のアプリケーションは、クライアントから送信されたデータを受信して。

サーバサイドでXMLドキュメントに埋め込んで、ドキュメントを解析したり。

今回は、クライアントが送信したデータが。

バックエンドのSOAPリクエストに配置されて。

バックエンドのSOAPサービスによって処理される場合に発生して。

 

XIncludeは、XML Inclusionの略で。

XIncludeは、既存のXMLドキュメント内に別のXMLドキュメントを含める方法で。

外部エンティティを定義するXMLコンポーネントを含めて。

それを使用してサーバからデータをリークできて。

まずは、Check stockをクリックして。

 

f:id:ThisIsOne:20210306101826p:plain

 

XMLは見当たらず、リピータへ。

多くの場合、攻撃者はXMLデータを完全に制御することはできないものの。

データに渡される入力を制御することはできて。

このような場合、XMLパラメータの前にエンティティを挿入できないので。

XXE攻撃を実行できないように見えて。

ただ、多くの場合はXMLのXInclude機能を使用して。

単一のパラメータにアクセスするだけでXXE攻撃を実行できて。

 

f:id:ThisIsOne:20210306101908p:plain

 

XIncludeをセットアップするには、パラメータにデータを挿入して。

 

f:id:ThisIsOne:20210306102124p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210306102149p:plain

 

XIncludeを定義していることをXMLパーサーに示すことから始めて。

ここから、xi:includeを使用してインクルードを設定して。テキストを提供して。

テキストは、情報を取得するファイルまたはURLをhrefで指して。

 

<components> 要素で XInclude の名前空間を宣言して。

<components> 要素の内容に <xi:include> 要素を記述して。

href 属性で取り込む dicon ファイルのパスを指定して。

これを実行すると、ProductIDにXIncludeが与えられて。

 

<foo xmlns:xi="http://www.w3.org/2001/XInclude">

<xi:include parse="text" href="file:///etc/passwd"/>

</foo>

 

Best regards, (^^ゞ