[关闭]
@1kbfree 2019-07-22T21:09:36.000000Z 字数 1600 阅读 1313

命令执行漏洞介绍

基础


  1. <?php
  2. //判断字符串包含函数
  3. function checkstr($str,$find){
  4. $needle = $find;
  5. $tmparray = explode($needle,$str);
  6. if(count($tmparray)>1){
  7. return true;
  8. } else{
  9. return false;
  10. }
  11. }
  12. if(isset($_REQUEST['submit']) && $_REQUEST['ip']===''){
  13. echo '<pre>请输入IP或者域名</pre>';
  14. }else{
  15. $target=filter_var($_REQUEST['ip'],FILTER_SANITIZE_SPECIAL_CHARS);//用filter进行编码
  16. if(checkstr($target,".") && !checkstr($target,"|") && !checkstr($target,"&") && !checkstr($target," ")){
  17. if(stristr(php_uname('s'),'Windows NT')){
  18. $cmd=shell_exec('ping '.$target);
  19. echo '<pre>'.$cmd.'</pre>';
  20. }else{
  21. $cmd=shell_exec('ping -c 3'.$target);
  22. echo '<pre>'.$cmd.'</pre>';
  23. }
  24. }else{
  25. echo '<pre>请勿提交非法字符</pre>';
  26. }
  27. }
  28. ?>

什么是命令执行漏洞

代码调用系统命令的时候,过滤没做好,从而导致攻击者可以使用命令来干一些xxxx的事情。

那DVWA来演示一下

这是DVWA演练平台的在线地址:http://43.247.91.228:81

首先我们需要先了解一下Linux的特殊字符

  1. ';'的用法:

1.png-7.9kB
我们可以看到,在这里';'的用法就是先执行他前面的命令,直到前面命令执行完(无论对与错)就立即执行后面的命令

我们输入错误看看

1-1.png-5.4kB

  1. '|'的用法:

2.png-15.4kB
上一条命令的输出,作为下一条命令参数

  1. '&&'的用法:

3.png-8.2kB
我们可以看到这里就是说只有前面的命令成功执行,才能执行后面的命令。

开始命令执行漏洞演示:

首先我们把等级设置为LOW,来看看:
4.png-57.6kB
这里呢就是输入IP,会把PING出来的内容打印出来

我们打开DVWA自带的源代码查看:
5.png-85.2kB

首先我们来看看在WINDOW操作系统下执行ping命令会有啥结果:

6.png-17.8kB
(可以看到这里只ping了4次)

我们再来看看LINUX里的ping命令有啥结果:

7.png-40kB
(可以看到,他会无限的PING下去)

而判断操作系统就是为了,如果是linux环境的话就会执行ping -c 4 www.baidu.com,这样就会像WINDOW一样,只执行4次:

8.png-24.7kB

我们现在DVWA的命令执行漏洞处输入一下www.baidu.com:

9.png-17.6kB

那么我们是否可以试一下,上面所讲的特殊字符功能,我们来试一下,我输入了www.baidu.com;ls:

10.png-19.1kB
(那么可以看见,这里是存在命令执行漏洞的,很多人就会问了,这个漏洞有啥用,其实呢,当你有修改文件的权限,并且知道网站首页的路径,你就可以更改首页内容。)

我来演示一下(只是本地演示):

11.png-46.2kB

我们将等级改为中:

我们输入一下www.baidu.com;ls:

12.png-4.1kB
(啥都没返回)

我们来看看源代码:

13.png-50.1kB
(如果还不明白啥是转换成空,我来举个例子,看下图)
我输入了www.&&baidu.com:
14.png-17.7kB
(这里因为将&&转换成空,所以www.&&baidu.com等于是www.baidu.com)

但是,这没有过滤'|',我们还是可以输入www.baidu.com|ls:
15.png-5.6kB
(成功执行~~)

我们将等级这是为HIGH:

这里的DVWA只有三个等级,所以高等级也就相当于不可能完成等级

我们来照常看看源代码:
16.png-52.2kB
(看不懂,但是我知道这里只能输入数字,并且是1.1.1.1的格式)

就连输入www.baidu.com都不可以了:
image_1c9ke8qoeg9nbnkf9np4d1krd6l.png-7.5kB
(这防御措施做得,有点...内个了~)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注