10-1.暴力破解介绍
1)暴力破解原理
暴力破解是使用用户自定义字典文件中的内容与验证程序交互,从而在枚举过程中得到正确数据。
案例:
1、破解用户名、密码
2、破解验证码 - 之前四位数的手机验证码在未进行任何防护措施,导致被枚举出来
由此得暴力破解的基础
1、应用程序或服务器未进行限制
2、具有内容涵盖全面的字典文件
2)暴力破解的方式
根据破解的验证内容是否处于服务状态将暴力破解分为以下两类:
1、在线破解
2、离线破解
无论是在线还是离线是否可以破解成功都取决于字典文件内容的强大。同时破解速度的瓶颈在于本地机器与服务器性能、带宽等因素。
3)暴力破解代码分析
以下我们将给出一个验证页面,用于验证用户输入的内容。实际情景会与数据库进行交互验证。
4)暴力破解演示-Burpsuite
使用Burpsuite的Intruder模块对目标进行暴力破解。
判断依据:登录成功与失败返回的HTML内容不同,大小不同,导致根据大小不同筛选出唯一内容。
10-2.暴力破解-表单内容
1)HTML表单介绍
表单是一个包含表单元素的区域。
表单元素是允许用户在表单中输入内容,比如:文本域(textarea)、下拉列表、单选框、复选框等等。
在登录页面中,经常使用表单的POST方法进行数据的提交。
2)暴力破解POST提交数据
通过Burpsuite对POST提交数据进行破解。
3)验证码代码分析
以下给出简单的验证码代码。
4)暴力破解验证码
10-3.暴力破解-HTTP Basic认证
1)HTTP Basic认证介绍
基本认证 basic authentication <--- HTTP1.0提出的认证方法
基本认证步骤:
1.客户端访问一个受http基本认证保护的资源。
2.服务器返回401状态,要求客户端提供用户名和密码进行认证。
401 Unauthorized
WWW-Authenticate: Basic realm="WallyWorld"
3.客户端将输入的用户名密码用Base64进行编码后,采用非加密的明文方式传送给服务器。
Authorization: Basic xxxxxxxxx
4.如果认证成功,则返回相应的资源。如果认证失败,则仍返回401状态,要求重新进行认证。
2)搭建HTTP Basic认证环境
使用Windows server 2003搭建HTTP Basic认证环境。
3)通过Burpsuite分析认证过程
使用Burpsuite对HTTP Basic认证进行抓包分析。
4)暴力破解HTTP Basic认证
使用Burpsuite对目标进行暴力破解
10-4.暴力破解-HTTP Basic认证字典生成
1)字典生成思路
字典生成是针对具体目标进行生成的。目标确定:username:password
前提条件:具有用户名字典文件、密码字典文件
思路:
1、读取字典文件内容
2、对读取来的文件内容进行拼接
3、将新生成的内容写入到最终的字典文件中。符合HTTP Basic认证。
2)Python语言基础
HTTP Basic认证字典文件代码编写过程中建议使用Python语言开发。高效、简单。
可能会用到的基础内容:
1、列表list操作、字符串操作
2、函数
3、文件打开、读写操作
3)Python字典代码编写
使用Python进行字典文件代码编写,生成result.txt。
4)拓展思路
除了可以直接生成字典文件,也可以直接生成加密的base64密文,用于直接使用。亦或加入http请求直接进行暴力破解。
Python语言中使用base64模块进行base64加密;使用requests模块进行http请求。
查看对应模块扩展功能。
10-5.暴力破解-Burpsuite设置HTTP认证
1)设置Burpsuite HTTP认证的原因
Burpsuite是一款功能强大的WEB测试软件,在很多情况下充当着对WEB测试软件首选。
在WEB应用程序过程中,如果WEB设置了HTTP认证,那么久需要使用用户名和密码进行登录才能进行保护区域的资源访问。
Burpsuite中提供了用于认证设置的功能模块可以设置HTTP认证需要的用户名和密码,方便测试。
2)Burpsuite设置认证
在Burpsuite中的User Options中的Platform认证模块中可以设置认证凭证。
10-6.暴力破解-字典制作工具cupp介绍
1)cupp介绍与安装
Cupp是一个跨平台的,用Python编写,用来针对个人情况制作密码字典。它的功能很简单,但有非常强大的结果。
安装步骤:
git clone https://github.com/Mebus/cupp.git
cd cupp
ls
./cupp.py
需要使用Python3来运行cupp
2)cupp使用基础
下面给出cupp的参数帮助信息。
-h 显示帮助信息
-i 以交互的方式制作用户密码字典文件
-w 使用此选项配置现有字典
-l 从仓库下载大型字典文件
-a 直接从Alecto DB解析默认用户名和密码
-v 显示版本信息
10-7.暴力破解-字典制作Pydictor
1)pydictor介绍与安装
Pydictor是新手和专业人士都能欣赏的工具之一。它是一个字典构建工具,在处理密码强度测试时,它是一个非常好的工具。该工具提供了大量的特性,可以用来为几乎任何测试情况创建完美的字典。
安装步骤:
git clone https://github.com/LandGrey/pydictor.git
cd pydictor
python pydictor.py
参考文档:https://github.com/LandGrey/pydictor/blob/master/README_CN.md
2)pydictor使用基础
下面给出pydictor的参数帮助信息。使用案例参考:
https://github.com/LandGrey/pydictor/blob/master/docs/doc/usage.md
10-8.暴力破解-dymerge字典合并工具
1)dymerge工具介绍与安装
Dymerge用来操作多个已获得的字典文件,重塑以及合并的工具。
git clone https://github.com/k4m4/dymerge.git
./dymerge.py
./dymerge.py -h 或者--help获取帮助信息
2)dymerge基本使用
合并两个字典文件为dymerged.txt
./dymerge.py dic1.txt dic2.txt
如果字典文件内容特别大,需要花费大量时间,可以使用参数-f加快速度。
./dymerge.py dic1.txt dic2.txt -f
3)dymerge高级使用
Dymerge删除重复项
./dymerge dic1.txt dic2.txt -u
Dymerge逆向字典
./dymerge dic1.txt dic2.txt -r
Dymerge字母和数字排序
./dymerge dic1.txt dic2.txt -s
4)dymerge输出合并内容
到目前为止,我们一直使用Dymerge的默认设置保存输出,这次我们将使用"-o"标志定义输出的文件名和目标。
./dymerge.py dic1.txt dic2.txt -s -f -o /root/output.txt
也可以定义为压缩文件的输出:
./dymerge.py dic1.txt dic2.txt -z /root/output.zip
10-9.暴力破解-密码离线破解
1)离线破解介绍
离线破解指:破解过程中,已经获得加密密文,在不与目标服务器交互的情况下,利用在线网站或本地程序对密文进行破解。
离线不会触发密码锁定机制
不会产生大量登录失败日志引起管理员注意
2)网站离线破解
以MD5密文为例
https://www.cmd5.com/
3)本地离线破解
利用Python实现本地破解MD5密文
4)离线破解代码拓展
1、既然可以执行MD5破解,那么在修改加密方式的话,就可以实现其他加密方式的密码破解
2、可以使用多线程加快破解速度等。