【白帽子学习笔记12】DVWA Command Injection【命令行执行漏洞】

【白帽子学习笔记12】DVWA Command Injection【命令行执行漏洞】

什么是命令执行漏洞?

命令执行漏洞是指可以随机执行系统命令,属于高危漏洞之一,也属于代码执行范围内原理:
只要程序可以调用系统命令的情况下都可以发生命令执行漏洞。
条件:用户能够控制函数输入,存在可以执行代码的危险函数。

命令执行漏洞产生的原因和造成的危害

原因:

开发人员没有对特殊函数入口做过滤,导致用户可以提交恶意代码并提交服务端执行。

Web服务器没有过滤危险函数导致命令执行漏洞攻击成功。

危害:

1、承Web服务程序的权限去执行系统命令或读写文件。
2、反弹shell
3、控制整个网站甚至控制服务器。
进一步内网渗透

PHP中的危险操作

system:成功则返回命令输出的最后一行,失败则返回FALSE。
exec:命令执行结果的最后一行内容。
shell_exec:命令执行的输出。如果执行过程中发生错误或者进程不产生输出,则返回NULL。
passthru:执行外部程序并且显示原始输出。
eval:将输入的字符串参数当做PHP程序代码来执行。
assert
preg_replace
call_user_func

安全级别:LOW等级

源码

<?php

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

    // 判断操作系统
    if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
        // 如果是Windows系统
        $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
        // 如果是*nix系统
        $cmd = shell_exec( 'ping  -c 4 ' . $target );
    }

    // 反馈给用户相关信息
    echo "<pre>{$cmd}</pre>";
}

?>

代码直接使用的shell_exec执行用户的指令,属于高危漏洞

利用漏洞搞些事情

首先我们先要知道这些东西,命令行的执行方式

Windows支持:

command1 && command2      #command1执行成功了才会执行command2
command1 & command2        #不管command1是否执行成功,command2都会执行
command1 | command2         #直接执行command2
command1 || command2        #command1执行失败了,才会执行command2

Linux支持:

command1 ; command2        #command1执行完执行command2     
command1 && command2    #command1执行成功了才会执行command2
command1 & command2      #不管command1是否执行成功,command2都会执行
command1 | command2       #将command1的输出结果作为command2的输入的内容(管道符)
command1 || command2      #command1执行失败了,才会执行command2

我是在Windows上搭的DVWA, 所以可以这样玩

在这里插入图片描述
基本就是获取了权限,你也可以工作net use 去创建一个用户名

安全等级:Medium High Impossibel

这三个安全登记我想在这里一块讲

首先Medium和High差别不大,主要还是增加一些过滤语句,过滤掉我们的特殊字符。只是做黑名单的话还是不够安全,如果有忘了过滤的就有可能有存在的漏洞。

在Impossibel的等级里他用过“.”拆分,先判断每段时候位数字,再判断是否为四段,全部成立再ping,如果结果为true的话,就会将这四组数通过 . 连接起来,执行ping命令。这样就杜绝了所有命令注入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值