部分Apache 认证模块存在安全漏洞发布时间:2001-08-31 更新时间:2001-08-31 严重程度:高 威胁程度:权限提升 错误类型:输入验证错误 利用方式:服务器模式 受影响系统 Apache服务使用如下模块的系统:详细描述 在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/) 相关信息 |