Webサイトの脆弱性診断をやってみた_WPScan

Pocket

30代未経験ネットワークエンジニアのshin@セキュリティエンジニアになるため、勉強中です。

今回は、Kali Linuxの「WPScan」を使用して、WordPressの脆弱性の診断をやってみました。
※Kali Linuxのインストール手順は割愛します。

WPScanとは

WPScanとは、セキュリティの専門家やブログ管理者がサイトのセキュリティをテストするために作成したWordPress脆弱性スキャナで、無料のサービスだそうです。

WPScanのサイトにある説明は以下のように記載されています。

WPScan is a free, for non-commercial use, black box WordPress vulnerability scanner written for security professionals and blog maintainers to test the security of their sites.

簡単に言えば、WordPressのサイトに悪意のある人から攻撃されるような問題(欠陥)がないかを自動で確認するツールということです。

WPScanを使って何ができるのか?

WPScanを使用することにより以下のようなことが出来ます。

  1. 自分のサイト(WordPress)に脆弱性がないかを確認できる
  2. ログインユーザを検索し、パスワード攻撃ができる
  3. 脆弱性があった場合に対応することでセキュリティを強化することができる

環境

・ターゲット用WordPress(OWASPBWA)
・攻撃用PC(Kali Linux)

構成

今回の目的

今回の目的は、ターゲットPCのWordPressサイトに対して、WPScanを行い脆弱性の情報を確認までを行うことを目的とします。
脆弱性をどのように使用して攻撃するかは別途、書きたいと思います。

それでは、WPScanをやってみたいと思います。
※許可なしに人のサイトでやるのはやめてください。迷惑がかかるので自分のサイトまたは、自宅の環境で行ってください!

事前準備

まずは、診断するための、攻撃される用のテスト用WordPressを作成します。
テスト用のサイトは、「OWASPBWA」というものを使用します。

以下サイトよりダウンロードし、起動します。https://sourceforge.net/projects/owaspbwa/files/

起動したことを確認し、対象のIPアドレスを確認。
※今回の対象のWordPressのURLは「192.168.89.148/wordpress」となります。

それでは、実際にWPScanを実行してみましょう

手順

  1. Kali Linuxの「アプリケーション」>「03-Web Application Analysis」>「wpscan」を選択
  2. 次のコマンドを実行します。
    wpscan –url http://192.168.89.148/wordpress/
    ※その他の詳細なコマンドなどは、公式ページを参照するか、「wpscan –help」で確認ください
  3. 実行後、「DBをUpdateしますか?」と出ますが、気にせずEnterで実行
  4. 自動で診断が始まるので、結果を確認
  5. 実行後、結果を確認
    以下のような結果になりました。
    ※長すぎるので、抜粋しています。

ここから——————————

root@kali-test:~# wpscan –url http://192.168.89.148/wordpress/
_______________________________

[i] It seems like you have not updated the database for some time
[i] Last database update: 2018-07-17
[?] Do you want to update now? [Y]es [N]o [A]bort update, default: [N] >
[+] URL: http://192.168.89.148/wordpress/
[+] Started: Mon Sep 17 15:59:29 2018

[+] Interesting header: SERVER: Apache/2.2.14 (Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/0.9.8k Phusion_Passenger/4.0.38 mod_perl/2.0.4 Perl/v5.10.1
[+] Interesting header: STATUS: 200 OK
[+] Interesting header: X-POWERED-BY: PHP/5.3.2-1ubuntu4.30
[+] XML-RPC Interface available under: http://192.168.89.148/wordpress/xmlrpc.php [HTTP 200]
[+] Found an RSS Feed: http://192.168.89.148/wordpress/?feed=rss2 [HTTP 200]
[!] Detected 1 user from RSS feed:
+——-+
| Name |
+——-+
| admin |
+——-+
[!] Includes directory has directory listing enabled: http://192.168.89.148/wordpress/wp-includes/

[+] Enumerating WordPress version …
[!] The WordPress ‘http://192.168.89.148/wordpress/readme.html’ file exists exposing a version number

[+] WordPress version 2.0 (Released on 2007-09-24) identified from meta generator, links opml, advanced fingerprinting
[!] 15 vulnerabilities identified from the version number

[!] Title: WordPress 1.5.1 – 2.0.2 wp-register.php Multiple Parameter XSS
Reference: https://wpvulndb.com/vulnerabilities/6033
Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-5105
Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-5106
[i] Fixed in: 2.0.2

~~~~~~~~~~~~~~~~~~~~~~~~~~
省略

[+] Enumerating plugins from passive detection …
| 1 plugin found:

[+] Name: mygallery
| Location: http://192.168.89.148/wordpress/wp-content/plugins/mygallery/
| Changelog: http://192.168.89.148/wordpress/wp-content/plugins/mygallery/changelog.txt
[!] Directory listing is enabled: http://192.168.89.148/wordpress/wp-content/plugins/mygallery/

[!] We could not determine the version installed. All of the past known vulnerabilities will be output to allow you to do your own manual investigation.

[!] Title: myGallery <= 1.4b4 – Remote File Inclusion
Reference: https://wpvulndb.com/vulnerabilities/6506
Reference: https://www.exploit-db.com/exploits/3814/

[+] Finished: Mon Sep 17 15:59:33 2018
[+] Elapsed time: 00:00:04
[+] Requests made: 78
[+] Memory used: 49.688 MB

ここまで———————————————–

[!]がある場所が、何かしら脆弱性のあるということです。
一つ取り上げると、WordPress1.5.1~2.0.2を使っている人は、クロスサイトスクリプティングの脆弱性がありますよと以下の結果で言われています。

「[!] Title: WordPress 1.5.1 – 2.0.2 wp-register.php Multiple Parameter XSS」

その場合の対応バージョンは、「[i] Fixed in: 2.0.2」といった感じで、教えてくれるみたいです。
※修正バージョンと、対象バージョンが同じ「2.0.2」だったため、確認したら、どうやら、「1.5.1~2.0.1」が正しいようです。

ちなみに、WordPressにインストールされているプラグインとそのバージョンの診断をしたい場合は以下のコマンドを実行します。

wpscan –url http://192.168.89.148/wordpress/ -e ap

結果を抜粋します。
ここから————————
[+] Enumerating all plugins (may take a while and use a lot of system resources) …

Time: 00:02:04 <=================================================> (75421 / 75421) 100.00% Time: 00:02:04

[+] Name: wpSS
| Location: http://192.168.89.148/wordpress/wp-content/plugins/wpSS/
| Readme: http://192.168.89.148/wordpress/wp-content/plugins/wpSS/readme.txt
[!] Directory listing is enabled: http://192.168.89.148/wordpress/wp-content/plugins/wpSS/

[!] We could not determine the version installed. All of the past known vulnerabilities will be output to allow you to do your own manual investigation.

[!] Title: Spreadsheet <= 0.6 – SQL Injection
Reference: https://wpvulndb.com/vulnerabilities/6482
Reference: https://www.exploit-db.com/exploits/5486/

——————-ここまで

プラグインの脆弱性と該当するExploitの情報も出てきてますね。
今回の場合ですと、スプレッドシートのバージョンが「0.6」以下の場合、SQLインジェクションの攻撃を受けるよということがわかります。
「[!] Title: Spreadsheet <= 0.6 – SQL Injection 」

以上でWPScanを使った、診断は終了です。
ちなみに私のサイトもチェックしてみたのですが、今のところは大きな脆弱性は見当たりませんでした。
※プラグインの脆弱性も確認した場合2時間かかりました。。

まとめ

今回のまとめ

  • WPScanを使うことで、自分のサイトに脆弱性があるかを確認することができる
  • 脆弱性が検出された場合は、対応するバージョンにアップする

簡易的な診断なため、これだけやれば大丈夫!ということではないですが、ご自分のサイトがどのような状態であるかを確認するには簡単なツールですので、一度確認してみてはいかがでしょうか。
もし、やり方がわからないよ、って方がいましたらご連絡いただければサポートさせていただきます!

以上です。ありがとうございました。

Pocket

DNSスプーフィングをやってみた

Pocket

30代未経験ネットワークエンジニアのshin@セキュリティエンジニアになるため、勉強中です。

今回は、Kali Linuxを使用して、DNSスプーフィングをやってみました。
Kali Linuxのインストール方法は以下サイトを参考にしてください。

https://doruby.jp/users/r357_on_rails/entries/Kali-Linux-2017-3

DNSスプーフィングとは

前回のARPスプーフィングと似たようなもので、ARPスプーフィングはARPテーブルを書き換えましたが、DNSスプーフィングはDNSを書き換えます。
DNSを書き換えることで、本来アクセスしたいWEBサイトではなく、攻撃者が準備したWEBサイトに誘導され、最終的に情報を盗まれてしまう怖い攻撃です。
※ちなみにDNSとは、「Domain Name System」のことで、ドメイン名からIPアドレスを解決するためのプロトコルです。
例えば、Google先生にアクセスするときに、まずはURLバーに「http://google.com」を入力してGoogle先生にアクセスしますよね。
その中の「google.com」というのがドメインです。
ただ、パソコン上では、Google先生にアクセスする場合、基本的にはIPアドレスでアクセスしに行っています。
IPアドレスでアクセスしてみましょう。
http://216.58.221.174

ただ人がランダムなIPアドレスを覚えるのは大変なため、DNSを使ってドメイン名とIPアドレスを紐づけしてドメインで目的のWebサイトにアクセスできるようにしています。

話しがそれました。本題に戻りましょう。

DNSスプーフィングを簡単に言うと、メールの宛先のアドレスを途中で盗んで、自分のアドレスに書き換えて中身を見るみたいなイメージです。
ARPスプーフィングのDNS版ですね。

それでは実際にやってみましょう。
※何度も書いていますが公共の場や、会社では迷惑がかかるので自宅の環境で行ってください!

環境

・ターゲットPC(Windows)
・攻撃用PC(Kali Linux)
・ルータ

構成

●端末情報

内容 攻撃者PC ターゲットPC ルータ
IPアドレス 192.168.89.169 192.168.89.157 192.168.89.2
MACアドレス 00:0c:29:b4:30:60 00:50:56:e0:94:64

●DNS情報

内容 スプーフィング前 スプーフィング後
サイト Webサイト Webサイト
IPアドレス x.x.x.x 192.168.89.169

今回の目的

今回の目的は、ターゲットPCをDNSスプーフィングで攻撃者が作成したサイトにアクセスさせ、ID/PWを入手することです。
対象のサイトは「楽天サイト」のログイン画面とします。
(楽天さんターゲットにしてすいません。いつも利用しているので、お許しください。。)

以下のSTEPに沿って行います。

  1. ターゲットPCをARPスプーフィングとDNSスプーフィングを仕掛ける
  2. Kali LinuxでWebサイトのコピーを作成する
  3. ターゲットPCを楽天のログインサイトにアクセスさせ、入力したID/PWを入手する

STEP1 ターゲットPCをARPスプーフィングとDNSスプーフィングを仕掛ける

ARPスプーフィングの詳細な手順は前回を参照ください。
ARPスプーフィングをやってみた

動画だけでよければ以下の動画を参照してみてください。

それでは、DNSスプーフィングを仕掛けていきます。

●手順
  1. Kali Linuxのターミナルより、「leafpad /etc/ettercap/etter.dns」を実行
  2. 「# microsoft sucks ;)~」の記載の下に以下を追加し、保存する「rakuten.co.jp* A 192.168.89.169」
  3. Ettercap>「plugins」>「Manage the plugins」>「dns_spoof」をダブルクリックする

以上で、DNSスプーフィングの設定は完了です。
以下の動画でも手順を確認できますので、よかっから観てください。

※補足
スプーフィングされる前と後の、nslookupの結果です。

STEP2 Kali LinuxでWebサイトのコピーを作成する

サイトのコピーをするには、SET(Social-Engineer Toolkit)を使用します。

●手順

  1. Kali Linuxのターミナル>setoolkit
  2. 1を選択「1) Social-Engineering Attacks」
  3. 2を選択「2) Website Attack Vectors」
  4. 3を選択「3) Credential Harvester Attack Method」
  5. 2を選択「2) Site Cloner」
  6. コピーサイトを作成するIPアドレスを入力
    今回は、そのままKali LinuxのPCに作成するため、何もせずにEnter
  7. コピーするサイトのURLを入力します以下のURLを入力し、Enterを押す
    URL:https://grp01.id.rakuten.co.jp/rms/nid/vc?__event=login&service_id=top
    ※上のURLは楽天のログインのURLです。
  8. もう一度Enterを押す
  9. サイトがコピーされたので、一応確認のため、Kali LinuxのFireFOXを開いて、
    URLに「localhost」を入力して、Enterを押す
  10. 楽天のログイン画面が表示されたことを確認します

次は、ターゲットPCにDNSスプーフィングを仕掛けます。

STEP3 ターゲットPCをコピーサイトにアクセスさせID/PWを入手する

●手順

  1. ターゲットのPCのブラウザ(IE)を立ち上げます
  2. ブラウザに以下URLを入力
    http://rakuten.co.jp/
  3. ID/PWに以下を入力し、ログインを選択
    ID:TEST-ABC
    PW:TEST-ABC
  4. リダイレクトされ、本物のサイトへ移動する
  5. Kali Linux側のターミナルを確認すると、3で入力した、ID/PWが表示されている

以上が、ARPスプーフィングを行いID/PWまでを入手する方法でした。
本物のサイトをコピーしているため、見分けがつきませんよね。
かつ、ログイン後に本物のサイトにリダイレクトされるため、ID/PWの入力間違いをしたのかと勘違いしてしまいますよね。

対策について

今回の攻撃について対策ですが、基本的には以下になるかと思います。

  1. ARPスプーフィング対策を行うこと
  2. 前回のSSLストリップでも書いた、ID/PWを入力する画面のURLには、SSLの鍵マークがついているかを確認すること
  3. GoogleChomeを使うこと
    ※GoogleChomeで同じ「rakuten.co.jp」と入力しても、クローンサイトにはアクセスされずに、正しい楽天のサイトへアクセスされました。

参考本

Pocket