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

More than 1 year has passed since last update.


危険な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エンジニア

  • インフラエンジニア

詳細は懇親会で!