wp.bmemo.pw

自分のための覚書・備忘録

WEB Wordpress セキュリティー

WordPressとMarkdownを使ったXSS

投稿日:

去年見つけたXSS紹介します.

WordPress上でとあるMarkdownプラグインを使用すると,JavaScriptの投稿を禁じられたユーザーでもJavaScriptを投稿できるようになります.複数人でブログ運営していて権限の低いブログライターがブログ所有者のセッションを乗っ取ることも可能です.

WordPressのXSS対策機能

unfiltered_html

WordPressには複数人でブログを運営するためにユーザーレベルが設けられています.デフォルトでは,特権管理者・編集者・投稿者・寄稿者・購読者が設定されています.

screenshot.267

このうち投稿者以下のユーザーはJavaScriptを含んだ投稿ができません.これらのユーザーレベルがJavaScriptを含んだ投稿をするとその部分をwp_ksesが無害化します.

上記のようにjavascriptが動作しないように変換してくれていることが分かります.XSSしまくってる人たちは上記以外でもjavascriptを実行する方法を御存知でしょうが,その多くの手法がwp_ksesによって塞がれています.そしてこのwp_ksesはHTMLに対して動作します.


Markdownプラグインを使ったwp_kses突破

screenshot.268

Markdown on Save Improved (MoSI)を使うとJavaScript投稿を禁じられているユーザーでもJavaScriptを埋め込むことが可能になります.

Markdownって何?って人は→こちら

Markdownで以下の記述をすると,記事投稿時にjavascriptが動作する形で出力してくれます.wp_ksesによる削除等を突破できます.

コードはもっと短くできそうだけど試してないです.

screenshot.269

原因にWordPress公式のAPIが絡んでた

そもそもXSSができたのはMoSIプラグインの実装上の問題から来たわけですが,少し調べてみるとXSSを引き起こした原因にWordPress公式のAPIが絡んでいました

wp_insert_post_data

プラグイン開発者の皆さんはこのAPIを使っているのでしょうか.このAPIはwp_ksesで検査した後のテキストデータを再編集できるようになるAPIです.MoSIプラグインは,このAPIを用いてMarkdown記法からHTML記法へ変換していました.

screenshot.270

wp_ksesで検査した後にhtmlに変換するわけですから,当然Markdown記法で書いたテキストにjavascriptが含まれていてもwp_ksesはスルーしちゃうわけです.


その後

すぐ修正されました.でもMarkdownを使ってブログを書くにはJetPackを使うのがメジャーだということで,開発者の方がJetPackを使うようにアナウンスを出しました.このプラグインはもう開発止まってます.使ってる人は早くJetPackに移行しようね.

WordPressのAPIリファレンスにしっかりXSSのリスクを書いてて欲しい.まだ沢山こういう脆弱性持ってるプラグインありそうで怖い.

-WEB, Wordpress, セキュリティー
-,

執筆者:


comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

関連記事

no image

大学のネット回線が遅い? → ネームサーバー変えてみ?

クソクソ言われ続ける大学の回線。お昼休みの時間帯は1Mbpsすら出ないこともしばしばあります。なんでかなあそんな貧弱な回線じゃないんだけどなあと悩んでいたのですが、ある日名前解決にやたら時間がかかって …

Avast! 無料版 WEBスキャン機能の脆弱性

最近見つけたけど僅差で先を越されて報奨金取りそこねた脆弱性の解説をします.既に直ってます. 大手のアンチウイルスソフトには「WEBセーフスキャン」だとか「HTTPSスキャン」とかいう「暗号化されたHT …

GitHubの優秀な検索のせいでAWSなどのアクセスキーが流出している件

GitHubって便利ですよね。この前AWSを使ったコードを書きました。 AWSの全データセンターから最も価格の低いスポットインスタンスを検索するスクリプト で、これ書く前、参考にGitHub漁ってたん …

By Deborah Austin

WordPressの使っていない画像を最適化して容量節約する方法まとめ

無料・格安Wordpressサービスを使っていると画像だけですごい容量圧迫してしまいます。 不要なプラグインを削除すればある程度はましになりますが、画像を最適化すればだいぶ容量を空けることが出来ます。

Dirty Cowを使ってDocker から不正に脱出する

乗り遅れましたが CVE-2016-5195 で報告された脆弱性,通称「Dirty Cow」です.この脆弱性は特権昇格に脆弱性を持ちますが,公開された幾つかのPoCの一つに,Dockerコンテナ内で適 …