HTTP Basic 认证

HTTP Basic 认证是简单的请求和响应机制,服务器可以通过它从客户机请求认证信息(用户标识和密码)。客户机在 Authorization 头中向服务器传递认证信息。认证信息是基本 64 位编码的。
下面来举个例子具体说明,假设我们请求的用户名密码均为admin,则首先需要对用户名和密码进行Base64编码:

  1. Base64('admin:admin') = YWRtaW46YWRtaW4=

则我们的认证请求为:

  1. Authorization: Basic YWRtaW46YWRtaW4=

客户端请求实例:

  1. GET / HTTP/1.1
  2. Host: localhost
  3. Authorization: Basic YWRtaW46YWRtaW4=

如果认证成功,则服务器会返回 200 的响应:

  1. HTTP/1.1 200 OK
  2. Date: Sun, 05 Jun 2016 13:56:02 GMT
  3. Content-Type: application/json; charset=utf-8
  4. Content-Length: 53

如果认证失败会返回 401 的响应:

  1. HTTP/1.1 401 Unauthorized
  2. Date: Sun, 05 Jun 2016 13:56:02 GMT
  3. status: 401 Unauthorized
  4. Content-Length: 53

使用 Burp suite 进行爆破

首先同样的设置代理然后将拦截的请求发送给 Intruder,如下图所示:
【20190127】使用 Burp suite 爆破 HTTP Basic 认证 - 图1
随后在 Intruder 中我们选择 Authorization: Basic 后面那部分内容:
【20190127】使用 Burp suite 爆破 HTTP Basic 认证 - 图2
在 Payload 设置中类型选择 Custom iterator
【20190127】使用 Burp suite 爆破 HTTP Basic 认证 - 图3
我们的认证信息是类似 username:password 的形式,所示我们需要在 Payload 选项里设置两个 Position,每个 Position 之间使用 : 隔开。关于添加 : 有两种方式,第一种是如果你只准备爆破单个用户,那么可以直接在 Position 1 里的用户名后面直接添加上一个 :;另一种方式是当你准备同时爆破多个用户时,那么就需要在下面添加分隔符,即在 “Separator for position 1” 中添加 :【20190127】使用 Burp suite 爆破 HTTP Basic 认证 - 图4
之后设置 Position 2 也就是我们想要爆破的密码了,我这里就直接加载本地的密码字典里:
【20190127】使用 Burp suite 爆破 HTTP Basic 认证 - 图5
然后就是重点了,我们要在 Payload Processing 里添加一条规则,使得 Burp suite 会自动将我们的用户名密码进行 Base64 编码。点击 add 按钮后选择 Encode 和 Base64-encode 就行了:
【20190127】使用 Burp suite 爆破 HTTP Basic 认证 - 图6
到这还没完,因为我们的 Base64 编码经常会以等号结尾,这里我们就需要取消页面最底下的 Payload Encoding 选项,不让 Burp suite 把我们的编码后数据中的等号在进行 URL 编码了。
至此,就可以开始进行 HTTP Basic 认证的爆破了,至于爆破的结果吗,那就取决于你使用的字典咯,这个完全随缘了~