いとも簡単に可視化されるほころび
デモンストレーションの第一歩は、ターゲットを定める工程から始まった。野溝氏はスクリーンに実際の画面を映しながら、検索エンジン「Shodan」の使い方を紹介する。
「Shodan」は、インターネットに公開されているサーバーやデバイスの情報を収集・検索できるサービスだ。無料のアカウントでも利用可能で、検索ボックスにキーワードを入れるだけで、世界中の対象機器の情報が一覧で表示される。
実際に検索すると、該当するIPアドレスとともに稼働中のサーバー数が表示され、そこから詳細なポート情報やバージョン情報も確認できる。古いバージョンを指定すれば、脆弱性を抱えたサーバーを簡単に見つけることも可能だ。検索条件を加えれば、日本国内のサーバーに絞って調査することもできるし、データベースのポートが外部に露出しているサーバーを一覧で表示することも可能になる。
「ただし、Shodanで表示される情報はあくまでも自動で収集されたもので、正確性が保証されているわけではありません。また、攻撃者をおびき寄せるために意図的に設置された『ハニーポット』が含まれているケースもあります」と野溝氏は補足する。
ここからは、野溝氏がかつて立ち上げた個人ブログを例に、調査の様子が紹介された。使用していたのは、レンタルサーバーの「WordPress簡単インストール機能」だ。このような機能を利用すると、HTTPやHTTPSといった必要なポートだけでなく、FTPやSSHなどのポートが自動的に開いてしまうことがある。
「私自身も『閉じなきゃなあ』と思いながら放置しているポートがあります。ポートが開いているからといって即リスクになるわけではありませんが、使っていないなら閉じるのが原則。こうした“無用な公開”の蓄積が、セキュリティホールになるんです」(野溝氏)
攻撃者は、こうしたネットワーク上の“ほころび”を手がかりにターゲットを絞り込んでいく。Shodanなどの検索結果を起点に「この相手を狙おう」と定めたあとは、ポートスキャンや脆弱性の洗い出しといった、より詳細な情報の収集に移る。
ここから先の工程は、インターネット上の第三者環境で行うわけにはいかない。そこで使用されたのが、野溝氏があらかじめ構築した仮想マシン環境だ。運用されているのは、WordPress製の架空の自動車教習所サイト。その名も「サイバーゼリヤ教習所」だ。「サイゼリヤで昼食を取っていたときに思いついたから」という、ゆるいエピソードにしばし会場の空気が和む。
この仮想環境には、「Kali Linux」というセキュリティ特化型のLinuxディストリビューションが用いられている。Debianベースで構成されており、ペネトレーションテストやフォレンジック調査に用いられる各種ツールがプリインストールされている。
いよいよ攻撃準備の核心へ。まずはポートスキャンツール「Nmap」を使い、ターゲットとなるサーバーの開放ポートを確認していく。スキャンの結果、HTTP(80番)、SSH(22番)、MySQL(3306番)といった主要ポートが開いていることが分かった。
さらに詳細な調査のため、オプションを付けて再スキャンを実施。ApacheやSSH、MySQLのバージョン情報に加え、WordPressが稼働していることも明らかになる。
ここで登場したのが、WordPress専用の脆弱性診断ツール「WPScan」だ。Kali Linuxにプリインストールされており、WordPress特有のリスクを迅速に洗い出してくれる。今回のデモ環境では、「Royal Elementor Addons」というプラグインが古いバージョン(1.3.78)で使用されており、既知の脆弱性を抱えている可能性が高いことが判明した。
さらに、wp-config.phpのバックアップファイルがWeb上に露出しているという警告も表示された。これは、本来絶対に公開されるべきでない設定ファイルであり、実際に開いてみると、データベース名やユーザー名、パスワードなどの認証情報が平文で記載されていた。
「こうした“うっかり”の積み重ねが、大きなリスクになる。もしMySQLのポートが開いている状態であれば、この情報を使って内部にアクセスされてしまう可能性もあります」(野溝氏)
脆弱性と構成情報が明らかになった次は、ログイン認証の突破を目指す。まずはWordPressに登録されているユーザー名を特定。ログイン画面(/wp-login.php)では、存在しないユーザー名を入力すると「このユーザーは登録されていません」と返ってくるため、ユーザーの存在有無が推定できてしまう。
WPScanを用いれば、この作業も自動化できる。デモ環境では、「tanaka」と「maintenance」の2ユーザーが存在することが分かった。

ターゲットは「tanaka」ユーザー。ここで行われたのは、事前に用意されたパスワードリストを用いた「辞書攻撃」だ。GitHubなどでは、よく使われるパスワードのリストが公開されており、「password」「123456」「qwerty」などのワードが並んでいる。攻撃者はこれらを目的に応じて使い分けているのだ。
再びWPScanを用い、tanakaユーザーに対して辞書攻撃を開始。リストに基づいてログイン試行を繰り返す中、「pokemon」というパスワードで見事ログインに成功した。
「tanakaさんはポケモン好きだったのかもしれませんね」。冗談を交えつつ、野溝氏は安易なパスワードの脆弱さについて改めて警鐘を鳴らす。セキュリティ研修で「強固なパスワードを使いましょう」と繰り返し説かれる理由が、まさにこの現実にある。