コマンド・インジェクション恐るべし

今、PHPであるアプリを作っていて、セキュリティを固めている途中。
今回は、コマンド・インジェクションがテーマ。XSSとかSQLインジェクションもあとでやります。

コマンド・インジェクションは一応知っていたけど、復習&実践&メモ。


こちらを参考にした

コマンド・インジェクションは簡単に言うと、
「外部から任意の OS コマンドを実行すること」
である。

上記の参考ページに書いてあるスクリプトを test.cgi に書き、
CGIの実行できるフォルダへアップする。
そして、http://〜〜/test.cgi?filename=|ls%20-la%20/
な感じでアクセスすると・・・。


Linux のコマンドで、ls -la と打っているとの同じだ。
あ〜、恐ろしや。。


ところで、開発中のPHPのアプリに上記の脆弱性があるのかと言うと、
「ない」
である。

他にどんな原因が考えられるかと言うと、コチラを参考に調べた結果。

(1) 直接指定(シェルスクリプト
(2) open()関数の使用(Perl) ←さっきやったやつ。
(3) 引数をシェルに渡す関数の使用(ほとんどの言語)

それで、今回のアプリで脆弱性がないか調べる。

(1) 直接指定(シェルスクリプト
シェルスクリプトで書いていないので、ありえない。

(2) open()関数の使用(Perl) ←上記でやったやつ。
Perlで書いていないので、ありえない。

(3) 引数をシェルに渡す関数の使用(ほとんどの言語)
PHPにもシェルコマンドを実行できるメソッド(system)はあるが、利用していないので、ありえない。
けど、とりあえずやってみた。

うーむ。しっかり実行される。恐ろしや。


上記のことから、コマンドインジェクションはない!
と言えると思う。

他に、Webアプリでコマンド・インジェクションの可能性があったら教えてください(^^;