ThinkPHP 5.0是目前最新的版本,历经多年的升级完善,深受网站设计公司的喜欢,在互联网上也是一个开源的,免费、多个功能插件、API接口功能强悍的PHP 语言开发的一款程序,ThinkPHP从设计以来一直秉承简洁实用的设计原则,在保证出色的性能和至简的代码的同时,也很注重实用性。
SINE安全公司在对其最新版本的程序进行网站安全审计的时候,发现该程序存在数据库密码信息泄露漏洞,在PDO PHP查询中可以阻止大多数的恶意参数攻击,而且ThinkPHP 5.0框架要求的是在php 5.4版本上运行,这也就防止了php在5.3.6版本下的SQL查询注入的漏洞。
在对其代码进行安全审计,其实这是一个SQL注入点,可以查询到一些数据库的账号以及密码等安全信息。Thinkphp5.0里代码设计里调用到了函数input来替代3.2.3版本里的I函数,利用该函数,控制了in语句的数值位置,即可通过传入一个数组并带入恶意的参数,来构造SQL注入语句,进行获取数据库的账号密码。
在$bindName参数里我们对网站进行了详细的网站安全检测,将$k数值写进到了$bindName里,并在$value数值确实为一个数组的同时,这里边会遍历全部的$value的数值,也就是说我们控制了预编译SQL语句中的键名,也是可以控制了预编译的SQL语句,这个在理论上来说是一个SQL注入漏洞。
这漏洞过程当中涉及到预编译的执行过程了。通常PDO PHP预编译执行过程分三步:
一、prepare($SQL) 编译SQL语句
二、bindValue($param, $value) 将value绑定到param的位置上
三、execute() SQL语句执行
这个漏洞实际上就是控制了第二步的$param变量,这个变量如果是一个SQL语句的话那么在第二步的时候是会抛出错误的:Sine安全公司是一家专注于:服务器安全、网站安全、网站安全检测、网站漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。