`

[译]web认证攻击(一)

 
阅读更多
原文:http://resources.infosecinstitute.com/authentication-hacking-pt1/
认证是识别某个事物的真伪。当一个web客户请求服务器的某个资源的时候,有时服务器可能需要识别用户的身份。因此用户必须体用一些口令以及web服务器来识别它,然后根据user的口令来采取相应的措施。这个过程叫做认证。一旦用户通过认证了,web服务器根据user相应的权限提供相应的资源。当用户希望获得某个资源时,服务器会检查用户是否有相应的权限。这个过程叫做授权。本文将会介绍常用的认证方法,然后介绍如何攻击这些认证方法。
本文主要使用burp suit以及少量的wireshark。
配置Burp为使用127.0.0.1:8080代理:

打开Burpsuite,转到Proxy–>Intercept,确保Intercept is on

转到option标签,检查代理是否监听8080端口。同时确保Generate CA-signed per-host certificates已经设置。每一次user连接到一个SSL保护的website,Buipsuit将会生产一个服务器证书,通过一个单独的在Burpsuit安装时生成的CA证书来签名。它的目的是在代理过程中减少SSL错误(Burp1.5,1.6没有此选项)。


认证种类
1)基于HTTP认证
基于HTTP的认证使用username+password来认证一个user。该过程是由user发送一个没有认证口令的GET请求来请求某一个资源开始的。请求有Burp拦截,看起来如下:

服务器然后在相应头发会“Authorization Required”消息。我们可以通过Wireshark来看到数据包。从header中可以看到,是“Basic”类型认证。浏览器识别出这个应答然后弹出一个请求username/password的对话框。注意对话框是由浏览器显示的而不是应用程序显示的。

一旦我们输入username和密码,并且使用Burp再次拦截请求,我们可以获得如下结果。最后一行是“Authorization: Basic aW5mb3NlYzppbmZvc2VjaW5zdGl0dXRl”。这是在header中传输的额外信息。Basic后面的是关键信息。他们基本是编码后的口令。用户名和密码使用:连接,并且整体使用base64编码。例如username是“infosec”,密码是“infosecinstitute”然后整体“infosec:infosecinstitute”使用base64编码。服务器获取header的值,解码来获得口令,如果口令正确,那么可以获得访问权限。值得注意的是解密编码后的口令是很常见的事,所以它对于监听攻击非常脆弱。

Wireshark可以识别这个,并且自动解码字符串来获得口令。如下图

从Credentials部分我们可以看到,用户名和密码分别是“infosec”和“infosecinstitute”。基于HTTP认证的一个问题是数据是明文传输的。可以通过SSL来减少风险,SSL使用加密格式来发送数据,所以授权header中的数据不透明。然而,它仍然可以受到很多客户端的攻击,包括MITM.它也可以收到暴力破解攻击。

2)HTTP摘要认证
摘要认证被设计为基于HTTP认证的一个改善。一个明显的增强是数据不再是明文传送,而是加密格式。user首先发送一个没有任何口令的请求到相应页面。服务器返回一个WWW-Authenticate header来指明需要口令来访问资源。服务器同时发送一个随机值,叫“nonce”。浏览器然后使用一个加密函数来创建一个基于username,password,“nonce”,HTTP methods,和页面的url的摘要。这种情况下的加密函数是一个单向加密函数,意味着数字摘要只可以在一个方向上创建,不可以逆向来获得创建它时的那些信息。默认的,摘要认证使用MD5算法。
摘要访问认证比HTTP基本认证不容易受监听攻击,但是容易遭受重放攻击,例如如果客户端可以重放加密信息,server将会允许客户的访问。然而为了避免这种攻击,服务器的nonce有时包含时间戳。一旦server获得nonce,它检查nonce的属性以及时间是否超时,可能会拒绝访问请求。摘要访问认证的另一个好处是攻击者需要知道其他的四个值(username, nonce, url, http method)来使用字典或暴力破解。这个过程相对于简单的暴力破解更昂贵而且不易成功。

3)基于表单认证
基于表单认证使用一个包含允许user数据username和password的input标签的表单来进行认证。一旦user提供了信息,它通过HTTP/HTTPS的GET或POST方法来传送信息。在服务器端,如果口令正确,user被认证,对于相应的请求,一些随机token或sessionid返回。对于基于表单认证的一个好处是没有标准的加密username/password方法,所以高度定制化,因而对于HTML基本攻击和摘要认证攻击成功的方法对它可能免疫。基于表单认证攻击是目前web程序中最常用的认证方法。一些基于表单认证的问题是口令是明文传送的除非使用TLS。
来看一个基于表单攻击的例子。我们使用DVWA作为例子.
安全级别设置为高。我们可以看到表单接受username/password,去掉任意格式的特殊字符来避免SQL注入攻击,然后通过一个sql查询语句来确认口令是否正确。

输入任何的username/password,使用Buip拦截:


攻击Web认证
我们将会使用暴力破解来攻击High安全级别的DVWA表单认证。注意暴力破解可能不会成功。某些情况下,网站会在若干次失败尝试之后会拒绝你的请求。同时一些网站会使用CAPTCHA来识别发送请求的是否是一个人类。
我们使用Burp中的intruder来进行暴力破解。通常需要username/password来进行暴力破解。在表单中输入username/password,然后拦截请求。截获请求后,右击鼠标选择“send to intruder”。

这样会把请求信息发送到intruder。转到intruder标签,现在需要配置Burp来进行暴力破解攻击。在target标签中,我们可以看到target已被设置。

现在转到position标签,这里我们可以看到之前我们发送intruder的请求。其中有一些东西被高亮,这些都是由Burp猜测的在每一个请求中可以变化从而用于暴力破解的部分。本例中只有username和password是可以变化的,我们只需进行相应的配置。

点击clear按键。将会删除所有高亮的文本,现在我们只需要配置username和password来进行攻击。高亮请求中的username(本例中是“infosec”),然后点击Add。相似的,高亮password然后点击Add。这会使username和password变为第一/er个参数。此时输出应该如此。

然后我们需要设置攻击类型。默认设置为Sniper,然而在本例中我们将使用Cluster Bomb。Cluster Bomb的基本原理是使用多个payload组合(1 for username and 1 for the password)。攻击将会先使用payload1的所有值以及payload2的第一个值,然后使用payload1的所有值和payload2的第二个值。如下所示,我们的攻击类型是“Cluster Bomb”。

转到payload标签,选择payload set 1,点击load来加载一个含有所有username的文件。如下:

相似,选择payload set 2,加载密码文件
转到option标签,选择result区域中的“store requests”和“store response”选项。检查相应设置

现在可以开始攻击。点击intruder,然后点击“start attack”。将会看到一个弹出窗口,显示所有的请求。我们如何知道一个攻击是否成功?通常成功的响应和失败的响应会不同,或应答状态不同。本例中,我们可以看到admin/password的那组请求对应的应答与其他的应答相比长度不一样。

点击那个长度不同的应答。在response部分,我们可以看到在应答中含有“Welcome to the password protected area admin”文本。从而证明破解成功。

  • 大小: 78.9 KB
  • 大小: 28.5 KB
  • 大小: 64.4 KB
  • 大小: 31.6 KB
  • 大小: 192.5 KB
  • 大小: 34 KB
  • 大小: 67.2 KB
  • 大小: 103.7 KB
  • 大小: 43.7 KB
  • 大小: 75.4 KB
  • 大小: 20.3 KB
  • 大小: 46.1 KB
  • 大小: 49.8 KB
  • 大小: 26.6 KB
  • 大小: 27.3 KB
  • 大小: 50.3 KB
  • 大小: 66.7 KB
  • 大小: 93.2 KB
分享到:
评论

相关推荐

    Spring Security3 张卫滨(译)

    《Spring Security3 张卫滨(译)》是关于Spring Security框架的一本深入解析书籍,由张卫滨翻译。Spring Security是Java平台上的一个强大且高度可定制的身份验证和访问控制框架,它为Web应用程序提供了全面的安全解决...

    《Spring Security 3》中文版 张卫滨译

    这些特性有助于防止常见的Web攻击。此外,Spring Security还支持OAuth2,可以与其他服务进行安全的集成,如社交登录服务。 对于API安全,Spring Security提供了对RESTful服务的保护。这包括JWT(JSON Web Tokens)...

    F5101考试学习指导(英译中)

    - **用途**:适用于需要高性能数据转发的应用场景,如大型Web应用。 - **用例**:例如,在视频流媒体服务中,快速的数据传递是关键,此时使用基于数据包转发的架构可以更好地满足需求。 #### 第三部分:负载均衡 ##...

    yii框架 最新

    6. 安全防护:Yii框架对常见Web应用攻击如SQL注入、XSS(跨站脚本攻击)有很好的防护措施。它还提供了认证、授权机制,确保只有经过验证的用户才能访问特定资源。 7. 测试支持:Yii提供全面的测试工具,如单元测试...

    JSP毕业生招聘信息的发布与管理系统(论文+源代码+开题报告+外文翻译).rar

    《JSP毕业生招聘信息的发布与管理系统》是一款基于JavaServer Pages(JSP)技术的Web应用程序,主要用于高校毕业生的就业信息管理。系统集成了招聘信息的发布、查询、管理和更新等功能,旨在帮助毕业生更方便地获取...

    Session详解

    Session,中文常译为“会话”,在Web开发领域中扮演着至关重要的角色,尤其是在维护客户端与服务器之间的交互状态方面。Session的概念源远流长,但其核心在于“保持状态”,即确保在一系列操作或消息传递过程中,...

    PHP100教程2012版:CodeIgniter框架教程(3)(第17讲) 解压密码

    - **安全性**:内置了许多安全功能,如XSS过滤器等,可以有效防止常见的Web攻击。 ### 安装与配置 #### 1. 环境要求 - **PHP版本**:推荐使用PHP 5.6或更高版本。 - **服务器**:支持Apache、Nginx等多种Web服务器...

    简易bbs系统 简易bbs系统

    BBS,全称Bulletin Board System,中文译为“电子公告板系统”,是一种基于文本的在线交流平台。它允许用户通过互联网发送消息、参与讨论、分享资源,是早期互联网社交的重要形式。简易BBS系统,正如其名,是一个...

    BBS 论坛 系统 源码

    BBS,全称Bulletin Board System,中文译为“电子公告板”,是一种基于Web的在线交流平台。用户可以通过BBS系统发布信息、发表观点、参与讨论,是互联网上最早期的社区形式之一。在本文中,我们将深入探讨BBS系统的...

    免费OA整站,ASP+Access,源码未加密

    同时,由于ASP代码可能暴露在Web服务器上,需要关注代码的安全性,防止SQL注入等攻击。 总结来说,这个免费的OA整站源码提供了一个基础的办公自动化平台,涵盖了用户认证、工作流程自动化、文档管理等核心功能。...

    深入解析tomcat.pdf

    4. **安全性**:讲解如何保护Tomcat服务器免受攻击,如设置SSL/TLS、用户认证、角色权限管理,以及防火墙和反向代理的配置。 5. **性能调优**:涵盖内存管理、线程池设置、连接器优化、日志和错误处理等方面的策略...

    test-authelia

    描述中提到“使用多个入口控制器测试皮肤科”,虽然表述有些模糊,但我们可以推测这可能涉及到多因素认证(MFA)或者在分布式系统中的权限管理,其中“皮肤科”可能是一个误译或者是特定场景的代称,如用户界面的...

    django

    Django,中文译为“詹戈”,是基于Python语言的一款强大、高效且易用的Web开发框架。它遵循MVT(Model-View-Template)设计模式,使得开发者能够快速构建高质量的Web应用。Django的特性包括ORM(对象关系映射),...

    formulaire-securisation:挑战1.2公式化PHP加密化

    在IT行业中,安全是至关重要的一个领域,尤其是在Web开发中,PHP作为一种广泛应用的服务器端脚本语言,其安全性直接影响到网站的数据安全和用户隐私。"公式化证券化:挑战1.2公式化PHP加密化"这个主题,显然是针对...

Global site tag (gtag.js) - Google Analytics