vuln.sg  

vuln.sg Vulnerability Research Advisory

3D-FTP の FTP クライアントにおけるディレクトリトラバーサルの脆弱性

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

   [en] [jp]

概要

3D-FTP の FTP クライアントには、ディレクトリトラバーサルの脆弱性が存在します。悪意のある人は、この脆弱性を利用し FTP クライアントの作業ディレクトリを越えたディレクトリにファイルを転送する事ができます。


問題を確認したバージョン
  • 3D-FTP version 8.01 (8.0 build 1)

問題

3D-FTP の FTP クライアントには、ディレクトリトラバーサルの脆弱性が存在します。悪意のある人は、この脆弱性を利用し FTP クライアントの作業ディレクトリを越えたディレクトリにファイルを転送する事ができます。

3D-FTP の FTP クライアントは、LIST/MLSD コマンドに対するレスポンスを適切に検査しないから、ディレクトリトラバーサルの脆弱性が存在します。ユーザーが、FTP サーバーから悪意のあるディレクトリをダウンロードしたら、攻撃者にユーザーの権限で FTP クライアントの作業ディレクトリを越えたディレクトリに任意のファイルを作成される可能性があります。

LIST/MLSD コマンドに対する悪意のあるレスポンスの例:


Response to LIST (backslash):

-rw-r--r-- 1 ftp ftp 20 Mar 01 05:37   \..\..\..\..\..\..\..\..\..\testfile.txt\r\n

Response to LIST (forward-slash):

-rw-r--r-- 1 ftp ftp 20 Mar 01 05:37   /../../../../../../../../../testfile.txt\r\n

Response to LIST (combination):

-rw-r--r-- 1 ftp ftp 20 Mar 01 05:37   ../..\/..\/..\/../..\/../..\/../testfile.txt\r\n

Response to MLSD (backslash):

type=file;modify=20080227074710;size=20;   \..\..\..\..\..\..\..\..\..\testfile.txt\r\n

Response to MLSD (forward-slash):

type=file;modify=20080227074710;size=20;   /../../../../../../../../../testfile.txt\r\n

Response to MLSD (combination):

type=file;modify=20080227074710;size=20;   ../..\/..\/..\/../..\/../..\/../testfile.txt\r\n
 


脆弱性のテスト

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


Instructions for testing FTP client:

  1. Unzip the POC file into a directory. This gives 3DFTPPOC.exe, 3DFTPPOC-forward.exe, and 3DFTPPOC-combination.exe.

    • 3DFTPPOC.exe is a POC FTP server that will send filenames with backslash directory traversal characters in response to LIST commands.
    • 3DFTPPOC-forward.exe is a POC FTP server that will send filenames with forward-slash directory traversal characters in response to LIST commands.
    • 3DFTPPOC-combination.exe is a POC FTP server that will send filenames with both backslash and forward-slash directory traversal characters in response to LIST commands.

  2. Go to the command prompt and run one of the POC FTP server on a system. It will listen on FTP Port 21.
  3. IMPORTANT: Ensure that 3D-FTP is configured to use Passive mode. The POC FTP server only supports Passive mode.
  4. Disable remote directory caching on 3D-FTP, under "Settings->Advanced TAB->Enable Cache". This is to ensure proper testing of the various combinations of directory traversal sequences.
  5. Use 3D-FTP to connect to the POC FTP server. You can use any username/password.
  6. You'll see a directory named /testdir on the POC FTP server (see below).
  7. If you traverse into that directory you'll see a file (testfile.txt) with directory traversal characters in its filename (see below).
  8. Now, if you attempt to download the /testdir directory into C:\aaaa\bbbb\cccc\etc, you'll notice that testfile.txt will be written into C:\ instead of into C:\aaaa\bbbb\cccc\etc\testdir\testfile.txt.

Hence, by tricking a user to download a directory from a malicious FTP server, an attacker can potentially leverage this issue to write files into a user's Startup folder and execute arbitrary code when the user logs on.

 


対策

Version 8.02 (8.0 build 2) へのバージョンアップをしてください。


発見と報告の経緯

2008年06月15日 - 脆弱性の発見。
2008年06月15日 - ベンダーに報告しました。
2008年06月15日 - ベンダーから答えを受け取りました。
2008年06月15日 - ベンダーは修正版をリリースしました。
2008年06月16日 - 本脆弱性の公開。


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