🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 暴力破解 暴力猜解简单来说就是将密码进行逐个推算,直到找出真正的密码为止 ### 1、暴力破解注意事项: 1. 破解前一定要有一个有效的字典; 2. 判断用户账号和网站情况 是否设置了复杂的密码、网站是否存在验证码、尝试登录的行为是否有限制、网站是否双因素认证、Token值等等。 有些公司内网服务的密码是先统一默认密码给员工,再让他们自己更改,可也可能出现漏洞 >等保中对管理员后台有双因素认证要求,例如只允许某个IP访问,通过堡垒机,手机短信等 3. 对目标网站进行注册、改密、找密等流程 搞清楚帐号密码的一些限制,比如目标站点要求密码必须是8位以上,字母数字组合等 用户名修改密码新旧密码是不允许一样的,也可能出现漏洞 4. 确定要破解的账号是否存在 测试正确账号与错误账号的返回信息是否相同等,想办法先确定要破解的账号是存在的(特别是破解管理员账号时) 通过企业网站所留邮箱命名规则,也可以判断系统账号规则 4. 破解管理后台密码 可使用admin/administrator/root帐号机率较高,可以使用这三个帐号+密码字典进行暴力破解 ### C/S架构和B/S架构 C/S就是“Client/Server”的缩写,即“客户端/服务器”模式。 B/S就是“Browser/Server”的缩写,即“浏览器/服务器”模式。 **C/S与B/S的结构区别:** * 硬件环境不同 C/S通常是建立在专用的网络上,小范围的网络环境。而B/S是建立在广域网上的,适应范围强,通常有操作系统和浏览器就行;  * 安全要求不同 C/S结构比B/S结构更安全,因为用户群相对固定,对信息的保护更强;而B/S结构面向的范围广,所以安全性比较低;  * 系统维护不同 B/S结构维护升级比较简单,而C/S结构维护升级相对困难。 ### 暴力破解分类 1. 基于表单的暴力破解 2. 基于验证码暴力破解 on client常见问题:不安全的前端js实现验证码;不安全的将验证码在cookie中泄露;不安全的将验证码在前端源代码中泄露 on server常见问题:验证码在后台不过期,导致长期使用(php默认session是24分钟过期);验证码校验不严格,逻辑出现问题;验证码设计的太过简单和有规律的被猜解 3. 基于Token破解 由于token值输出在前端源代码中,容易被获取,因此也就失去了防暴力破解的意义,一般Token在防止CSRF上会有比较好的功效。 注意:线程数设为1;Grep-Extract设置好开始token" value=" 结束为" /> ;有郊载荷设为递归搜索 “token” value=" 4. 基于系统、数据库、中间件等第三方服务破解 系统漏洞扫描器自带暴力破解、Bruter工具、hydra ## 验证码安全: 验证码是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试 ### 验证码的原理: 1. 客户端发起一个请求 2. 服务端响应并创建一个新的SessionID同时生成一个随机验证码。 3. 服务端将验证码和SessionID一并返回给客户端 4. 客户端提交验证码连同SessionID给服务端 5. 服务端验证验证码同时销毁当前会话,返回给客户端结果,如果不销毁则默认24分钟 ### 验证码可能会出现的问题 1. 客户端生成验证码 验证码由客户端js生成并且仅仅在客户端用js验证,通过抓包或禁用js,都可绕过 2. 验证码输出客户端 无论出于什么考虑,都不应该把验证码的内容发送到客户端cookie或输出到response headers的其他字段。 比如,写入验证码的MD5值、 Base64转码等,太容易被攻击者逆向破解,得到原值。 3. 验证码输出在cookie中 有些系统默认不显示验证码,而是在用户校验错误一定次数之后再出现。那如何判断用户已经错误几次了呢?没有经验的开发可能这样做: ①在cookie中写入一个标记,比如loginErr = 1,后续错误累加 ②在session中写入一个标记,例如loginErr = 1,后续错误累加 问题在于,要是攻击者不带Cookie提交HTTP请求呢?或者是,攻击者不更新Cookie中loginErr的值反复提交呢?这样程序会因为无从获取Cookie/sessionID,会认为攻击者是首次访问。无论什么时候,验证码都不会出现! 4. 验证码不过期,没有及时销毁会话导致验证码复用(php默认有24分钟) 基本的认识是:一张验证码,只能使用一次。使用之后,立即过期,不可再次使用。 5. 没有进行非空判断 很多时候,我们会遗留掉了验证过程中验证码为空的情况,比如去掉cookie中的某些值或者请求中验证码参数。 6. 产生的验证码问题集内的答案非常有限 例如就4个选项ABCD,那么一直用同一个序号破解,总有25%的概率正确 7. 验证码太简单,容易被机器识别 例如使用pkav这款安全软件,就可以很容易的识别大部分简单验证码 ## 暴力破解安全防范: * 强制要求输入验证码或者手机otp,否则,必须实施IP策略。 注意不要被X-Forwaded-For绕过了! * 验证码只能用一次,用完立即过期!不能再次使用 * 验证码不要太弱。扭曲、变形、干扰线条、干扰背景色、变换字体等。 * 大网站最好统一安全验证码,各处使用同一个验证码接口。 * 要求用户设置复杂的密码; * 对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等); * 采用了双因素认证;