【DVWA】Command Injection

文章详细讨论了PHP中的CommandInjection漏洞,重点介绍了system(),exec(),shell_exec()函数的潜在风险,通过示例展示了不同安全级别的过滤措施,以及如何通过逻辑运算符绕过过滤。最后提到在高安全级别下,如加入Anti-CSRFtoken和严格IP验证,以防止命令注入攻击。

Command Injection

Command Injection,即命令注入,是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。PHP命令注入攻击漏洞是PHP应用程序中常见的脚本漏洞之一。

PHP命令注入漏洞的函数 system()、exec()、shell_exec()

注入命令过程中,常常需要使用一些系统命令的拼接方式,以达到更多复杂功能的实现,尤其是存在限制的情况,运用好可用来绕过限制。


逻辑运算符::

&&:代表首先执行命令a,若成功再执行命令b,又被称为短路运算符。

&:代表首先执行命令a再执行命令b,不管a是否成功,都会执行命令b。在执行效率上来说“&&”更加高效。

||:代表首先执行a命令再执行b命令,只有a命令执行不成功,才会执行b命令。

|:代表首先执行a命令,在执行b命令,不管a命令成功与否,都会去执行b命令。

(当第一条命令失败时,它仍然会执行第二条命令,表示A命令语句的输出,作为B命令语句的输入执行。)

LOW级别

输入127.0.0.1,结果与在本机使用ping命令完全一致,说明这里可以让我们执行ping命令。

image-20230805104257202

分析源码

可以看到这里直接将target 变量放入 shell_exec()执行``ping`命令,没有进行任何过滤,用户端可以直接拼接特定的命令,来执行并获取想要的信息。

<?php

if( isset( $_POST[ 'Submit' ]  ) ) {
   
   
    // Get input
    $target = $_REQUEST[ 'ip' ];

    // Determine OS and execute the ping command.
    if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
   
   
        // Windows
        $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
   
   
        // *nix
        $cmd = shell_exec( 'ping  -c 4 ' . $target );
    }

    // Feedback for the end user
    echo "<pre>{
     
     $cmd}</pre>";
}

?>

输入一个命令拼接符号再加上需要执行的命令

查看IP地址 127.0.0.1&&ipconfig

在这里插入图片描述

Medium级别

输入127.0.0.1,发现跟low等级显示的一样

image-20230805104403486

查看源代码,

<?php

if(
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过期的秋刀鱼-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值