第83篇:HTTP身份认证401不同情况下弱口令枚举方法及java代码实现(上篇)

这篇具有很好参考价值的文章主要介绍了第83篇:HTTP身份认证401不同情况下弱口令枚举方法及java代码实现(上篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

java http校验身份,http,java,网络协议,网络,开发语言

 Part1 前言 

大家好,我是ABC_123。在日常的渗透测试及红队评估项目中,经常遇到http 401身份认证的情况,具体就是访问一个特定目录的时候,会弹出一个要求输入用户名密码的框框。很多朋友会误以为是与tomcat的http basic认证一样,就是把用户名及密码进行了简单的base64加密,然后使用相应的工具进行弱口令猜解,实际上这里面有各种各样的身份验证算法,非常复杂。接下来ABC_123就搭建IIS测试环境,给大家分享一下相关经验,同时分享一下不同情况下弱口令枚举的关键Java代码实现,网上能用的java代码极少,甚至是搜索不到,ABC_123也是踩了一大堆的坑。

注:特别感谢我的APT老大哥的指点,Negotiate协议和Kerberos协议的问题困扰了我好长时间,在老哥的指点下茅塞顿开。

java http校验身份,http,java,网络协议,网络,开发语言

 Part2 技术研究过程 

  • 基础环境搭建

IIS中间件可以很方便地设置常用的HTTP 身份认证,本地搭建一个IIS环境,对需要身份认证的/fck目录进行权限设置,双击“身份验证”选项。

java http校验身份,http,java,网络协议,网络,开发语言

发现IIS默认情况下有以下这几种身份验证方式,分别是“Windows身份验证”、“基本身份验证”、“匿名身份验证”、“摘要式身份验证”。其中匿名身份验证就是允许任意用户访问,不牵扯到输入弱口令问题,这里就不过多叙述了。

java http校验身份,http,java,网络协议,网络,开发语言

  • 基本身份验证

首先看第一种情况,也就是最常见的Http Basic认证,就是类似于Tomcat后台管理页面的登录方式。如下图所示,开启“基本身份验证”选项,其它的全部关闭。

java http校验身份,http,java,网络协议,网络,开发语言

在这种情况下,以GET请求访问/fck目录时返回如下消息头,"Basic" 表示所使用的验证方案是基本身份验证,这是HTTP协议中最简单的一种认证方法。"realm="192.168.237.129"" 指示了受保护资源所属的域,除了IP地址,也可以是一个域环境的域名。

java http校验身份,http,java,网络协议,网络,开发语言

使用burpsuite进行抓包发现,其加密方式就是普通的Base64加密,与大家最常见的Tomcat的后台登录加密方式是一样的,这种的太过常见,这里就不过多叙述。

java http校验身份,http,java,网络协议,网络,开发语言

  • 摘要式身份验证

接下来尝试一下“摘要式身份验证”,IIS中间件下的开启摘要式身份验证需要加入域环境,于是ABC_123安装了一个域控虚拟机,域名为test111.com。接下来选择test111.com之后点击确定,IIS就启用了该认证模式。

java http校验身份,http,java,网络协议,网络,开发语言

此时,以GET请求/fck目录,发现服务器返回如下消息头:"Digest" 表示所使用的验证方案是摘要身份验证;"qop" 表示质量保护,这里是指定为"auth",表示使用身份验证;"algorithm" 指定了使用的加密算法,这里是MD5-sess;"nonce" 是一个由服务端生成的随机字符串;realm则给出了域控服务器的域名,就是我们搭建的域环境test111.com

java http校验身份,http,java,网络协议,网络,开发语言

java http校验身份,http,java,网络协议,网络,开发语言

根据弹出的提示框输入一个用户名密码,之后使用burpsuite抓包,发现浏览器发送的http请求是如下格式,看起来非常复杂,已经不是使用简单的java代码就能够实现弱口令猜解的。

java http校验身份,http,java,网络协议,网络,开发语言

最后,ABC_123踩了一大堆坑,然后各种搜索、尝试了各种代码,最后给出如下真正可用的java代码。将如下代码改成多线程,就可以实现对此的HTTP 摘要身份验证的用户名密码的暴力破解了。

java http校验身份,http,java,网络协议,网络,开发语言

  • Windows身份验证(Negotiate+NTLM)

接下来尝试一下“集成Windows 身份验证”方式,勾选相应的选项之后,使用burpsuite对其进行抓包。

java http校验身份,http,java,网络协议,网络,开发语言

此时,以GET请求/fck目录,发现服务器返回如下消息头,返回消息头有两个WWW-Authenticate,ABC_123查阅资料发现,这里主要是为了兼容性的考量。如果客户端不支持Negotiate协议,那么我们的浏览器就会选择NTLM认证方式;如果客户端支持并选用了Negotiate协议,又会有两种情况,分别是Kerberos协议及NTLM协议。这时候如果客户端支持Kerberos,会优先使用Kerberos验证;如果不支持Kerberos,则会选用NTLM认证。这里面很绕,如果新手朋友听不明白,可以继续看接下来的实验。

java http校验身份,http,java,网络协议,网络,开发语言

java http校验身份,http,java,网络协议,网络,开发语言

根据提示框的提示,输入用户名密码之后,使用抓包工具进行抓包发现Authorization: Negotiate TlRMTVNTUAADAAAA,base64解码之后发现是Authorization: Negotiate NTLMSSP+二进制数据,说明此时我们的浏览器选择了NTLM认证。

java http校验身份,http,java,网络协议,网络,开发语言

对于这种情况下的HTTP NTLM账号密码猜解,ABC_123又是踩了一大堆的坑,最终给出的真正能用的Java代码如下:

java http校验身份,http,java,网络协议,网络,开发语言

  • Windows身份验证(Negotiate+Kerberos)

接下来看最后一种情况,就是Negotiate认证下的Kerberos协议过程。本地继续搭建一个虚拟机,新建一个域用户并以域用户身份登录此虚拟机。

java http校验身份,http,java,网络协议,网络,开发语言

此时目标url的/fck目录不能以ip地址形式访问,需要以计算机名的形式浏览,此时发现不需要输入用户名及密码就可以直接访问/fck目录。因为我们以域用户身份登录了当前虚拟机,当前域用户是有权限访问/fck目录的,所以此时浏览器使用了Kerberos认证。此时使用Fiddler抓包,在“认证”选项卡下,发现了通信过程是Kerberos协议。

java http校验身份,http,java,网络协议,网络,开发语言

 Part3 总结 

1.  对于HTTP身份验证的弱口令审计,需要仔细分析服务器返回消息头中的WWW-Authenticate字段。

2.  本篇文章对于新手会难以理解,最好是能搭建环境尝试一下,还有更多关于HTTP身份验证的情况,后续ABC_123继续搭建环境给大家分享。

java http校验身份,http,java,网络协议,网络,开发语言

公众号专注于网络安全技术分享,包括APT事件分析、红队攻防、蓝队分析、渗透测试、代码审计等,每周一篇,99%原创,敬请关注。

Contact me: 0day123abc#gmail.com

(replace # with @)文章来源地址https://www.toymoban.com/news/detail-765578.html

到了这里,关于第83篇:HTTP身份认证401不同情况下弱口令枚举方法及java代码实现(上篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 身份认证——802.1x认证和MAC认证讲解

    目录 802.1x基础 EAP(Extensible Authentication Protocol)可扩展认证协议 EAPoL(EAP over LAN)局域网可扩展认证协议 802.1x体系架构 受控端口的受控方式 802.1x认证 802.1x认证触发方式 客户端退出认证 802.1x认证方式 MAC认证 802.1x认证又称为EAPOE(Extensible Authentication Protocol Over Ethernet)认证

    2024年02月03日
    浏览(43)
  • 【认证绕过】NACOS身份认证绕过漏洞分析

    前言 工作中遇到一个nacos服务认证绕过的问题,在此总结一下漏洞原因。 官方文档描述: Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、

    2023年04月13日
    浏览(52)
  • 鉴权与身份认证

    ​ 所谓鉴权就是 身份认证 ,就是验证您是否有权限从服务器访问或操作相关数据。通俗的讲就是一个门禁,您想要进入室内,必须通过门禁验证身份,这就是鉴权,如打开一个网站必须要输入用户名和密码才可以登录进入,这种就是鉴权,还有一些业务需要登录以后才可以

    2024年03月14日
    浏览(68)
  • NACOS身份认证绕过

    一、漏洞描述 Nacos是Alibaba的一个动态服务发现、配置和服务管理平台。攻击者通过添加Nacos-Server的User-Agent头部将可绕过(nacos.core.auth.enabled=true)鉴权认证,从而进行API操作。 二、漏洞利用 访问 http://xxxxx/nacos/v1/auth/users?username=testpassword=test ,并使用burpsuite进行抓包,将方法

    2024年02月16日
    浏览(46)
  • Nacos身份认证漏洞

    公司Nacos版本有用的2.0.1和2.0.3的都复现了身份认证的漏洞,无需认证身份就可以查看用户列表以及注册新用户,并且注册上来的新用户可以查看所有public命名空间下的配置资源! 1、查看用户列表 URL: http://ip:8848/nacos/v1/auth/users?pageNo=1pageSize=1 方法类型:GET 返回结果: 如图示

    2023年04月10日
    浏览(44)
  • 常见的身份认证技术

    (1)   口令认证技术(用户名/密码) 这是最简单也是最传统的身份认证方法,通过口令来验证用户的合法有效性。 通过用户名  ID  和用户密码  PW  来认证用户。 只要能够正确验证密码,系统就判定操作者是合法用户。 口令认证主要适用于小型封闭型系统。 存在的问题

    2024年02月06日
    浏览(53)
  • ES开启身份认证

    X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 X-Pack的发展演变: 1,5.X版本之前:没有x-pack,是独立的:security安全,watch查看,alert警告等独立单元。 2,5.X版本:对原本的安全,警告,监视,图形和报告做了一个封装,形成了x-pac

    2024年02月14日
    浏览(40)
  • Nodejs七、身份认证

    1、Web 开发模式 (1)目前主流的 Web 开发模式 基于 服务端渲染 的传统 Web 开发模式 基于 前后端分离 的新型 Web 开发模式 (2)服务端渲染的 Web 开发模式 服务器发送给客户端的 HTML 页面,是在服务器通过字符串的拼接,动态生成的。 客户端不需要使用 Ajax 这样的技术额外请

    2024年02月09日
    浏览(47)
  • 数据库与身份认证

    能够知道如何配置MySQL数据库环境 能够认识并使用常见的SQL语句操作数据库 能够在Express中操作MySQL数据库 能够了解Session的实现原理 能够了解JWT的实现原理 数据库的概念 安装并配置MySQL MySQL的基本使用 在Express中操作MySQL 前后端的身份认证 数据库(database)是用来 阻止、存储和

    2024年02月10日
    浏览(45)
  • API身份认证JWT

    是一种身份认证的开放标准(RFC 7519),可以在网络应用间传输信息作为Json对象。由三部分组成:头部(Header)、载荷(payload)和签名(Signature). 头部(Header) 两部分组成,令牌类型和所使用的的签名算法   载荷(payload) 包含要传输的信息,包括用户的身份信息、权限等。载

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包