Linuxをいじっているので、その中のツールをまた紹介しようと思う。今回は、WordPressの脆弱性診断をおこなってくれるツールWPScanを使ってみる。WPScanとは何かWordPressは世界中で人気があり広く使われていることから、これを狙ったアタックが多いのも事実である。既知の脆弱性がある古いバージョンのものを使っていると危ない。いうことで、WordPressをHTTPスキャンすることで脆弱性診断が行えるのがこのWPScanである。Linuxでなくとも動かすことができる(最初のbundlerで色々入れないといけないのが面倒だが......)。過去の脆弱性を丁寧にリストアップしてくれており、なかなか便利そうなツールだ。Linuxにはデフォルトで入っているので、コマンドラインからwpscanと叩けば良い。引数無しで実行すると使い方のヘルプが表示される。ここでは代表的な使い方を順に見てみる。オンラインスキャンまずはおもむろにノーマルな(?)オンラインスキャンをおこなってみる。このモードは単純に外から見える部分をアクセスして、プラグインなどに脆弱性が無いかを診断してくれる。オプションに、宛先URLを指定すれば良い。00:00:04見ての通り、脆弱性を検知しご丁寧にその解説URL(モノによってはそのExploitコードも^^;)まで紹介してくれる。いうファイルを脆弱性として診断している。このスクリプトはデフォルトそのままだとエラーになるので、以下のようにPHPのエラーが出てDocumentRootの物理パスが漏洩してしまうようだ。このスキャンの際のアクセスログを見ていると、以下のようにDB設定を行うwp-config.phpについてありがちなバックアップファイルを探してくれている。usersモードというのを使ってみる。これはWordPressに設定しているユーザ一覧を表示してくれる。このカギは、アクセスログを見てみると分かる。usersモードでアクセスした際のApacheのアクセスログは以下のようになっている。8494WordPressでは、ユーザのログインIDには数値のインデックスが付いている。形でアクセスすると、そのインデックス番号のユーザが作成した記事が見られるようになっている。このユーザごとのまとめページの「作成者」は、デフォルトではログインIDが表示されてしまう。ログインIDを取得すれば、あとはそこからブルートフォースアタックがやってくるという寸法である。これを防ぐためには、ログインIDと表示される名前を別にすれば良い。Name,あるいはニックネーム)は管理画面のユーザ設定から変更可能である。ここで設定できる「ニックネーム」を変えると、外から見える作成者の名前も変更される。ログインIDを推察されないためにも、必ず変えておいた方がいいだろう。この例では、guestというログインIDについて、ニックネームとしてguest-nicknameという値を設定している。本来ならば、そもそもユーザを新規追加するときにニックネームを入れさせて欲しいのだが、何故かWordPressではそれはできない。新規ユーザ作成画面に、ニックネームを入力する項目が無いのだ。そのためまずユーザ新規作成を完了してから、改めて設定画面を開き直してニックネームを設定......としないといけない。不親切、というか意味不明である。ここまで書いておいてちゃぶ台をひっくり返すが、実はニックネームを付けていてもスキャンをすると元のIDは取れてしまう。guestのニックネームはguest-nicknameにしたから、もう元のログインIDは出ていないはずだけど......。このカラクリは、結局よく分からなかった。記事が無いと言われるため、たとえ投稿がゼロでもユーザが存在するかどうかの判別は可能である。なんだか中途半端ですがこれでおしまい。追記どこからログインIDを取得しているか分かったので追記しました。関する罪」の情報公開請求をしました月別アーカイブはてなブログをはじめよう!ozumaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。