BugCVE: CAN-2002-0216
BUGTRAQ: 3977
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攻击的信息。
1.0 RC1
临时解决方法:
如果您不能立刻安装补丁或者升级,建议您采取以下措施以降低威胁:
* 修改程序代码过滤用户输入的特殊字符,或者SQL语句的整型变量也加上单引号,比如这个查询语句这样写就不会有问题:
SELECT u.*, s.* FROM x_users u, x_users_status s WHERE u.uid='$uid' AND u.uid=s.uid
如果修改程序有困难,请暂时停止使用Xoops。
厂商补丁:
Xoops
-----
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
<a href=http://xoops.sourceforge.net/ target=_blank>http://xoops.sourceforge.net/</a>
暂无评论