Web安全——命令执行漏洞

命令、代码执行漏洞

命令执行漏洞

  • 定义:
    • Web应用程序接收到用户输入,拼接到要执行的系统命令中执行。
  • 原因:
    • 用户输入未过滤或净化;
    • 拼接到系统命令中执行;

PHP下命令执行函数

  • system(), exec(), shell_exec(), passthru(), popen(), proc_popen()
  • 某些情况下,要注意存在以上函数的php文件,可能是WebShell。

命令执行漏洞代码分析

  • 一下给出一个存在命令执行漏洞的简单代码。

    <?php
        echo "<pre>";
    	if(isset($_GET["cmd"])){
    		system($_GET["cmd"]);
        }
        echo "</pre>";
    ?>
    
  • 访问以上.php文件,http://xxx/cmd.php?cmd=ipconfig,查看网卡信息

命令执行漏洞利用

  • 使用以下php代码,对目标主机执行ping命令

    <?php
        echo "<pre>";
        $arg = $_GET['cmd'];
        if ($arg) {
            system("ping  $arg");
        }
        echo "</pre>";
    ?>
    
  • 利用思路

    • 代码中拼接用户的输入并通过system()执行代码,但是无法执行用户的自定义命令。
    • 故:截断输入、重新品街、两条命令都输入并执行。

命令执行漏洞拼接符介绍:

  • 在Windows系统下的cmd命令中,有以下截断拼接符:

    • &前面的语句为假则直接执行后面的,eg:ping 111 & ipconfig
    • &&前面的语句为假则直接出错,后面的也不执行,eg:ping 127.0.0.1 && ipconfig
    • |直接执行后面的语句,eg:ping 127.0.0.1 | ipconfig
    • ||前面出错执行后面的,eg:ping 111 || ipconfig
    • eg:http://xxx/cmd.php?cmd=8.8.8.8|ipconfig
  • 在Linux系统下的shell命令中,有以下截断拼接符:

    • a;b型拼接,不管a命令是否成功,b命令都会执行
    • a||b型拼接,不管a是否成功,都执行b
    • a&b型拼接,无论a是否成功,都执行b
    • |是管道符,显示后面的执行结果
    • a&&b型拼接,只有a命令执行成功才会执行b命令
    • eg:http://xxx/cmd.php?cmd=8.8.8.8;ifconfig

命令执行漏洞利用

  • 在php下,除了函数可以执行系统命令,反引号 “ ` ” 也可以执行系统命令。

    eg:echo `$cmd`

  • php eval() 函数:

    eval() 函数把字符串按照php代码来计算,该字符串必须是合法的 PHP 代码,且必须以分号结尾。如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。

    eg:http://ip/search.php?searchtype=5&tid=&area=eval($_POST[cmd]),用菜刀连接该url

commix工具

  • Commix是一个使用Python开发的漏洞测试工具,这个工具是为了方便的检测一个请求是否存在命令注入漏洞,并且对其进行测试,在其作者发布的最新版本中支持直接直接导入burp的历史记录进行检测,大大提高了易用性。
  • commix -u <url>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值