DCForum是一种基于WEB的会议系统,设计用于在线讨论。它是用Perl实现的,几乎没有系统相关性,可以运行于Linux、Windows以及绝大多数Unix变体上。 DCForum口令产生机制上存在漏洞,可能使远程攻击者得到用户的初始口令。 注册新用户时如果DCForum选用Email方式通知新用户初始口令,此时系统采用的初始口令产生机制与用户丢失口令后申请新口令时采用机制是类似的。而这个口令产生机制导致即将产生的口令是可预测的,意味着新用户填写一个虚假的Email地址,仍然可以获取自己的初始口令。 在Lib/user_register.pl中有如下代码 <snip> if ($r_in->{\'\'command\'\'} eq \'\'register\'\') { </snip> <snip> if ($r_setup->{\'\'auth_register_via_email\'\'} eq \'\'on\'\') { my $session = get_session_id(); $r_in->{\'\'password\'\'} = substr($session,3,6); </snip> 产生的口令仅仅是用户SessionID中第3个字符开始的6个字符(从1开始计)。任何了解如 何在cookie中查看一个值的用户都可以获取这个口令。
DCForum是一种基于WEB的会议系统,设计用于在线讨论。它是用Perl实现的,几乎没有系统相关性,可以运行于Linux、Windows以及绝大多数Unix变体上。 DCForum口令产生机制上存在漏洞,可能使远程攻击者得到用户的初始口令。 注册新用户时如果DCForum选用Email方式通知新用户初始口令,此时系统采用的初始口令产生机制与用户丢失口令后申请新口令时采用机制是类似的。而这个口令产生机制导致即将产生的口令是可预测的,意味着新用户填写一个虚假的Email地址,仍然可以获取自己的初始口令。 在Lib/user_register.pl中有如下代码 <snip> if ($r_in->{\'\'command\'\'} eq \'\'register\'\') { </snip> <snip> if ($r_setup->{\'\'auth_register_via_email\'\'} eq \'\'on\'\') { my $session = get_session_id(); $r_in->{\'\'password\'\'} = substr($session,3,6); </snip> 产生的口令仅仅是用户SessionID中第3个字符开始的6个字符(从1开始计)。任何了解如 何在cookie中查看一个值的用户都可以获取这个口令。