はまやんはまやんはまやん

hamayanhamayan's blog

pdfme [Facebook CTF 2019 web 655]

https://ctftime.org/task/8651

We setup this PDF conversion service for public use, hopefully it's safe.

http://challenges.fbctf.com:8084

前提知識

  • XXE

解説

他の解説を見たが、実際に解いたかのような動きで書く。

サイトには「Choose a file to upload (.fods, max 64kb, lowercase name) 」という記述がある。
.fodsは「OpenDocument Flat XML Spreadsheet」らしい。
LibreOfficeで作れるらしい。
まずは、正常動作がみたいので、LibreOfficeを入れる。
Spreadsheetなので、CalcでtestとだけA1に入れて保存する。
一応、中身を見てみると、たくさん色々書いてある。
これを送ると、pdfができてくる。
なるほど、fodsをpdfにするアプリね。
 
XMLをパースして、PDFにする感じをみると、XXEか?となる。
XXEとはこんな感じである。
といってもXXE攻撃できるかどうかはXML処理ライブラリに依存する。
できたPDFをダウンロードして、プロパティのPDF変換を見ると「LibreOffice 6.0」とある。
LibreOffice 6.0がXMLを処理しているみたいなので、とりあえずググる

JVNになんかある
でも影響が3.5.1未満の3.5.xなので、これじゃなさそう。

LibreOffice 6 cveでぐぐってみると、
日本語での解説サイトがある!
これが行けそう。

とりあえずブログにあるように「=WEBSERVICE("/etc/passwd")」と入れて、fodsファイルを作って送ると、
微妙に/bin/bashだけ出る。
fodsファイルを編集して、office:documentタグ直下をoffice:bodyタグだけにすると全部でてくる。
ホームディレクトリが「:/home/libreoffice_admin」とわかったので、ここにflagあるかなーと思って、
「=WEBSERVICE("/home/libreoffice_admin/flag")」とすると
「fb{wh0_7h0u6h7_l1br30ff1c3_c4n_b3_u53ful}」
出てきた!