- 浏览: 287986 次
文章分类
- 全部博客 (276)
- burp+hydra暴力破解 (1)
- kali linux工具集 (6)
- kali (59)
- linux (54)
- password (14)
- web (63)
- 渗透测试 (50)
- windows (40)
- metasploit (9)
- 信息收集 (32)
- burp suit (4)
- 安全审计 (9)
- https://github.com/secretsquirrel/the-backdoor-factory (0)
- nmap (4)
- arachni (2)
- 工具 (5)
- sql (3)
- 网络 (2)
- 后渗透测试 (10)
- 内网 (5)
- 无线 (2)
- C (3)
- bios (1)
- RoR (12)
- mongodb (1)
- linxu (1)
- gdb (1)
- linux,虚拟化 (1)
- python (4)
最新评论
原文: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”文本。从而证明破解成功。
认证是识别某个事物的真伪。当一个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”文本。从而证明破解成功。
发表评论
-
kali 2.0 broadcom wifi connection
2015-12-12 16:28 444引用apt-get install -y linux-head ... -
kali2.0中国源
2015-09-27 01:42 453#中科大kali源 deb http://mirrors.us ... -
linux 安装scrapy
2015-09-07 13:06 602由于scrapy对python3支持不是很好,所以使用pyth ... -
nginx reverse proxy cofinguration
2015-08-28 15:18 417based on our case, we need to h ... -
wpscan
2015-08-01 10:39 435https://www.digitalocean.com/co ... -
arachni-web-ui使用
2015-06-10 01:04 2146最近在玩儿arachni,想试试arachni-ui-web, ... -
linux dd命令
2015-06-06 14:29 379dd if=/dev/hda of=disk.mbr coun ... -
HACKING NODEJS AND MONGODB
2015-06-04 23:52 342http://blog.websecurify.com/201 ... -
php object inject
2015-05-29 00:45 339解释: http://securitycafe.ro/2015 ... -
[转]Forcing XXE Reflection through Server Error Messages
2015-05-19 01:10 453原文地址:https://blog.netspi.com/fo ... -
CVE-2011-2461
2015-03-31 01:19 430http://blog.nibblesec.org/2015/ ... -
[译]从配置错误的web server中dump git数据
2015-03-26 01:07 583原文地址:https://blog.netspi.com/du ... -
[转]Microsoft Access sqli
2015-03-18 00:57 437https://milo2012.wordpress.com/ ... -
[转]sqlmap注入Microsoft Access
2015-03-18 00:49 1593https://github.com/sqlmapprojec ... -
Wine中使用MinGW
2015-03-17 00:49 654原文:http://null-byte.wonderhowto ... -
crossdomain.xml
2015-03-12 01:23 671参考: https://hackerone.com/repor ... -
[译]使用wireshark解密TLS浏览器流量
2015-03-12 00:57 4126原文地址:https://jimshaver.net/2015 ... -
xxe方法
2015-02-01 18:32 849原文地址:http://www.christian-schne ... -
owasp zed--Web Sockets
2015-01-31 01:16 644http://digi.ninja/blog/zap_web_ ... -
memcached
2015-01-25 01:56 0http://www.sensepost.com/blog/4 ...
相关推荐
《Spring Security3 张卫滨(译)》是关于Spring Security框架的一本深入解析书籍,由张卫滨翻译。Spring Security是Java平台上的一个强大且高度可定制的身份验证和访问控制框架,它为Web应用程序提供了全面的安全解决...
这些特性有助于防止常见的Web攻击。此外,Spring Security还支持OAuth2,可以与其他服务进行安全的集成,如社交登录服务。 对于API安全,Spring Security提供了对RESTful服务的保护。这包括JWT(JSON Web Tokens)...
- **用途**:适用于需要高性能数据转发的应用场景,如大型Web应用。 - **用例**:例如,在视频流媒体服务中,快速的数据传递是关键,此时使用基于数据包转发的架构可以更好地满足需求。 #### 第三部分:负载均衡 ##...
6. 安全防护:Yii框架对常见Web应用攻击如SQL注入、XSS(跨站脚本攻击)有很好的防护措施。它还提供了认证、授权机制,确保只有经过验证的用户才能访问特定资源。 7. 测试支持:Yii提供全面的测试工具,如单元测试...
《JSP毕业生招聘信息的发布与管理系统》是一款基于JavaServer Pages(JSP)技术的Web应用程序,主要用于高校毕业生的就业信息管理。系统集成了招聘信息的发布、查询、管理和更新等功能,旨在帮助毕业生更方便地获取...
Session,中文常译为“会话”,在Web开发领域中扮演着至关重要的角色,尤其是在维护客户端与服务器之间的交互状态方面。Session的概念源远流长,但其核心在于“保持状态”,即确保在一系列操作或消息传递过程中,...
- **安全性**:内置了许多安全功能,如XSS过滤器等,可以有效防止常见的Web攻击。 ### 安装与配置 #### 1. 环境要求 - **PHP版本**:推荐使用PHP 5.6或更高版本。 - **服务器**:支持Apache、Nginx等多种Web服务器...
BBS,全称Bulletin Board System,中文译为“电子公告板系统”,是一种基于文本的在线交流平台。它允许用户通过互联网发送消息、参与讨论、分享资源,是早期互联网社交的重要形式。简易BBS系统,正如其名,是一个...
BBS,全称Bulletin Board System,中文译为“电子公告板”,是一种基于Web的在线交流平台。用户可以通过BBS系统发布信息、发表观点、参与讨论,是互联网上最早期的社区形式之一。在本文中,我们将深入探讨BBS系统的...
同时,由于ASP代码可能暴露在Web服务器上,需要关注代码的安全性,防止SQL注入等攻击。 总结来说,这个免费的OA整站源码提供了一个基础的办公自动化平台,涵盖了用户认证、工作流程自动化、文档管理等核心功能。...
4. **安全性**:讲解如何保护Tomcat服务器免受攻击,如设置SSL/TLS、用户认证、角色权限管理,以及防火墙和反向代理的配置。 5. **性能调优**:涵盖内存管理、线程池设置、连接器优化、日志和错误处理等方面的策略...
描述中提到“使用多个入口控制器测试皮肤科”,虽然表述有些模糊,但我们可以推测这可能涉及到多因素认证(MFA)或者在分布式系统中的权限管理,其中“皮肤科”可能是一个误译或者是特定场景的代称,如用户界面的...
Django,中文译为“詹戈”,是基于Python语言的一款强大、高效且易用的Web开发框架。它遵循MVT(Model-View-Template)设计模式,使得开发者能够快速构建高质量的Web应用。Django的特性包括ORM(对象关系映射),...
在IT行业中,安全是至关重要的一个领域,尤其是在Web开发中,PHP作为一种广泛应用的服务器端脚本语言,其安全性直接影响到网站的数据安全和用户隐私。"公式化证券化:挑战1.2公式化PHP加密化"这个主题,显然是针对...