WordPress(ワードプレス)は頻繁に更新されていますよね。機能追加やバグフィックスの他、脆弱性に関する対応もあるのでなるべく最新版に更新するのがいいです。

アドオンで簡単に便利な機能を追加できるプラグインやテーマなども標的にされるようです。特にサポートが切れたプラグインなどを「有効」な状態で放置しておくのは、改ざんや踏み台にされる危険性が高まります。

Worpress 脆弱性のパターン

脆弱性といってもいろいろパターンがあるので、実例から脆弱性とその攻撃された場合の影響をご紹介しています。深掘りされたい方は、脆弱性対策情報データベース JVN iPediaへのリンクをそれぞれに貼っているので技術的な解説はそちらを参照してください。これら脆弱性はプラグインだけではなく、ワードプレス本体でもあり得るパターンです。

情報漏えい

情報を取得される可能性
https://jvndb.jvn.jp/ja/cwe/CWE-200.html

許可していない情報にアクセスされる可能性があります。パスが表示されたりする軽微なものもコレです。

クロスサイトスクリプティング(XSS)

情報を取得される、および情報を改ざんされる可能性
https://jvndb.jvn.jp/ja/cwe/CWE-79.html

クロスサイトリクエストフォージェリ(CSRF)

情報を取得される、情報を改ざんされる、およびサービス運用妨害 (DoS) 状態にされる可能性
https://jvndb.jvn.jp/ja/cwe/CWE-352.html

インジェクション

情報を取得される、情報を改ざんされる、およびサービス運用妨害 (DoS) 状態にされる可能性
https://cwe.mitre.org/data/definitions/74.html

SQLインジェクション

情報を取得される、情報を改ざんされる、およびサービス運用妨害 (DoS) 状態にされる可能性
https://jvndb.jvn.jp/ja/cwe/CWE-89.html

コード・インジェクション

情報を取得される、情報を改ざんされる、およびサービス運用妨害 (DoS) 状態にされる可能性
https://jvndb.jvn.jp/ja/cwe/CWE-94.html

パス・トラバーサル / ディレクトリ・トラバーサル

情報を改ざんされる可能性
https://jvndb.jvn.jp/ja/cwe/CWE-22.html

オープンリダイレクト

情報を取得される、および情報を改ざんされる可能性
https://cwe.mitre.org/data/definitions/601.html

不適切なアクセス制御

情報を改ざんされる可能性
https://cwe.mitre.org/data/definitions/284.html

不適切な入力確認

情報を改ざんされる可能性
https://jvndb.jvn.jp/ja/cwe/CWE-20.html

狙われたプラグイン・Wordpress本体への直接アクセスをご紹介

公開した記事のURL(パーマネントリンク)へアクセスすることで投稿した記事内容が表示されます。httpd/nginxのアクセスログを確認するとURL(パーマネントリンク)以外にphpファイルへ直接アクセスするパターンがあります。

脆弱性を利用しようと試みている攻撃側は、脆弱性に該当するプラグイン(phpファイル)へ直接アクセスするようです。ここではそのphpファイルへ直接アクセスのあったプラグインをご紹介しています。

なお、通常利用されることがあるadmin-ajax.php、xmlrpc.phpは怪しいアクセスから除外しています。

全体的な傾向として、無差別的な攻撃で狙われやすいファイル名があります。

  • force-download.php
  • downloadlink.php
  • download.php
  • wp-config.php~
  • .wp-config.php.swp
  • /?wpv-image=../wp-config.php

修正したファイル名を直接狙うパターンもありますね。バリエーションとして、

  • /wp-config.phpOLD
  • /wp-config.phpa
  • /wp-config.php.txt
  • /wp-config.php~~
  • /wp-config.phptmp
  • /wp-config.php.bak
  • /wp-config-sample.php~
  • /wp-config.php_old

等もあります。wp-config.phpへ直接アクセスしても何も表示されませんね。でもphp~やphp.old、php.bak等のファイル名になることでPHPファイルとしてではなくテキストファイルと認識されその内容がそのまま取得できてしまいます。

被害に遭わないための予防策

これを防ぐには、拡張子を.phpにしておくことが重要です。php.old.phpやphp.back.php等最後は必ず.phpにします。また、直接ファイル編集することでバックアップファイル(~)や一時ファイル(.swp)が作られてしまいます。アップロードする、非公開のフォルダで編集し、コピーするなどの手間で予防することが可能です。

wp-configファイルの内容にはデータベースサーバやデータベース接続用ユーザー名、パスワード、重要な情報が含まれています。漏れてしまった情報と脆弱性を利用し、記事の内容を改ざんされてしまう可能性が高まります。幸いなことにデータベース接続用のユーザー名、パスワードは自分で指定できるかと思います。上記のようなファイルがもし存在していたら、変更することをお勧めします。

 

所定のパスにアクセスするとテンポラリファイルを作るプラグインの特性を理解し、一時ファイルへアクセスするパターンも散見されます。どんな情報が取得できるのかはわかりませんが、ある一定期間しか存在しないファイルは無防備で重要な情報などを格納することがあり得ます。例えば以下ような一見関連性の内容なアクセスログが残ります。

/wp-content/plugins/php-event-calendar/server/file-uploader/にアクセスした直後に

=>/wp-content/uploads/up__tlpbw.phpへアクセス

=>/wp-content/uploads/file-manager/up__tlpbw.phpへアクセス

/wp-content/plugins/mobile-friendly-app-builder-by-easytouch/server/images.phpにアクセスした直後に

=>/wp-content/plugins/mobile-friendly-app-builder-by-easytouch/up__tlpbw.phpへアクセス

 

これからご紹介するプラグインをもし、インストール済みなら最新版に更新する、または無効した方がいいかもしれません。

advanced-uploader

  • /wp-content/plugins/advanced-uploader/upload.php

ajax-store-locator-wordpress_0

  • /wp-content/plugins/ajax-store-locator-wordpress_0/sl_file_download.php

barclaycart

  • /wp-content/plugins/barclaycart/uploadify/uploadify.php
  • /wp-content/plugins/barclaycart/uploadify/settings_auto.php

candidate-application-form

  • /wp-content/plugins/candidate-application-form/downloadpdffile.php

category-page-icons

  • /wp-content/plugins/category-page-icons/include/wpdev-flash-uploader.php
  • /wp-content/up__tlpbw.php

cherry-plugin

  • /wp-content/plugins/cherry-plugin/admin/import-export/upload.php
  • /wp-content/plugins/cherry-plugin/admin/import-export/settings_auto.php

 

WordPress fluid_forms 

  • /wp-content/plugins/fluid_forms/file-upload/server/php/index.php
  • /wp-content/plugins/fluid_forms/file-upload/server/php/

formcraft

  • /wp-content/plugins/formcraft/file-upload/server/php/upload.php

 

google-mp3-audio-player

  • /wp-content/plugins/google-mp3-audio-player/direct_download.php

hd-webplayer

  • /wp-content/plugins/hd-webplayer/playlist.php

magic-fields

  • /wp-content/plugins/magic-fields/RCCWP_upload_ajax.php

mobile-friendly-app-builder-by-easytouch

  • /wp-content/plugins/mobile-friendly-app-builder-by-easytouch/server/images.php
  • /wp-content/plugins/mobile-friendly-app-builder-by-easytouch/up__tlpbw.php

php-event-calendar

  • /wp-content/plugins/php-event-calendar/server/file-uploader/
  • /wp-content/plugins/php-event-calendar/server/file-uploader/up__tlpbw.php

recent-backups

  • /wp-content/plugins/recent-backups/download-file.php

reflex-gallery

  • /wp-content/plugins/reflex-gallery/admin/scripts/FileUploader/php.php
  • /wp-content/uploads/2018/01/up__tlpbw.php

revslider

  • /wp-content/plugins/revslider/temp/update_extract/revslider/db.php

sam-pro-free

  • /wp-content/plugins/sam-pro-free/sam-pro-ajax-admin.php

simple-image-manipulator

  • /wp-content/plugins/./simple-image-manipulator/controller/download.php

Tevolution

  • /wp-content/plugins/Tevolution/tmplconnector/monetize/templatic-custom_fields/single-upload.php 
  • /wp-content/themes/Directory/images/tmp/up__tlpbw.php

ungallery

  • /wp-content/plugins/ungallery/source_vuln.php

viral-optins

  • /wp-content/plugins/viral-optins/api/uploader/file-uploader.php

wp-ajax-form-pro

  • /wp-content/plugins/wp-ajax-form-pro/ajax-form-app/uploader/do.upload.php
  • /wp-content/plugins/wp-ajax-form-pro/ajax-form-app/uploader/uploads/up__tlpbw.php

 

wp-custom-pages

  • /wp-content/plugins/wp-custom-pages/wp-download.php

wp-ecommerce-shop-styling

  • /wp-content/plugins/wp-ecommerce-shop-styling/includes/download.php

wp-hide-security-enhancer

  • /wp-content/plugins/wp-hide-security-enhancer/router/file-process.php

WP Mobile Detector

  • /wp-content/plugins/wp-mobile-detector/resize.php
  • /wp-content/plugins/wp-mobile-detector/cache/db.ph

wp-symposium

  • /wp-content/plugins/wp-symposium/server/php/index.php
  • /wp-content/plugins/wp-symposium/server/php/uqeTLROokLAFzL.php
  • /wp-content/plugins/wp-symposium/server/php/zxZdCsgcQyBpng.php

wp-support-plus-responsive-ticket-system

  • /wp-content/plugins/wp-support-plus-responsive-ticket-system/includes/admin/downloadAttachment.php

wptf-image-gallery

  • /wp-content/plugins/wptf-image-gallery/lib-mbox/ajax_load.php

 

 

攻撃されているテーマ(Theme)のPHPファイル

テーマもプラグインと同様に狙われます。採用しているテーマとは関係なく、ダイレクトにアクセスしてきているので脆弱性が明らかになっているPHPファイルがあればそのまま情報を抜き出すようなアクセスでした。これらのテーマを採用されている方は、修正ずみの新しいバージョンへ速やかにアップデートしましょう。

acento

  • /wp-content/themes/acento/includes/view-pdf.php

antioch

  • /wp-content/themes/antioch/lib/scripts/download.php

authentic

  • /wp-content/themes/authentic/includes/download.php

cafesalivation

  • /wp-content/themes/cafesalivation/download.php

churchope

  • /wp-content/themes/churchope/lib/downloadlink.php

clockstone

  • /wp-content/themes/clockstone/theme/functions/uploadbg.php
  • /wp-content/themes/clockstone/theme/functions/up__tlpbw.php

Coldfusion

  • /wp-content/themes/Coldfusion/includes/uploadify/upload_settings_image.php

epic

  • /wp-content/themes/epic/includes/download.php

felis

  • /wp-content/themes/felis/download.php

Ghost

  • /wp-content/themes/Ghost/includes/uploadify/upload_settings_image.php

green_farming_new

  • /wp-content/themes/green_farming_new/download.php

kap

  • /wp-content/themes/kap/download.php

liberator

  • /wp-content/themes/liberator/inc/php/download.php

linenity

  • /wp-content/themes/linenity/functions/download.php

lote27

  • /wp-content/themes/lote27/download.php

MichaelCanthony

  • /wp-content/themes/MichaelCanthony/download.php

markant

  • /wp-content/themes/markant/download.php

mTheme-Unus

  • /wp-content/themes/mTheme-Unus/css/css.php

NativeChurch

  • /wp-content/themes/NativeChurch/download/download.php

nishizawa_tmp

  • /wp-content/themes/nishizawa_tmp/force-download.php

oxygen-theme

  • wp-content/themes/oxygen-theme/download.php

qualifire

  • /wp-content/themes/qualifire/scripts/admin/uploadify/uploadify.php

rowe

  • /wp-content/themes/rowe/download/download.php

sketch

  • /wp-content/themes/sketch/wp-ajax24.php

social-networking-e-commerce-1

  • /wp-content/plugins/social-networking-e-commerce-1/classes/views/social-options/form_cat_add.php

SMWF

  • /wp-content/themes/SMWF/inc/download.php

TheLoft

  • /wp-content/themes/TheLoft/download.php

trinity

  • /wp-content/themes/trinity/lib/scripts/download.php

u_parts

  • /wp-content/themes/u_parts/force-download.php

urbancity

  • /wp-content/themes/urbancity/lib/scripts/download.php

yakimabait

  • /wp-content/themes/yakimabait/download.php

 

その他、未整理の情報ですが、以下のようなアクセスがあります。

  • /administrator/components/com_simplephotogallery/lib/uploadFile.php
  • /components/com_sexycontactform/fileupload/index.php
  • /fckeditor/editor/filemanager/connectors/php/upload.php
  • /hrtps.php
  • /sql/sql.php 
  • /msd1.24.1/sql.php
  • /msd1.24.2/sql.php
  • /msd1.24.3/sql.php
  • /admin/sql/sql.ph
  • /dump/sql.php
  • /myadmin/sql.php
  • /msd/sql.php
  • /dumper/sql.php
  • /Mysqldumper/sql.php
  • /backups/sql.php
  • /wp-content/uploads/年/月/settings_auto.php

まとめ

基本Wordpressは無料です。ソースコードも公開されているのでブログを立ち上げる際安心感があります。この安心感は脆弱性を利用する攻撃者にとっても同じです。プラグインやテーマも同様です。例えば有料プラグイン・テーマ使っているから大丈夫っていう法則は成り立たないと思います。

WordPressは全世界の1/4のサイトに利用されているという統計もあるほど多くの人が使っている、動作しているサービスです。様々な人が利用する、参照することで一種の公開デバッグ・テストが行わているという見方もできます。それでも最新リリースの度に脆弱性が散見できます。

プラグイン開発者、テーマ開発者が多くの脆弱性に対応するための対策をしているとは考え難いです。実現する機能・デザイン優先かもしれません。問題があったら速やかに対処し、最新版を提供する流れの方がしっくりきますよね。

大した情報ないから漏れても大丈夫って思いがちです。でも、改ざん、悪用され、想定外の事に巻き込まれてしまうっていうリスクもあり得ます。アップデートは数回クリックで完了します。リスクは取らずに安心をとりましょう!