当前位置:WooYun(白帽子技术社区) >> 资源‏共享‍ >> New Class of Vulnerability in Perl Web Applications

New Class of Vulnerability in Perl Web Applications

s0mun5 | 2014-10-08 12:18

其实是Bugzilla的用户注册漏洞 :)

漏洞成因代码如下

my $otheruser = Bugzilla::User->create({
    login_name => $login_name,
    realname   => $cgi->param('realname'),
cryptpassword => $password});


这是创建新用户的代码

这里调用了 $cgi->param() 类

当我们进行复参请求时

index.cgi?foo=bar&foo=baz&foo=quux

如果我们用数组获取foo的值,输出如下
@values = $cgi->param('foo'); --> ['bar', 'baz', 'quux']

但是我们用变量获取foo的值时,输出如下

$value = $cgi->param('foo');  --> 'bar'

而在perl中用哈希表获取数组的值时,会如下

my @array = ("foo", 3, "bar", 6); my %hash = @array; --> { "foo" => 3, "bar" => 6 }

每两个值变成hash表的key值和value值

so 这里就产生了变量覆盖的问题

index.cgi?realname=JRandomUser&realname=login_name&realname=[email protected]
请求上面的url,realname随便,login_name是一个已经注册的用户,这样就覆盖了原来的 login_name

修复方法很简单

scalar $cgi->param('realname'),使用scalar取第一个值就ok了

看这里 http://blog.gerv.net/2014/10/new-class-of-vulnerability-in-perl-web-applications/

AND

这里 https://krebsonsecurity.com/2014/10/bugzilla-zero-day-exposes-zero-day-bugs/

分享到:
  1. 1#
    回复此人 感谢
    Cyrils | 2014-10-08 12:30

    前排围观大牛~

  2. 2#
    回复此人 感谢
    RainShine (I'm your angel of music.) | 2014-10-08 13:21

    厕所里前排围观大牛~

  3. 3#
    回复此人 感谢
    Kuuki | 2014-10-08 13:42

    前排围观大牛~

添加新回复

登录 后才能参与评论.

WooYun(白帽子技术社区)

网络安全资讯、讨论,跨站师,渗透师,结界师聚集之地

登录