发布时间:2020-6-17 分类: 行业资讯
Thinkphp在中国,很多代购源码网站管理员和平台都在使用这个开源系统来构建一个代购源码网站,为什么它如此受大家欢迎,第一个开源,方便,高效,生成静态html,第二个框架很容易开发PHP框架,很多第三方插件和第三方开发公司,模板可定制设计,可以开发基于thinkphp的多个大型虚拟货币平台,以及会员平台,商城系统,thinkPHP官方系统升级相对完整,及时更新并修复一些错误。
目前最新的正式版是ThinkPHP5.0.20版,以前的ThinkPHP3.2,ThinkPHP3.1,ThinkPHP3.0都存在代购源码网站漏洞,包括一些高风险的远程代码执行漏洞,thinkphp sql注入漏洞,后台管理员XSS跨代购源码网站漏洞目前,我们的SINE在2018年9月5日是安全的。在thinkphp代购源码网站的日常安全检测中,我们发现客户使用的Thinkphp系统在代购源码网站上有一个sql注入漏洞,是非常有害的。起初,我们认为客户使用的是较低版本。 :thinkphp 3.2.3,会有这样的代购源码网站漏洞,但在实际的安全检测中发现,不仅这个版本,还包含最新版本5.0.20,代购源码网站漏洞和poc利用的详细信息,我们一步一步分析一步。
thinkphp漏洞的代购源码网站安全检测原则
生成代购源码网站漏洞的文件存在于库文件夹下的think文件中,该文件夹包含db文件夹
从driver.class.php代码中的第677行开始,发现分析参数可以在订单处理分析中非法插入
分配密钥时,字符不会进行严格的安全限制和过滤,以便攻击者可以使用SQL注入语句进入
该行构造查询数据库的内容,包括检查数据库中的管理员帐户密码,写入数据库等的操作。
thinkphp 3.2.3漏洞代码如下:
/**
*订单分析
* @access protected
* @param混合$ order
* @return string
*/
受保护的函数parseOrder($ order){
如果(is_array($ order)){
$ array=array();
Foreach($ order as $ key=> $ val){
如果(is_numeric($ key)){
$ array []=$ this-> parseKey($ val);
}否则{
$ array []=$ this-> parseKey($ key)。''。$ val;
}
}
$ order=implode(',',$ array);
}
退货!空($ order)? 'ORDER BY'。$ order:'';
}
ThinkPHP 5.1.22漏洞代码存在于库文件夹下的think文件中的db/query.php中
代码中的第1514行,代码如下:
/**
*指定排序顺序('id','desc')或订单
([” ID”=>”递减”,” CREATE_TIME”=>”降序”])
* @access public
* @param string | array $ field sort field
* @param string $ order Sort
* @return $ this
*/
公共函数顺序($ field,$ order=null)
{
如果(空($ field)){
返回$ this;
} elseif($ field instanceof Expression){
$ this-> options ['order'] []=$ field;
返回$ this;
}
如果(is_string($ field)){
如果(!empty($ this-> options ['via'])){
$ field=$ this-> options ['via']。 '。' $字段;
}
如果(strpos($ field,',')){
$ field=array_map('trim',explode(',',$ field));
} else {
$ field=empty($ order)? $ field: [$ field=> $ order];
}
} elseif(!empty($ this-> options ['via'])){
Foreach($ field as $ key=> $ val){
如果(is_numeric($ key)){
$ field [$ key]=$ this-> options ['via']。 '。' $ VAL;
} else {
$ field [$ this-> options ['via']。 '。' $ key]=$ val;
未设置($字段[$键]);
}
}
从上面的thinkphp 3.2.3开始,可以分析thinkphp 5.0代码,当在关联函数中分析顺序时会将其分配给键值,可以将sql注入语句合并到执行攻击站点,并且可以拼接绕过sql安全过滤,可以导致执行sql语句,查询数据库,操作数据库。
Thinkphp利用细节:
Thinkphp错误修复建议:
如果是thinkphp 3. *系统的低版本,请尽快升级到thinkphp的最高版本。
如果是thinkphp 5. *系统的高版本,请尽快升级到thinkphp的最高版本。
如果代购源码网站遭到攻击,请尽快备份代购源码网站,在代购源码网站上找到木马后门,修复代码中被篡改的代码,做好代购源码网站安全加固工作,为某些缓存文件夹设置安全权限。如果您不了解代购源码网站的漏洞,可以找一家专业的代购源码网站安全公司来处理它。国内SINE安全公司,NSFOCUS安全和金星更专业。如果代购源码网站使用单独的服务器,如linux系统或Windows系统,则可以部署代购源码网站防火墙以防止sql注入攻击。可以将代购源码网站的默认管理员后台地址修改为更麻烦的地址。