首页 -> 安全研究

安全研究

安全漏洞
Xoops远程SQL Injection漏洞

发布日期:2002-01-29
更新日期:2002-02-01

受影响系统:
Xoops Xoops 1.0 RC1
描述:
BUGTRAQ  ID: 3977
CVE(CAN) ID: CVE-2002-0216

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攻击的信息。

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

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 修改程序代码过滤用户输入的特殊字符,或者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/

浏览次数:3221
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障