zoukankan      html  css  js  c++  java
  • 3.代码审计之 命令注入

                          命令注入

    一 基础讲解

     1所谓的命令注入就是调用函数后输入的代码可以当命令行执行的功能

    WINDOWS 和 LINUX下常用的函数有

    system、exec、passthru、·· 反引号、shell_exec、popen、proc_open、pcntl_exec(Linux下的)

     

    其函数的原型为,他们的功能都相当于反引号的功能

    string system ( string $command [, int &$return_var ] )

    string exec ( string $command [, array &$output [, int &$return_var ]] )

    void passthru (string command, int &return_var)

    string shell_exec (string command)

    `` 反引号

    二 接下来看操作

           1 首先测试的是system函数

           测试代码

     

    运行后在URL里面输入相应的CMD命令就可以执行了

    如输入whoami查看当前权限

     

    后面几个功能一样 测试一下 不再贴图

    2  测试代码如下

    <?php
    
    //代码审计命令注入
    $action = $_GET['cmd'];
    
    echo "<pre>";
    
    //1.system($action);
    
    //2.echo exec($action);
    
    //3.passthru($action);
    
    //4.echo shell_exec($action);
    
    //5.echo `$action`;  注意是反引号 数字1旁边的那个
    
    //echo popen($action,'r');
    
    echo "<pre/>"
    
    ?>

    3  命令执行漏洞的防御函数

           主要使用escapeshellarg()_或escapeshellcmd() 来对参数进行过滤

    escapeshellarg ( string $arg )

    会过滤掉arg 中存在的一些特殊字符。在输入的参数中如果包含中

    文传递给escapeshellarg,会被过滤掉。

    escapeshellcmd ( string $command )

    escapeshellcmd()函数会转义命令中的所有shell 元字符来完成工作。这些元字符包括:# & ; ` ,

    | * ? ~ < > ^ ( ) [ ] { } $ \。

    4  先看没过滤前,在URL中输入echo “sadasd” >> 1.txt

    意思是在根目录下将sadasd输出并生成到1.txt里面

     

    然后看使用escapeshellcmd之后 >>被过滤转义 成了输出

     

  • 相关阅读:
    ARTS-S mac终端ftp命令行上传下载文件
    tensorflow SavedModelBuilder用法
    linux限定用户目录及权限
    软件测试准入准出规则
    weblogic 12c重置console密码
    linux exec和xargs的区别
    linux加域退域
    centos 6.6 配置xdmcp远程桌面
    shell数组中“和@的妙用
    【原创】Centos 7利用软件Raid搭建ISCSI过程
  • 原文地址:https://www.cnblogs.com/arsense/p/6297987.html
Copyright © 2011-2022 走看看