细水 2007.04.14

漏洞播报

Cosign CGI Check Cookie命令远程绕过认证漏洞

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

受影响系统:

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: 23422

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

cosign处理用户请求中的Cookie时存在输入验证漏洞,远程攻击者可能利用此漏洞执行恶意协议命令。

未经认证的Web用户可以通过在HTTP POST请求中向cosign CGI传输恶意的cookie导致向cosign守护程序中注入任意命令。CGI没有正确地验证组成cookie的字符并将其传输给了守护程序,这样就可以执行攻击者所注入的协议命令。

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

测试方法:


警 告

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

cosign CGI cookie正常为以下形式:

cosign=X

这里X是由CGI所生成的128个随机字符所组成的base64字符串。

恶意的cookie形式如下:

cosign=X\rLOGIN cosign=X 1.2.3.4 username\rREGISTER cosign=X 1.2.3.4 cosign-servicename=Y

这里X代表攻击者所选择的128个字符的任意base64字符串,\r代表回车(单个ASCII字符0x0D),1.2.3.4是攻击者的IP地址,username是攻击者所要扮演用户身份的用户ID,servicename是攻击者所要访问的cosign保护的服务,Y代表攻击者所选择的第二个128字符的base64字符串。攻击者可以通过检查cosign所保护web服务器设置的cookie来判断服务名称。

为了判断用户是否已认证,CGI会向守护程序传送CHECK cookie命令,这里cookie代表name=value对。由于没有正确的验证组成cookie的字符,这个恶意cookie会导致向守护程序发送以下命令:

CHECK cosign=X\rLOGIN cosign=X 1.2.3.4 username\rREGISTER cosign=X 1.2.3.4 cosign-servicename=Y

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

CHECK cosign=X
LOGIN cosign=X 1.2.3.4 username
REGISTER cosign=X 1.2.3.4 cosign-servicename=Y

CGI所发送的CHECK命令判断cookie为cosign=X的用户是否已认证;这个命令返回了否定的回答。

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

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

然后攻击者可以在对cosign所保护的servicename服务的任意请求中传送cosign-servicename=Y。运行在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


您可以随意转载,但必须在显著位置标明 原创链接 和本 版权声明

本文链接: http://www.mcafeefans.com/?p=903

发表评论

电子邮件地址不会被公开。

:wink: :twisted: :roll: :mrgreen: 8) :-D :arrow: :-o more »

返回页首返回页尾