首页 > 技术文章 > 命令执行漏洞

syroot 2022-02-20 11:10 原文

命令执行漏洞

目前已爆出的命令执行漏洞

Apache 2.4.49 和 Apache 2.4.50版本存在目录遍历和任意命令执行漏洞(CVE-2021-42013)
 

漏洞原理 

   web应用程序给用户提供指定的远程命令操作接口,在调用这些函数时,将用户的输入作为系统命令参数拼接到命令行中,如果对用户输入的参数过滤不严格,就到造成命令执行漏洞。

漏洞危害

  1. 以当前网站的权限去执行系统命令。

  2. 继承web服务程序权限,向服务器写文件,读取敏感数据等。

  3. 反弹shell,进一步提权,进一步控制整个服务器。

命令执行漏洞函数

  php中命令执行函数

system()  #自带输出
passthru() #有回显
system()和passthru() 都是将用户输入的字符串当做命令去执行。
exec() #本身无回显,需要echo输出,
shell_exec() #本身无回显,需要echo输出
反引号 #本身无回显,需要echo输出
popen() #无回显,返回一个指针文件

 

漏洞利用

  1. 利用 |  &&  &    ||  来拼接其他命令。

   | 是直接执行| 后面的命令,

   || 是前面的语句出错,才执行|| 后面的命令

   & 是不论前面语句是否正确,都执行后面的命令。

   && 是前面的命令执行正确,才执行后面的命令。

  2. Linux系统还支持分号,来隔开两个命令。

漏洞防御

  1. 尽量不适用命令执行函数,并且在disable_funtions中禁用。

  2. 使用命令执行函数时,对用户输入的参数进行过滤和检测。

  3. 参数的值尽量使用引号包裹,并在拼接前对特殊字符进行转义。

  4. 要避免任意代码执行漏洞的发生,攻击者可以直接利用代码执行漏洞,来使用代码执行系统命令。

推荐阅读