• 网络安全学习笔记:命令注入


    命令注入

    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 进行转义

     

  • 相关阅读:
    [LeetCode]4Sum
    [LeetCode]3Sum
    [LeetCode]Two Sum
    [LeetCode]Maximal Rectangle
    [LeetCode]Largest Rectangle in Histogram
    [LeetCode]Sudoku Solver
    [LeetCode]Group Anagrams
    jQuery验证控件jquery.validate.js使用说明+中文API
    js操作cookie,实现登录密码保存
    Java中getResourceAsStream的用法
  • 原文地址:https://www.cnblogs.com/Xshun-z/p/13957294.html
Copyright © 2020-2023  润新知