xfocus logo xfocus title
首页 焦点原创 安全文摘 安全工具 安全漏洞 焦点项目 焦点论坛 关于我们
English Version

部分Apache 认证模块存在安全漏洞


发布时间:2001-08-31
更新时间:2001-08-31
严重程度:
威胁程度:权限提升
错误类型:输入验证错误
利用方式:服务器模式

受影响系统
Apache服务使用如下模块的系统:

     * AuthPG 1.2b2 by Min S. Kim (also known as mod_auth_pg)
     * mod_auth_mysql 1.9 by Vivek Khera
     * mod_auth_oracle 0.5.1 by Serg Oskin
     * mod_auth_pgsql 0.9.5 by Guiseppe Tanzilli and Matthias Eckermann
     * mod_auth_pgsql_sys 0.9.4 (by the same authors, modifications by
       Victor Glushchenko)

不受影响系统:
* mod_auth_mysql 2.20 by Zeev Suraski
* mod_auth_ora7 1.0 by Ben Reser
* mod_auth_ora8 1.0 by Ben Reser
详细描述
在PostgreSQL模块中,攻击者可以执行任意SQL描述或者对数据库密码的查询可以返回
任意数据,结果可造成WEB服务器被未认证访问。  

在Oracle模块中,攻击者可以调用存储过程和对密码数据库的查询来返回任意数据。

对于Mysql模块没有测试结果。

问题存在验证过程中,在数据库查询密码的散列值时需要用到如下的SQL SELECT值:

Query := Sprintf ("SELECT %s FROM %s WHERE %s = '%s'", Password_Column, User_Table, User_Column, User);

然后再比较取回口令散列值和用户密码进行比较而进行验证。不过如果攻击者发送
追加的SELECT语句如:

‘; SELECT 'wA8aGH92dPQnIDD

这样被解释成两个 SQL 语句 :

SELECT password_column FROM user_table WHERE user_column = '';
SELECT 'wA8aGH92dPQnIDD'

PostgreSQL's libpq 客户端库会将两条语句全部提给PostgreSQL服务器,
并把结果发送给客户端。通过这种方法可以进行欺骗。

Oracle 不允许每个请求中有多个 SQL 语句,不过使用存在UNION clause
附加多余数据的可能,利用这点能重复上面的攻击过程。

测试代码
见描述部分

解决方案
使用如下模块:

* AuthPG 1.3 by Min S. Kim (http://authpg.sourceforge.net/)
     * mod_auth_mysql 1.10 by Vivek Khera (ftp://ftp.kcilink.com/pub/)
     * mod_auth_pgsql 0.9.6 by Guiseppe Tanzilli
       (http://www.giuseppetanzilli.it/mod_auth_pgsql/dist/)

相关信息