码迷,mamicode.com
首页 > Web开发 > 详细

php_audit--命令注入攻击

时间:2015-04-18 23:24:08      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:

php中可以使用如下5个函数来执行外部的应用程序或函数:

    string system(string command,int &return_var)
    注:command要执行的命令,return_var 存放执行命令的执行后的状态值;

    string exec(string command,array &output,int $return_var)
    注:output 获得执行名输出的每一行字符串

    void passthru(string command,int &return_var)

    string shell_exec(string command)

    ``:与shell_exec的功能相同    

## 漏洞示例  ##

  <?php
    error_reporting(0);
    $dir=$_GET[‘dir‘];
    if(isset($dir)){
        system("ls -al".$dir);
    }    
    ?>

 

 

# eval注入攻击 #

## 漏洞示例 ##

    <?php
    $var="var";
    if(isset($_GET[‘arg‘])){
        $arg=$_GET[‘arg‘];
        eval("\$var=$arg;");
        echo "\$var=".$var;
    }
    ?>

 

# 动态函数 #

## 漏洞示例 ##

    <?php
    func A(){
        dosomething();
    }
    func B(){
        dosomething();
    }
    if(isset($_GET["func"])){
        $myfunc=$_GET["func"];
        echo $myfunc();
    }
    ?>

 

# 防御方法 #

    1、尽量不要执行外部命令
    2、使用自定义函数或函数库来替代外部命令的功能
    3、使用escapeshellarg函数来处理命令参数
    4、使用safe_mode_exec_dir指定可执行文件的路径
    esacpeshellarg函数会将任何引起参数或命令结束的字符转义,单引号“’”,替换成“\’”,双引号“””,替换成“\””,分号“;”替换成“\;”
    用safe_mode_exec_dir指定可执行文件的路径,可以把会使用的命令提前放入此路径内
    safe_mode = On
    safe_mode_exec_di r= /usr/local/php/bin/

 

php_audit--命令注入攻击

标签:

原文地址:http://www.cnblogs.com/BloodZero/p/4438239.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!