- - PR -
OSコマンドインジェクション...JavaにおけるRuntime.exec()
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-04-07 15:12
スレッド
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19046&forum=12&14 にレスするか新規スレッドにするかちょっと迷ったのですが、新規スレッドにしました。 http://www.atmarkit.co.jp/fsecurity/rensai/webhole02/webhole02.html この記事では、JavaのRuntime.exec()も対象となって いますが、私の環境ではインジェクションを再現できませんでした。 具体的には、Linux(RHL9)上のjava(J2SE SDK 1.4.2_07)にて public classs abc { public static void main(String[] arg) throws Exception { java.lang.Runtime("touch abc ; rm abc"); } } をコンパイル・実行させてみました。 もしインジェクションの可能性があるのなら、ファイル「abc」が一度作成され、 すぐに削除されるので、(もともとabcが無ければ)カレントディレクトリ の状態に何も変化が無いと思ったのですが、実行させてみると、 「;」「abc」「rm」の3つのファイルが出来上がっていました。 StringTokenizerにて分解されたexecの引数は、その2番目以降があくまでも 1番目のトークンをコマンドとして実行したときの引数として扱われている (よってシェルが関連する「;」「|」「&」「`」などもコマンドの引数と みなされる)ように見えるので、ここで試行した範囲では、コマンドインジェクションの 危険性は無いように見えるのですが、Runtime.exec()にてコマンドインジェクションの 危険性を伴うにはなんらかの条件があるのでしょうか? |
1