Help us understand the problem. What is going on with this article?

危険なWordPressプラグインの作り方

More than 3 years have passed since last update.

危険なWordPressプラグインの作り方

by hissy
1 / 15

危険なWordPressプラグインの作り方

WordBench東京 3月勉強会「WordPress プラグイン祭り」の発表資料です。


WordPressプラグインの脆弱性の分類

〜Sucuriブログからの抜粋を添えて


SQLインジェクション

  • $wpdb の間違った使い方により発生。外部からデータベースから自由に情報が取り出せたり、変更できたり
  • 結果、ログインパスワードのハッシュが窃取されるなどの被害が起こる

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

  • Javascript を含んだ文字列が画面に表示されてしまうバグ。ログイン中の管理者のブラウザをJavascriptで操って不正な操作を行わせたり、Cookie情報を盗んだり

バックドア


ローカルファイルインクルージョン

  • 攻撃者が wp-config.php など重要なサーバー上のファイルの内容を読めてしまう

権限昇格


対策


そもそも、危険なことをしない

  • m9( ゚Д゚) <その処理、あなたのプラグインで本当に必要不可欠ですか?
    • SQLの実行が本当に必要?
    • 本当にサーバーにファイルを作成する必要がある?
    • 本当に任意のコードを実行する必要がある?
    • 本当にファイルをインクルードする必要がある?
    • 管理者にしかできてはいけない操作を、わざわざプラグインからできるようにする必要がある?

危険なことをするときは、危険なことをしてるという自覚を持つ

  • 危険なものはちゃんとチェックする
    • $wpdb->prepare()
    • validate_file()
    • $_GET, $_POST, $_REQUEST
  • ユーザーは信頼しない、自分も信頼しない

危険なプラグインの作り方

  • 横着する、これに尽きる
    • APIで実現可能なのに面倒だからSQLでやっちゃう
    • 必須でもないのに、ちょっとしたログや一時データの保管に、面倒だからファイルを作っちゃう
    • update_option() の第1引数を動的にしちゃう
    • require() fwrite() の対象を動的にしちゃう
    • エスケープせずに画面に表示しちゃう

危険なプラグインを作っていませんか?

自己チェックに便利なツールを開発しました!

インストール方法

git clone https://github.com/hissy/php-code-scanner.git
composer install

実行方法

bin/console wp-code-scanner /path/to/your-plugin

最後に宣伝:WordPress の解説書を執筆しました

エンジニアのためのWordPress開発入門

  • WordPress を知らないエンジニアが初めて WordPress に触れたとき、戸惑わないための本
  • 絶賛発売中! → Amazon
  • 著者:野島 祐慈、菱川 拓郎、杉田 知至、細谷 崇、枢木 くっくる

エンジニアのためのWordPress開発入門


もひとつ宣伝

コンクリートファイブジャパン株式会社では、案件増加、事業拡大につき絶賛新規採用募集中!
未経験可

  • ディレクター
  • PHPエンジニア
  • インフラエンジニア

詳細は懇親会で!

hissy
オープンソースCMS「concrete5」の日本国内での公式サポートを提供する企業「コンクリートファイブジャパン株式会社」の代表をやってます。根はエンジニア
https://concrete5.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした