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:
- Deploy net2ftp on a Linux test system with
Apache web server.
- Ensure that you do not apply any additional
security features like chroot, PHP "Safe mode", etc.
- 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.
- Enable "display_errors" in php.ini and restart
Apache web server.
Instructions for testing FTP client:
- Unzip the POC file into an empty directory.
This gives net2ftpPOC.exe.
- 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.
- net2ftpPOC.exe will also be
receiving the "stolen" /etc/passwd file.
- 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!
- Go to the command prompt and run net2ftpPOC.exe
on a Windows system. It will listen on FTP Port 21.
- IMPORTANT: Ensure that net2ftp is configured to
use Passive mode. The POC FTP server only supports
Passive mode.
- Use net2ftp to connect to the POC FTP server.
You can use any username/password.
- You'll see a two archives on the POC FTP
server, testzip.zip and testtar.tar
(see below).
- Select testzip.zip OR testtar.tar
by clicking on the checkbox beside them.
- Click on the "Unzip" button and specify / as
the target directory. (see below)
- 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).
- 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日 - 本脆弱性の詳細な情報の公開。