MK勉強記

【picoCTF】SOAP writeup

作成日:2024-02-27

main image

SOAP 問題文

The web project was rushed and no security assessment was done. Can you read the /etc/passwd file?

やってみた

まずはブラウザでリクエスト

Detailsはなんかクリックできる

Untitled.png

クリックしたらなんか出てきた

Untitled.png

よくわかんないからBurpのProxyで確認

Detailをクリックしたときに以下のリクエストが行われている

Untitled.png

xml使ってるのはわかる

タイトルが「SOAP」だったので一応しらべてみる。

応用情報や支援士の試験で聞いたことある〜

「SOAP /etc/passwd」で検索

一番上にBurp作ってる会社の記事が出てきた↓

これやん笑

そのとおりにやったらできた↓

Untitled.png

一応これが何なのかを調べてみた。

XXEについて

XXEはXML External Entity の略称

XXE攻撃、XXEインジェクションともいう

XMLにはDTD(Document Type Definition)と呼ばれるXMLの構造を定義するための構文がある。

それがこれ↓

<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>

<!ENTITY>というタグで実体宣言が行われている

上記では、xxeに/etc/passwdファイルの内容をxxeというエンティティとして宣言している。

そのxxeを今回の問題に合わせてIDタグの中で使用しリクエストをする

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <data> <ID> &xee; </ID> </data>

&変数名;で使えるっぽい。

fooの部分はよくわかんない。なんでもいいっぽい

感想

応用情報などでSOAPは聞いたことあったけど、こんな感じで使うのかぁって思った。

問題が/etc/passwdを見るという問題だったからディレクトリトラバーサルかと思ったけど違った。

リクエストにxmlが使われていたらXXEを使った攻撃があるという知識がついて、選択肢が広がった気がする。

参考

Profile

profile photo

地方公立大学院修士2年。

今年は「知識の幅を縦に広げること」が目標で、低レイヤ、OS、ミドルウェア、コンテナ、ネットワーク、データベース、SEO対策の勉強しています。

情報処理安全確保支援士と応用情報は合格しています。

研究として楕円曲線暗号、耐量子暗号、格子暗号や格子基底簡約アルゴリズム、同種写像暗号について学習しています。

普段はアルバイトでFlutter/Go/GCP/Next.js/Reactを使っています。