OSコマンドインジェクション[escapeshellarg]

2016年6月13日

PHP

PHPではshell_execやsystemなどの関数でシェルコマンド等(OSコマンド)を実行することができますが、その仕組みを悪用して不正なコマンドを実行させるのがOSコマンドインジェクションです。

 

 

スポンサーリンク

 

 

sample.html(上記のPHPファイルと同ディレクトリに置いておく)

 

上記のPHPコードにおいて、$inputがユーザからの入力であると仮定します。5行目においてコマンドを組み立てていますが、escapeshellarg関数によってエスケープすることによって cat sample.html は実行されない状態となります。

 

もし6行目の状態だと ls -l; cat sample.html のようにコマンドが実行されて、sample.htmlの中身が表示されるようになります。

 

コマンドの引数に渡すべき値はescapeshellarg関数を利用してエスケープすることが大切です。

 

escapeshellcmd関数は引数を含めたコマンド列全体に対してエスケープしますが、任意の数の引数を渡す場合による攻撃を防げないことが知られています。

 

 

参照ページ


 

PHPマニュアル

escapeshellarg

escapeshellcmd

 

 

 

 

LINEで送る
Pocket

Copyright © 2019 思考の葉 All Rights Reserved.  プライバシーポリシー