vuln.sg  

vuln.sg Vulnerability Research Advisory

net2ftp の ウェブ FTP クライアントにおけるディレクトリトラバーサルの脆弱性

by Tan Chew Keong タン チュー ケオン
Release Date: 2008-06-11
Updated: 2008-06-17

   [en] [jp]

概要

net2ftp の ウェブ FTP クライアントには、ディレクトリトラバーサルの脆弱性が存在します。悪意のある人は、この脆弱性を利用し net2ftp のウェブサーバから、任意のファイルをダウンロードする事ができます。そのうえ、ウェブサーバに任意のコードを実行する可能性も存在します。


問題を確認したバージョン
  • net2ftp Version 0.96 (stable), and 0.97 (beta)

問題

net2ftp の ウェブ FTP クライアントには、ディレクトリトラバーサルの脆弱性が存在します。悪意のある人は、この脆弱性を利用し net2ftp のウェブサーバから、任意のファイルをダウンロードする事ができます。そのうえ、ウェブサーバに任意のコードを実行する可能性も存在します。

悪意のある人が、net2ftp へ細工された ZIP/TAR ファイルをアップロードして、net2ftp が、その ZIP/TAR ファイルを解凍したとき、net2ftp のウェブサーバ作業ディレクトリを越えたディレクトリに任意のファイルを作成される可能性があります。

解凍するとき、もし同じ名前のファイルが存在すると、そのファイルは、上書きできません。しかし、解凍おわると、net2ftp が、そのファイルを FTP サーバへアップロードします。

たとえば、ZIP/TAR ファイルに "../../../../../../../../../../etc/passwd" のファイルがあります。 net2ftp が、そのファイルは、"/etc/passwd" へ解凍したい。しかし、 net2ftp のウェブサーバに、"/etc/passwd" も存在するから、上書きできません。解凍おわって、net2ftp が、ウェブサーバ の "/etc/passwd" を悪意のある人の FTP サーバへアップロードします。

細工された ZIP/TARの例:


脆弱性のテスト

脆弱性のテストのためのファイルは こちらです。テストの方法は下記です。


Preparations for testing:

  1. Deploy net2ftp on a Linux test system with Apache web server.
  2. Ensure that you do not apply any additional security features like chroot, PHP "Safe mode", etc.
  3. Ensure that /etc/passwd is read-only by the Apache web server process. Warning: If /etc/passwd is writable by the Apache web server process, it will be deleted.
  4. Enable "display_errors" in php.ini and restart Apache web server.

Instructions for testing FTP client:

  1. Unzip the POC file into an empty directory. This gives net2ftpPOC.exe.
  2. net2ftpPOC.exe is a POC FTP server that contains a two hardcoded specially-crafted TAR and ZIP archives. These two archives will "steal" /etc/passwd when extracted.
  3. net2ftpPOC.exe will also be receiving the "stolen" /etc/passwd file.
  4. NOTE: Do NOT run net2ftpPOC.exe on a system that is connected to an untrusted public network. This POC FTP server does not perform any authentication and access-control restrictions!
  5. Go to the command prompt and run net2ftpPOC.exe on a Windows system. It will listen on FTP Port 21.
  6. IMPORTANT: Ensure that net2ftp is configured to use Passive mode. The POC FTP server only supports Passive mode.
  7. Use net2ftp to connect to the POC FTP server. You can use any username/password.
  8. You'll see a two archives on the POC FTP server, testzip.zip and testtar.tar (see below).
  9. Select testzip.zip OR testtar.tar by clicking on the checkbox beside them.
  10. Click on the "Unzip" button and specify / as the target directory. (see below)
  11. Submit the request to net2ftp. If error reporting is enabled in PHP, you will see the unlink error (earlier screenshot) as the result. At the same time, you will see /etc/passwd being uploaded to the POC FTP server (see below).
  12. View the "passwd" file that was saved to same directory as net2ftpPOC.exe to confirm that it was from the server that hosts net2ftp.
 


対策

Version 0.97 (stable) へのバージョンアップをしてください。


発見と報告の経緯

2008年06月05日 - 脆弱性の発見。
2008年06月06日 - ベンダーに報告しました。
2008年06月09日 - ベンダーは修正版をリリースしました。
2008年06月11日 - 本脆弱性の公開。
2008年06月17日 - 本脆弱性の詳細な情報の公開。


Contact
For further enquries, comments, suggestions or bug reports, simply email them to