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

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

文章目录

  • 【白帽子学习笔记12】DVWA Command Injection【命令行执行漏洞】
    • 什么是命令执行漏洞?
    • 命令执行漏洞产生的原因和造成的危害
    • PHP中的危险操作
    • 安全级别:LOW等级
      • 源码
      • 利用漏洞搞些事情
    • 安全等级:Medium High Impossibel

什么是命令执行漏洞?

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

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

原因:

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

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

危害:

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

PHP中的危险操作

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

安全级别:LOW等级

源码

{$cmd}
"; } ?>

代码直接使用的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命令。这样就杜绝了所有命令注入。

你可能感兴趣的:(白,帽,子,安全)