1、弱口令
弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令,例如"123"、"abc"等,因为这样的口令很容易被别人破解,从而使用户的计算机面临风险,因此不推荐用户使用。
2、暴力破解
暴力破解或称之为穷举法,是一攻击手段,一种针对于密码的破译方法,即将密码进行逐个推算直到找出真正的密码为止。为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。 理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
…等等。
3、实验靶场
DVWA
4、实验步骤
low
修改dvwa的难度为low
我们先随便输入账号密码试试
提示账号或者密码不对 打开bp准备抓包
抓包成功后 点击 action 然后点击 Send to Intruder
在Intruder界面,左侧点击clear,如上图。
然后分别选择要爆破/枚举的内容点击Add,这里分别是qwert和4312,也就是登录界面随便输入的账号、密码。注意选择内容的先后顺序,这关系到和字典的对应。
在Positions页面Attack type栏选择Cluster bomb(集束炸弹),多参数做笛卡尔乘积模式爆破,多个密码本对应多个位置,交叉组合,每一个密码本里的密码都对应于另一密码本所有密码。即dict1的第一个密码和dict2的每个密码进行组合爆破,(排列组合的问题)。 在Payloads页面 payload set 选择1,即选择第一个参数也就是账号,payload type 选择 Simple list。Payload Settings 点击load 选择我们提前为账号参数准备好的字典。
重复以上操作,只是payload set处选择2,设置密码的枚举。其他设置默认。
最后点击Start attack 开始攻击
方便测试 只加了几组的账号密码
一共有五组账号密码,只爆破出来了一组,我的字典里没有其他四组账号密码的字符串,字典在爆破里面是很重要的
Medium
可以看到这里的代码做了过滤 起到了防sql注入 还有代码休眠 输入错误会休眠两秒钟
其实也是一样low的方式就可以破解出密码 只是需要更长的时间
high
还是一样代码审计
可以看到头部做了csrf校验 然后是转义
前面还是一样
payload 1 还是一样设置密码字典
但是payload 2 就要用递归
然后双击value值 点击ok
如果报了这种错 则需要修改线程 因为递归的攻击载荷只能线程为1
可以看到这里的password他的长度不一样 所以密码是password
Impossible
最高难度的直接在靶机登录界面破解 靶机登录界面的难度也是最高难度的
与high级别不同的是两个级别最外层的爆破在通过字典尝试不同口令的时候,high级别只要发POST请求报文,就能从对应的响应报文拿到下次再发POST请求报文时需要用到的令牌user_token。但impossible只有先发送GET方式的请求报文,才能获取到服务器发回来的一次性令牌user_token。而GET方式的请求报文,无法提交爆破参数,只能通过POST方式的请求报文来提交爆破所用到的参数,所以需要在BurpSuite里建立一个宏来反复进行操作。
建立宏
选择token所在界面
定义参数
添加规则
选择要更新的参数
选择作用域
宏定义结束 作用全局
接下来就是抓包了
还是选择那两个变量 不修改默认攻击方式
在Payloads选项卡中我们只对password参数加载攻击载荷 并在options选项卡中将Redirections设置为always
然后开始爆破 可以看到password这个密码长度比较长 所以可以看出来password就是登录密码
5、如何防御暴力破解
1、密码设置长度不低于8位
2、用户或者管理员定期必须修改密码
3、密码复杂性(至少使用三种字符)
4、不使用生日/姓名首字母等与自己相关的信息做密码
内容有些参考网上 本篇文章仅复现了dvwa靶场的暴力破解