MolyX Board 2.81论坛db_base.php页面SQL注入漏洞
影响版本:
MolyX Board 2.81
漏洞描述:
魔力论坛(MolyX Board) 是魔力系列Web应用软件产品之一,由魔力工作室(MolyX Studios) 经过数年的市场技术调研及学习研究,在融合了当今众多论坛程序技术和实践优点的基础上,针对中国人的使用习惯开发研制的一款功能强大、速度飞快、性能卓越、安全性极高的论坛系统。
includes/db/db_base.php 注入
 
   1. function insert($table, $array, $type = 'INSERT', $func = 'query_unbuffered')  
   2.   
   3. if (($sql = $this->sql_insert($table, $array, $type)))  
   4. {  
   5.  return $this->$func($sql);  
   6. }  
   7. return false; 
接着看sql_insert()函数
 
   1.  function sql_insert($table, $array, $type = 'INSERT', $prefix = 'INSERT')  
   2.   
   3. if (!is_array($array) || emptyempty($array))  
   4. {  
   5.  return false;  
   6. }  
   7. return "$prefix INTO $table " . $this->sql_clause($type, $array); 
再看sql_clause()函数
 
   1. function sql_clause($query, $array)  
   2. {  
   3.    if (!is_array($array))  
   4.    {  
   5.     return false;  
   6.    }  
   7.   
   8.    $query = strtoupper($query);  
   9.    $fields = $values = '';  
  10.    if ($query == 'INSERT' || $query == 'INSERT_SELECT')  
  11.    {  
  12.     foreach ($array as $key => $var)  
  13.     {  
  14.      $fields .= ', `' . $key . '`';  
  15.   
  16.      if (is_array($var) && is_string($var[0]))  
  17.      {  
  18.       // INSERT SELECT  
  19.       $values .= ', ' . $var[0];  
  20.      }  
  21.      else  
  22.      {  
  23.       $values .= ', ' . $this->validate($var);  
  24.      }  
  25.     }  
  26.     $fields = substr($fields, 2);  
  27.     $values = substr($values, 2);  
  28.     $query = ($query == 'INSERT') ? ' (' . $fields . ') VALUES (' . $values . ')' : ' (' . $fields . ') SELECT ' . $values . ' ';  
  29.    }  
  30. .......................................省略无关代码 
$values .= ', ' . $var[0]; 变量$var[0]两边并没有用到单引号,问题产生了!!
 
但要注意global.php中的init_input()函数对全局变量做了array(' ', '<!--', '-->', '>', '<', '"', '!', "'", "n", '$', "r")过滤成array(' ', '<!--', '-->', '>', '<', '"', '!', ''', '<br />', '$', '')
测试方法:
查找$DB->insert(),跟下它的第二个参数是否有我们能利用的变量,然后跟据流程构造提交.
如:$aa[]=0,(select+password+from+mxb_user+where+id=1),0,0)%23
安全建议:
厂商补丁:
MolyX Board
--------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.molyx.com/

 
 










