HTTP Basic 认证
HTTP Basic 认证是简单的请求和响应机制,服务器可以通过它从客户机请求认证信息(用户标识和密码)。客户机在 Authorization 头中向服务器传递认证信息。认证信息是基本 64 位编码的。
下面来举个例子具体说明,假设我们请求的用户名密码均为admin,则首先需要对用户名和密码进行Base64编码:
Base64('admin:admin') = YWRtaW46YWRtaW4=
则我们的认证请求为:
Authorization: Basic YWRtaW46YWRtaW4=
客户端请求实例:
GET / HTTP/1.1
Host: localhost
Authorization: Basic YWRtaW46YWRtaW4=
如果认证成功,则服务器会返回 200
的响应:
HTTP/1.1 200 OK
Date: Sun, 05 Jun 2016 13:56:02 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 53
如果认证失败会返回 401
的响应:
HTTP/1.1 401 Unauthorized
Date: Sun, 05 Jun 2016 13:56:02 GMT
status: 401 Unauthorized
Content-Length: 53
使用 Burp suite 进行爆破
首先同样的设置代理然后将拦截的请求发送给 Intruder,如下图所示:
随后在 Intruder 中我们选择 Authorization: Basic
后面那部分内容:
在 Payload 设置中类型选择 Custom iterator
我们的认证信息是类似 username:password
的形式,所示我们需要在 Payload 选项里设置两个 Position,每个 Position 之间使用 :
隔开。关于添加 :
有两种方式,第一种是如果你只准备爆破单个用户,那么可以直接在 Position 1 里的用户名后面直接添加上一个 :
;另一种方式是当你准备同时爆破多个用户时,那么就需要在下面添加分隔符,即在 “Separator for position 1” 中添加 :
。
之后设置 Position 2 也就是我们想要爆破的密码了,我这里就直接加载本地的密码字典里:
然后就是重点了,我们要在 Payload Processing 里添加一条规则,使得 Burp suite 会自动将我们的用户名密码进行 Base64 编码。点击 add 按钮后选择 Encode 和 Base64-encode 就行了:
到这还没完,因为我们的 Base64 编码经常会以等号结尾,这里我们就需要取消页面最底下的 Payload Encoding 选项,不让 Burp suite 把我们的编码后数据中的等号在进行 URL 编码了。
至此,就可以开始进行 HTTP Basic 认证的爆破了,至于爆破的结果吗,那就取决于你使用的字典咯,这个完全随缘了~