Kali Linux Web渗透测试手册(第二版) - 4.3- 使用Hydra对基本身份验证进行暴力破解攻击

翻译来自掣雷小组

成员信息:

thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt,

这个公众号,一定要关注哦,慢慢会跟上面老哥们一起分享很多干货哦~~

标记红色的部分为今日更新内容。

第四章、测试身份验证和会话管理

4.0、介绍

4.1、用户名枚举

4.2、使用Burp Suite进行登陆页面的字典攻击

4.3、使用Hydra强制进行暴力攻击

4.4、使用Metasploit破解Tomcat的密码

4.5、手工挖掘cookie中的漏洞

4.6、攻击会话固定漏洞

4.7、使用Burp排序器评估会话标识符的质量

4.8、滥用不安全的直接对象引用

4.9、执行跨站点请求伪造攻击


4.3、使用Hydra对基本身份验证进行暴力破解攻击

THC Hydra(简称Hydra)是一个可以进行在线登录验证的工具;这意味着它可以通过暴力的方式来尝试登录密码。在Hydra支持的众多服务中,我们可以找到HTTP登录表单和HTTP基本身份验证。

在HTTP basic身份验证中,浏览器在身份验证头中使用base64编码发送用户名和数据包。例如,如果用户名是admin,密码是password,浏览器将对admin:password进行编码,得到字符串YWRtaW46UGFzc3dvcmQ=,请求头将有这么一行。

Authorization:Basic YWRtaW46UGFzc3dvcmQ=

TIP: 几乎每次我们看到一个看似随机的并且以一两个等号(=)结尾的字符串的时候,该字符都是base64编码的。我们可以使用Burp Suite的解码器或Kali linux中的base64命令轻松解码它,=符号可以进行url编码,即在某些请求和响应中被%3D替换

在前面的小节中,我们使用Burp Suite截断攻击者发起的一个表单请求;在这个小节中,我们将使用THC Hydra攻击HTTP基本身份验证。

环境准备

除了前面小节中使用的密码列表以外,为了进行字典攻击,还需要一个用户名列表。我们假设已经进行了信息收集获得了几个有效地用户名。创建一个文本文件user_list.txt,在里面输入以下内容:

实战演练

在Kali Linux VM存储用户名密码的字典目录中,我们执行以下操作:

1. 打开终端运行hydra,或者使用Kali Linux应用程序|05中的Applications菜单—密码攻击|在线攻击|hydra。

2. 不输入任何参数时将显示基本帮助信息:

在这里,我们可以看到一些有用的帮助信息。通过-L选项,我们可以使用用户名字典文件。-P允许我们使用密码字典。我们还需要在后面跟上://服务器,以及端口号和服务选项。

3. 在终端中:写入以下命令发动攻击: |hydra -Luser_list.txt -P top25_passwords.txt -u -e ns http-get://192.168.56.11/WebGoat

Hydra找到三个不同的用户名/密码组合,成功登陆到服务器。

原理剖析

与其他身份验证方法(例如基于表单的身份验证方法)不同,基本身份验证在发送到服务器的内容、如何发送以及期望从服务器得到的响应方面是标准的。这允许攻击者和渗透测试人员节省宝贵的分析时间,这些工作涉及的参数包含用户名和密码、如何处理,发送这些参数以及如何区分成功响应和不成功响应。这是基本身份验证不被认为是安全机制的许多原因之一。

在调用Hydra时,我们使用了一些参数:

  • -L userlist.txt 告诉Hydra从userlist.txt寻找username。
  • -P top25_password.txt告诉Hydra从top25_password.txt中获得预期密码。
  • -u—Hydra将首先迭代用户名,而不是密码。这意味着Hydra将首先使用单个密码尝试所有的用户名,然后继续使用下一个密码。这将有助于防止账户锁定。
  • -e ns—Hydra尝试将一个空密码(n)和用户名作为密码添加到密码列表
  • http-get表示Hydra将使用GET方式对HTTP基本身份验证发起请求。
  • 之后是://和目标服务器(192.168.56.11).在下一个/之后,我们放置服务器的应用名,在本例中是请求身份验证的URL。没有指定端口,Hydra将尝试默认端口TCP 80.

更多资料

不建议在生产服务器上使用大量密码执行暴力破解,因为我们可能会中断服务、阻塞正常用户或触发保护机制。

作为渗透测试人员。建议每个用户最多使用四次登录尝试以避免阻塞;例如,我们可以尝试添加-p 123456 -e ns,就像我们在这里所说的,来涵盖三种可能:没有密码,密码与用户名相同,密码是123456,这些是世界上最常见的的密码。

另请参阅

到目前为止,我们已经在web应用程序中看到了两种身份验证方法,即基于表单的身份验证和基本身份验证。这些并不是开发人员使用的唯一方法;鼓励读者进一步调查方法的优点、缺点和方法可能存在的安全问题,例如:

  • 摘要身份验证:这比基本身份验证安全的多。不是发送用户名和密码编码的头,客户端计算MD5哈希值提供给服务器;内涵一个nonce,和他的凭证一起,向服务器发送这个哈希,服务器已经知道这个nonce,用户名和密码,就可以重新计算MD5来比较两个值。
  • NTLM/Windows身份验证:遵循与摘要相同的原则,NTML身份验证使用Windows凭据和NTML散列算法来处理服务器提供的challenge。该方案需要多个请求-响应交换,服务器和任何介入代理必须支持持久连接。
  • Kerberos身份验证:这种身份验证方案使用Kerberos协议对服务器进行身份验证。与NTML一样,它不要求输入用户名和密码,但使用Windows凭证登录。
  • Bearer tokens:Bearer tokens是一个特殊的值,通常是一个随机生成的长字符串或者使用加密散列函数签名的base64编码的函数,该函数将该值授予发送请求给服务器的客户机。

本文分享自微信公众号 - 玄魂工作室(xuanhun521)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

WEB前端知识体系精简

Web前端技术由html、css和 javascript三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言。而我们在学习它的时候往往是先...

21430
来自专栏远在上海

js自动绑定焦点到指定textbox,

近期开发Web版的微型仓库管理的小系统,系统的特点就是针对单品条码的管理,也就是所有进出货等都是需要扫描一个唯一的条码来进行的。那么就遇到打开网页之后,自动锁定...

20710
来自专栏安恒网络空间安全讲武堂

X-NUCA2018线上赛 Writeup

据说变成了PWN专场,不过在CRYPTO大佬和RE大佬的发挥下,最后拿到密码三血排名12,拿到决赛的入场券,希望我队的pwn师傅能早日成长起来。

28220
来自专栏安恒网络空间安全讲武堂

2018中原工学院校赛题解

http://39.108.109.85:9000 先开始有点懵逼,查看源代码无果(讲道理这个前端写的挺好看),然后看了一下响应头,发现了tips

23040
来自专栏微信公众号:Java团长

这是我见过的把开发人员学习路线总结的最清晰的四张图了

这是一个国外大牛总结的 2018 年成为 Web 开发人员的学习路线图,团长垂涎已久,准备找机会翻译一下,可是最近发现已经有人翻译出中文版了,于是直接分享给大家...

12720
来自专栏Java架构师进阶

借助Nginx搭建反向代理服务器

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给...

97330
来自专栏前端の进行时

分享前端开发常用代码片段-值得收藏

如果你的网页中需要使用大量初始不可见的(例如,悬停的)图像,那么可以预加载这些图像。

13520
来自专栏破晓之歌

极验验证demo(django+vue) 原

偶然翻看博客,发现有人介绍geetest,看了一下感觉上手比较容易,sui遂注册使用。

56910
来自专栏c#开发者

DotNetNuke初试水之结合NHibernate开发和导入一个Module[代码]

DotNetNuke(简称DNN)是一个免费、开源、可扩展、几近完美的内容管理系统。可广泛应用于商务网站、企业内网(Intranet)和外网网站、在线内容发布网...

14020

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励