HTTP基本认证

在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供用户名和密码 的一种方式。HTTP基本认证

题目描述

点击链接后,题目出现了让你输入用户名和密码的弹窗。而通过提示信息,我们知道用户名大概率是admin。而加之题目附件给出了字典。那么密码一定在给出的字典中。我们可以通过burp来进行爆破。

解题过程

抓包

首先设置火狐的代理,让火狐的走burpsuit的代理127.0.0.1:8080

要想方便的话,还是要用火狐的插件,方便切换代理。

同时在Burp端设置好截断,监听127.0.0.1:8080

然后拦截我们输入密码的那一次请求

确定之后,我们会在burp的代理页面看到HTTP报文

我们注意到最后一行,Authorization :Basic 后面应该是一行base64编码。

解码之后我们就可以发现,我们刚刚输入的账号名的密码通过Base64 编码加密了。

爆破

在代理的界面右键转发到测试器。

攻击位置,我们选择刚刚我们测试的base64

然后我们设置payload

我们设置为自定义的迭代器

位置1

位置2

对我们的payload进行base64编码处理

之后我们就可以开始进行爆破了。

筛选出来唯一一条正确响应的那条记录

查看响应包。

获取flag。

相关知识

HTTP基本认证

HTTP基本认证 是一种十分简单的技术,使用的是 HTTP头部字段 强制用户访问网络资源,而不是通过必要的cookie、会话ID、登录页面等(非获取访问控制的)手段。

在进行基本认证的过程里,请求的HTTP头字段会包含Authorization字段,形式如下: Authorization: Basic <凭证>,该凭证是用户和密码的组和的base64编码

过程

首先请求一个需要身份认证的网页,会有弹窗提示让你输入密码。如果没有提供用户名和密码,服务端会响应一个401应答码,并提供一个认证域(Access Authentication):头部字段为:WWW-Authenticate,该字段为要求客户端提供适配的认证信息

GET /private/index.html HTTP/1.0
Host: localhost
HTTP/1.0 401 Authorization Required
Server: HTTPd/1.0
WWW-Authenticate: Basic realm="Secure Area"
Content-Type: text/html
Content-Length: 311 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>

注意上面的WWW-Authenticate: Basic realm="Secure Area"的这一字段。Basic 为验证的模式,realm="Secure Area"为保护域,用于与其他请求URI作区别

接到应答后,客户端显示该认证域(输入用户名和密码的框框)。给用户并提示输入用户名和密码。此时用户可以选择确定或取消。

用户输入了用户名和密码后,客户端软件将对其进行处理,并在原先的请求上增加认证消息头Authorization)然后重新发送再次尝试。过程如下:

  • 将用户名和密码拼接为用户:密码形式的字符串。
  • 如果服务器WWW-Authenticate字段有指定编码,则将字符串编译成对应的编码(如:UTF-8)。
  • 将字符串编码为base64。
  • 拼接Basic ,放入Authorization头字段,就像这样:Authorization :Basic 字符串
    • 这里注意Base64编码并非加密算法,其无法保证安全与隐私,仅用于将用户名和密码中的不兼容的字符转换为均与HTTP协议兼容的字符集。
GET /private/index.html HTTP/1.0
Host: localhost
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

服务端会进行基本认证,如果认证通过,则返回正确的页面。否则还是401 unauthorized

HTTP/1.0 200 OK
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:19:07 GMT
Content-Type: text/html
Content-Length: 10476
优点
  • 简单,应用范围广

    • HTTP基本认证是一种十分简单的技术,使用的是HTTP头部字段强制用户访问网络资源,而不是通过必要的cookie、会话ID、登录页面等(非获取访问控制的)手段
  • 在可信网络环境中使用基本认证。

    • 内部网络,或者对安全要求不是很高的网络。会结合HTTPS一起使用的,https保证网络的安全性,然后基本认证来做客户端身份识别。
缺点
  • 基本认证 并没有为传送凭证(transmitted credentials)提供任何机密性的保护,仅仅使用 Base64 编码并传输,而没有使用任何加密算法。因此,基本认证常常和HTTPS 一起使用,以提供机密性

参考资料

[1]. HTTP基本认证

[2]. 秒懂HTTP基本认证(Basic Authentication)

CTF_WriteUp_HTTP基本认证(Basic access authentication)的更多相关文章

  1. TortoiseGit拉取或推送,输入账号密码后提示 HTTP Basic: Access denied fatal: Authentication failed 解决方案

    TortoiseGit拉取或推送项目,输入账号密码后,提示 HTTP Basic: Access denied fatal: Authentication failed. 大体意思是,HTTP基本认证 ...

  2. TortoiseGit拉取或推送项目提示 HTTP Basic: Access denied fatal: Authentication failed.

      TortoiseGit拉取或推送项目提示 HTTP Basic: Access denied fatal: Authentication failed. 大体意思是,HTTP基本认证失败,访问被拒 ...

  3. HTTP基本认证(Basic Authentication)的JAVA实例代码

    大家在登录网站的时候,大部分时候是通过一个表单提交登录信息. 但是有时候浏览器会弹出一个登录验证的对话框,如下图,这就是使用HTTP基本认证. 下面来看看一看这个认证的工作过程: 第一步: 客户端发送 ...

  4. HTTP基础认证Basic Authentication

    HTTP基础认证Basic Authentication Basic Authentication是一种HTTP访问控制方式,用于限制对网站资源的访问.这种方式不需要Cookie和Session,只需 ...

  5. remote: http basic: access denied fatal: authentication failed for '‘解决办法

    问题描述 由于这个项目代码使用https 进行clone,为什么?因为代码库ssh有问题!fuck! 导致在push代码的时候出现了 remote: http basic: access denied ...

  6. git Remote: HTTP Basic: Access denied Git failed with a fatal error.

    解决方案: git clone 项目失败,报下面的错误信息: $ git clone http://192.168.0.141/xxxx.git Cloning into 'appEnterprise ...

  7. git中出现remote: HTTP Basic: Access denied

    git中出现remote: HTTP Basic: Access denied 1.git clone时出现 Username for 'http://******': *** remote: HTT ...

  8. HTTP认证之基本认证——Basic(二)

    导航 HTTP认证之基本认证--Basic(一) HTTP认证之基本认证--Basic(二) HTTP认证之摘要认证--Digest(一) HTTP认证之摘要认证--Digest(二) 在HTTP认证 ...

  9. git clone remote: HTTP Basic: Access denied

    git clone 项目失败,报下面的错误信息: $ git clone http://192.168.0.141/xxxx.git Cloning into 'appEnterprise'... r ...

随机推荐

  1. Oracle介绍

    Published: 2016-11-08 22:15:00 In Data Mining. tags: SQL 版本与配置 企业版 标准版 个人版 事务性数据表 分析型数据表 PL/SQL 配置 控 ...

  2. AI:是猫还是狗,这是个问题

    如果你不喜欢小猫和小狗,你可能不知道他们具体是哪一种品种,但是一般来说,你都能区分出这是猫还是狗,猫和狗的特征还是不一样的,那我们如何用机器学习的方法训练一个网络区分猫狗呢? 我们选用的是 Kaggl ...

  3. Python——2list和tuple类型

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  4. Cenots 7 安装mysql cluster 通过rpm 包

    环境:Cenots 7 MG:192.168.0.105 NDB:192.168.0.108 NDB:192.168.0.109 SQL:192.168.0.111 SQL:192.168.0.107 ...

  5. jvm的运行参数

    1.我们为什么要对jvm做优化? 在本地开发环境中我们很少会遇到需要对jvm进行优化的需求,但是到了生产环境,我们可能将有下面的需求: 运行的应用“卡住了”,日志不输出,程序没有反应 服务器的CPU负 ...

  6. 一篇文章带您读懂Map集合(源码分析)

    今天要分享的Java集合是Map,主要是针对它的常见实现类HashMap进行讲解(jdk1.8) 什么是Map核心方法源码剖析1.文档注释2.成员变量3.构造方法4.put()5.get() 什么是M ...

  7. php+mysql开发一个最简单的在线题库,在线做题系统!

    题库,对于教育机构,学校,在线教育,是很有必要的,网上也有不少的第三方在线题库系统,但是本次案例,会让有需要的人了解题库的开发思路,其实很简单,无非就是一个表单验证,数据库验证. 1.先构建表单数据2 ...

  8. ts文件的编译和运行

    hello.ts代码 function sayHello(person: string): string { return 'Hello, ' + person; } let user = 'Tom' ...

  9. springboot连接redis错误 io.lettuce.core.RedisCommandTimeoutException:

    springboot连接redis报错 超时连接不上  可以从以下方面排查 1查看自己的配置文件信息,把超时时间不要设置0毫秒 设置5000毫秒 2redis服务长时间不连接就会休眠,也会连接不上 重 ...

  10. HDFS NameNode详解

    1. namenode介绍 namenode管理文件系统的命名空间.它维护着文件系统树及整棵树内所有的文件和目录.这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件fsimage和编辑日志文 ...