Vulnerable sample code -OS command injection-

gamzatti
Vote 0 Votes

OS コマンドインジェクション



- 脆弱なコードの例

<html>
<body>
  <form name="mailForm" action="mail.php" method="POST">
    メールアドレス: <input type="text" name="email" size="40"><br>
    <input type="submit" value="send">
  </form>
</body>
</html>
<?php
$email=$_POST['email'];
system("echo 'hello' | sendmail ".$email);
print "メールアドレス:".$email;
?>


- 入力

user1@example.com;cat /etc/passwd


- 対策
- エスケープする

system("echo 'hello' | sendmail ".escapeshellarg($email));


- OSコマンドを実行可能なAPI(systemとか)を使わない

(可能ならプログラムの機能を使う)

mb_send_mail($email,$subject,$body,"From:".$from);


-シェルを経由しないでコマンドを起動する

pcntl-execはシェルを経由しないが、CGIモードでないと使えないらしい


http://php.net/manual/ja/function.pcntl-exec.php
http://blog.tokumaru.org/2013/12/php_21.html


        

Leave a comment

About this Entry

This page contains a single entry by gamzatti published on April 23, 2017 12:05 AM.

How to use stored procedure in PHP was the previous entry in this blog.

Vulnerable sample code -XSS- is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.