验证码识别&暴力破解
1. 前言
作为一名努力工作的渗透实习生,这段时间在处理渗透工作的时候发现,弱口令是进入网站最简单、最有效、危害重大的漏洞之一,但常常暴力破解用户名时会发现存在讨厌的验证码,让我们从而无法进行渗透工作。所以,这俩天写了几行代码可以简单的识别验证码并进行暴力破解,算是个人总结吧,大牛们绕过就好。
2. 准备工作
在渗透测试中我们需要收集一些有用的信息,比如网站存在的用户名,如图2.1所示,在找回密码处可以遍历用户名,使用Burp抓包从返回包中可以看到用户名是否存在。但同时也可以看到有验证码的存在,我们无法进行暴力破解,所以我们需要识别验证码并加入字典进行暴力破解
图2.1
3. Python程序
3.1 整体思路
3.1.1 访问该网站页面,爬取页面存在的验证码信息和跳转的地址(点击下一步访问的地址)。
3.1.2 识别验证码,加入验证码和用户名字字典请求访问。
3.1.3 从放回包中判断是否暴力破解成功,打印出存在的用户名。
3.2 python识别验证码
将验证码下载到本地,命名为code.jpg
from PIL import Image
import pytesseract
python中使用Image,pytesseract识别存在的验证码
成功识别出存在的验证码 7KKV
3.3 爬取验证码信息和跳转地址
3.3.1 访问该网址链接,使用firebug查看页面源代码发现存在的验证码地址和跳转的地址,我们需要加载用户名字典和识别出来的验证码进行访问。
3.3.2 Python识别验证码和下一次请求的地址
使用requests模块进行第一次访问,通过查看源代码,进行正则匹配得到验证码地址和跳转的地址,将验证码保存到本地,识别验证码并返回
3.3.3 加载用户名字典,进行暴力破解
定义用户字典函数,返回users列表
抓包分析数据包,为post请求
通返回包中,如果用户名错误或验证码错误,会出现titleNoteError字段,如果正确则没有该字段。
编写暴力破解模块
加入多线程,优化破解速度
完整代码
存在的用户名