みなさんこんにちは。小川です。
タイトルは少々釣り気味です。
突然ですが、僕たちはセキュアなサイトを構築する責任を持っています。
攻撃からサイトを守るためには、どのように攻撃されるかを知る必要があります。
というわけで今回「WPScan」というWordPressの脆弱性をスキャンするセキュリティ診断ツールを使って、WordPressサイトを攻撃してみたいと思います。
本来であれば当サイトで検証するべきなのですが、おもしろくないので九州某県で炭火焼き地鶏屋を営む僕の友人のTさんにお願いしてみることにしました。面倒見がよく、とてもやさしい先輩です。やるからにはIT企業の威信にかけてTさんのWordPressサイトをめった打ちにしたいと思います。
面倒ですが、許可をとらないと犯罪になってしまうので、事前にお願いすることにしました。
小川
Tさん、ごぶさたです。
T
おー、ひさしぶり。どうしたの?
小川
地鶏屋さんのサイトってWordPressですよね?
T
そうだよ。
小川
攻撃していいですか?
T
・・・・は?
絶対だめだろ。
セキュリティ対策を交換条件にまるめこみました。
敵を欺くにはまず味方からと言います。
ちょろいぜ。
WPScanの設定手順
WPScan WordPress Security Scanner
https://wpscan.com/wordpress-security-scanner
まずは本家サイトでzipをゲットだぜ。
使用環境は以下。
- OS X 10.11 El Capitan
- Ruby 2.0.0
ZIPファイルを解凍したら、ターミナルを起動してWPScanディレクトリに移動。
WPScanに必要なパッケージのインストール。
% sudo gem install bundler && bundle install
エラー
An error occurred while installing ffi (1.9.10), and Bundler cannot continue.
Make sure that `gem install ffi -v '1.9.10'` succeeds before bundling.
ぐぐったらXcodeのコマンドラインツールがインストールされていないからでるらしい
Xcodeを起動、アップデートさせてターミナルから
再度
% sudo gem install bundler && bundle install
ERROR: While executing gem ... (Errno:EPERM)
Operation not permitted - /usr/bin/bundle
rootに権限がないと怒られます。
OS X El Capitanから導入された新セキュリティシステムSIP(System Integrity Protection、rootless)が原因。El Capitanからrootでも変更不可の領域ができたようです。だけど解除できるとのことなので、今回に限り無効化にすることにしました。システム終了 / 電源ボタン押下後、Command+R
で復元システムを起動させ、ターミナルからcsrutil disable
でSIPを無効化できます。
再起動で通常起動後、ターミナルから以下のコマンド実行。
現在ログインしているユーザーに/usr/localの権限を与えます。
sudo chflags norestricted /usr/local && sudo chown -R $(whoami):admin /usr/local
おわったら、復元システムからSIPの設定を戻しておきましょう。戻すときは csrutil enable
です。
で、再度
% sudo gem install bundler && bundle install
ようやく準備できました。
WPScanの実行
WPScanの準備が整ったところで、Tさんに再度連絡。
小川
準備できました。
T
おおお、攻撃されるのにワクワクするな。
小川
いきますよ。
まずは簡単なスキャンから。
% wpscan -url https://xxxxxxx.xxx
ログインユーザーをスキャン。
% wpscan -url http://xxxxxxx.xxx -e u
ログインユーザーが特定できたところで、パスワードリストからブルートフォースアタックしてみます。
darkc0de.lst – Google Drive
https://drive.google.com/file/d/0B-c-aPfOv8-SOHA0QVRiOE5tRVk/edit
パスワードリストをダウンロードしてwpscanのディレクトリに入れて引数に指定します。
% wpscan —url http://xxxxxxx.xxx -w darkc0de.lst
17万のパスワードリストで攻撃します。
さっそくログインURLのwp-login.phpが503 Service Unavailableでアクセス不能になりました。
小川
どうですか。攻撃されてる気分は。
T
非常に胸くそ悪いです。
接続時間リミットを指定しなかったので、約17万件のパスワードのうち3,000ほど試して、2,000くらいの不正アクセスが検出されました。
コマンド引数の詳しい解説はこちらに記載があります。
WPScan 入門 – サイバーセキュリティ研究所
WordPressサイトを守るためのTIPS
まとめ
こんなに簡単に不正アクセスできるとは思っていませんでした。上記のような対策を施していないWebサイトが狙われてしまう理由もわかりますね。ネクストではこれを教訓にこのような不正アクセスの対象にならないようにセキュアなサイト構築を行いたいと思います。
最後に
ご協力いただいたTさんありがとうございました!
参考サイト