zoukankan      html  css  js  c++  java
  • 网络安全学习笔记:命令注入

    命令注入

    1、漏洞的危害

    1、继承Web 服务器程序权限(Web 用户权限)读写文件、执行系统命令
    2、反弹Shell(服务器主动连接攻击方)
    3、控制整个服务器

    2、相关命令

    1、system()函数

    system() 能够将字符串作为OS 命令执行,自带输出功能,需要等待命令执行完成后才会返回结果并输出
        <?php
        $str=$_GET['cmd'];
        system($str);
        ?>
        
    提交参数    ?cmd=ipconfig

    2、exec()函数

    exec() 函数能将字符串作为OS命令执行,需要输出执行结果
        <?php
        $str=$_GET['cmd'];
        print(exec($str));
        ?>
    ​
    提交参数    ?cmd=whoami (返回结果有限)

    3、shell_exec()函数

    shell_exec()函数能将字符串作为OS命令执行,需要输出执行结果
    <?php
    $str=$_GET['cmd'];
    print(shell_exec($str));
    ?>
    ​
    提交参数    ?cmd=whoami (使用最多)

    4、passthru()函数

    passthru()函数 能够将字符串作为OS 命令执行,自带输出功能,
    <?php
    $str=$_GET['cmd'];
    passthru($str);
    ?>
    ​
    提交参数    ?cmd=whoami

    4、popen()函数

    popen()函数,将命令执行结果需要导出到别的文件
    <?php
    $str=$_GET['cmd'].">> 1.txt";
    popen($str,'r');
    ?>
        查看1.txt文件
    提交参数    ?cmd=whoami

    5、反引号

    反引号[``] 内的字符串,也会解析成OS 命令
    <?php
    $str=$_GET['cmd'];
    print `$str`;
    ?>
    ​
    提交参数    ?cmd=whoami

    3、防御方法

    1、尽量减少命令执行函数的使用,并在disable_functions 中禁用
    2、在进入命令执行的函数或方法之前,对参数进行过滤
    3、参数的值尽量使用引号包裹,并在拼接前调用addslashes 进行转义

     

  • 相关阅读:
    【网络】默认路由(路由黑洞,路由终结)
    textstroke(文本描边)和textfillcolor(文本填充色)Css3演示
    enter键提交表单
    Web App和Native App 谁将是未来
    模拟input type=file
    margintop 无效,避开麻烦的margin叠加(margin collapsing)
    用jquery写的简单tab效果
    CSS3下的渐变文字效果实现
    jQuery阻止冒泡和HTML默认操作
    设置文本输入框默认值
  • 原文地址:https://www.cnblogs.com/Xshun-z/p/13957294.html
Copyright © 2011-2022 走看看