Xoops远程SQL注入漏洞


添加时间:
2005-08-11

系统编号:
WAVDB-00134
BugCVE: CAN-2002-0216
BUGTRAQ: 3977

影响版本:
XOOPS 1.0 RC1

程序介绍:

Xoops是一个用面向对象的PHP写的开源、免费的web程序,它用MySQL作为后台数据库,可以运行于大多数的Unix和Linux系统。

漏洞分析:

其userinfo.php脚本未能正确处理来自用户输入的SQL子句,攻击者可以利用某些技巧修改最终执行的SQL语句,导致敏感信息泄漏。

 

 userinfo.php脚本没有检查用户输入的子句中是否包含特殊字符,比如提交如下URL请求(结尾有个分号)

 http://xoops-site/userinfo.php?uid=1;

 将看到如下错误信息

 -snip-
 MySQL Query Error: SELECT u.*, s.* FROM x_users u, x_users_status s WHERE
 u.uid=1; AND u.uid=s.uid
 Error number:1064
 Error message: You have an error in your SQL syntax near '; AND u.uid=s.uid'
 at line 1
 ERROR
 -snip-

 这已经泄漏了很多敏感信息,攻击者可以利用这些信息进行SQL injection攻击,比如
 http://xoops-site/userinfo.php?uid=1;[SQL Query]

 参看http://www.owasp.org/projects/asac/iv-sqlinjection.shtml了解更多关于SQL injection攻击的信息。



解决方案:
临时解决方法:
如果您不能立刻安装补丁或者升级,建议您采取以下措施以降低威胁:
* 修改程序代码过滤用户输入的特殊字符,或者SQL语句的整型变量也加上单引号,比如这个查询语句这样写就不会有问题:
SELECT u.*, s.* FROM x_users u, x_users_status s WHERE u.uid='$uid' AND u.uid=s.uid
如果修改程序有困难,请暂时停止使用Xoops。

厂商补丁:
Xoops
-----
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://xoops.sourceforge.net/

信息来源:
<*来源:Cabezon Aurelien (aurelien.cabezon@isecurelabs.com)
链接:http://archives.neohapsis.com/archives/bugtraq/2002-01/0348.html
*>