phpcms authkey生成算法问题导致authkey泄露漏洞修复方法

导读:阿里云今天提示phpcms authkey生成算法问题导致authkey泄露这个漏洞,那如何修复呢? 看一下阿里爆出漏洞说明漏洞名称:phpcms au

导读:阿里云今天提示phpcms authkey生成算法问题导致authkey泄露这个漏洞,那如何修复呢?

看一下阿里爆出漏洞说明

  1. 漏洞名称:phpcms authkey生成算法问题导致authkey泄露 

  2.  

  3. 补丁编号:13453425 

  4.  

  5. 补丁文件:/www/xxxx/caches/configs/system.php 

  6.  

  7. 补丁来源:云盾自研 

  8.  

  9. 更新时间:2017-05-11 13:49:45 

  10.  

  11. 漏洞描述:phpcms在安装时,由于在同一个页面中连续使用mt_rand(),未进行有效mt_srand();种子随机化操作,导致authkey存在泄漏风险,黑客可利用该漏洞猜解出网站authkey进而入侵网站.【注意:该补丁修复后会自动修改您网站配置文件中的auth_key和phpsso_auth_key,并且只会运行一次,修复期间会有部分用户访问的cookies失效导致需要登录网站,除此无其他影响,可放心升级】 

照着下面的函数重新生成一下key值,然后找caches/configs/system.php 里面把两个参数替换一下就ok了

    1.     function random($length, $chars = '0123456789') { 

    2.       

    3.         $hash = ''; 

    4.         $max = strlen($chars) - 1; 

    5.         for($i = 0; $i < $length; $i++) { 

    6.             $hash .= $chars[mt_rand(0, $max)]; 

    7.         } 

    8.         return $hash; 

    9.     } 

    10. //这里重点:只要把random第二参数重新打乱,不要使用以前v9固定的数据 

    11. print_r($this->random(32, 'abcdefghigklmnopqrstuvwxyz1294567890ABCDEFGHIGKLMNOPQRSTUVWXYZ'));exit;//phpsso_auth_key

    12. print_r($this->random(20, 'abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLM1294567890NOPQRSTUVWXYZ'));exit;//auth_key