本人B站视频号:https://space.bilibili.com/1776532629/
个人主页:http://tt.usm.bio
欢迎各位访问参观!
如果文章涉及侵权内容,请联系我删除。
WEB入侵技术——暴力破解
说起黑客入侵技术,你想到的第一个,是什么?
大部分人的答案应该是:破密码!
没错,破解密码已经成为了黑客的基本入侵手法和基本技能,目前主流的密码破解手法是暴力破解
暴力破解就是指通过枚举常见的密码来实现密码破解,简单来说,就是把准备很多密码,然后一个个的试,电脑的速度,比我们手动输入的速度快多了。
暴力破解的攻击方式
在中国早期的黑客群体中,大多都是通过暴力破解的攻击手段来攻击网站的,所以很多民间的黑客组织,制作了很多的暴力破解软件,各种软件,五花八门,但是他们的核心原理都是差不多的。
简单来说,就分几个步骤:
-
第一步,找到要攻击的界面
-
第二步,拦截一个HTTP数据包
-
第三步,编写代码,让代码循环发送数据包,每次修改数据包中的密码字段
-
第四步,当检测到登入成功,停止程序,显示密码
工具介绍
Burp Suite
这款软件是一个WEB程序攻击神器,它拥有拦截HTTP数据包(抓包),重返攻击模块,重复执行模块,智能解码模块等,是一个多功能的WEB攻击软件。
该软件基于Java开发,所以如果使用该软件需要安装Java环境。
暴力破解攻击演示
这里我们用Pikachu做例子,首先拿到我们要攻击的目标网站:
发现是一个登入界面,接下来调用我们的Burp进行攻击。
首先,我们设置浏览器的代理,我是用Kali的火狐浏览器,所以在这里直接在Proxy里面设代理:
设好代理就启动我们的Burp,抓一个数据包:
抓到数据包了,接下来我们可以看到,数据包内password字段是我们的密码字段,我们可以将它发送到Intruder模块(Ctrl + l):
然后选中密码,我们这里爆破admin用户:
然后我们需要载入一个密码字典:
解释一下:密码字典就是一个纯文件,里面存放着用户常见的弱密码。所谓弱密码,就是易于被破解的密码,例如123456,888888,iloveyou之类的密码,通常黑客手里有几百万甚至几个亿的弱密码,把他们排列组合成一个密码字典,用于暴力破解密码。这里我们为了演示方便,就随便输几个密码。
然后我们就开始攻击(点击Start Attack):
爆破完成,仔细看返回的数据包长度,有一个是不一样的,那么那个密码就是正确的,因为返回的界面是成功的界面,其他的都是登入失败的界面,所以长度会不同。
这样,我们就拿到了密码,成功登入了进去!
验证码的绕过
鉴于这种攻击越来越多,网站开发这里也有很多防御措施。
例如添加验证码,这对于一般的用户来说就是多输一个字符而已,而对于黑客来说,每次的验证码都不同,如果我们需要用刚刚的方法破解的话,那么我们还需要再去破解验证码。验证码都是字母数字混搭,爆破起来难度极大,基本就是不可能的。
但是验证码也不是绝对安全的。通常来说,在一次登入失败之后,原来的验证码就应该失效,而如果验证码并没哟失效,那么那个正确的验证码就可以一种用下去!
我们还是那Pikachu网站做例子,拿到一个网站,发现有验证码保护:
不要慌,首先启动Burp先抓个包,然后发送到重放攻击模块(ctrl + r):
然后我们先输入正确的验证码和错误的账户信息,结果返回:密码或用户名不正确:
而当我们再把用户名和密码改成另外一个错误的用户名和密码,返回是:密码或用户名不正确:
这样子的话,相当于我们测试了两个密码,但是并没有显示验证码错误,说明之前的哪个正确的验证码仍然有效!
那么我们就可以进行暴力破解了,和刚刚的过程一样:
然后我们看一眼源代码:
作者也给了提示,验证完成后应该销毁SESSION,否则这个验证码将不会过期!
Token防爆破?
除了验证码,还有一种防御手段叫做Token。
也就是说,你每次发送数据包,都附带一个Token值,然后服务器那里验证你的Token值,一样就放行,不一样就说明这是在暴力破解,直接返回一个错误的页面。
说白了,就是个你看不见的验证码。这样子的话,我们还需要爆破Token值,同样,这是不可能的。
那么黑客应该怎么办呢?
答案很简单,就是在每次爆破之前,先通过程序获取到Token值,然后把Token值放到我们的HTTP数据包里面,然后发送数据包。这样我们同样可以爆破出来结果。
拿DVWA的高安全级别网站做例子,拿到一个网站:
然后Python写一个脚本(这里从网上找了一个脚本,其实也可以自己写):
import requests
import re
url = 'http://your-ip/dvwa/vulnerabilities/brute/' # 你的目标网站
headers = {"Cookie":"security=high; PHPSESSID=......"}#这里填写你的HTTP头部信息
#就是写你在BP里面抓到的headers数据,按照格式写进去
flag = False
f1 = open("usr.txt", 'r')# 用户名字典
for line1 in f1:
username = line1.strip()
f2 = open("pwd.txt", 'r')# 密码字典
for line2 in f2:
# 访问首页
response1 = requests.get(url,headers=headers)
# 获取user_token
user_token = re.findall("(?<=<input type='hidden' name='user_token' value=').+?(?=' />)",response1.text)[0]
# 发送登录数据包
password = line2.strip()
params = {'username': username, 'password': password, 'Login': 'login','user_token':user_token}
response2 = requests.get(url, params=params, headers=headers)
if "Username and/or password incorrect." in response2.text:
print("username:%s,password:%s,user_token:%s----wrong account!" % (username, password, user_token))
else:
print("\033[31;1musername:%s,password:%s,user_token:%s----right account!\033[0m" % (username, password, user_token))
flag = True
break
if flag == True:
break
f2.close()
f1.close()
爆破即可成功。
总结
暴力破解基本攻击手法:BP/Python脚本
防御手段和绕过方法:
-
(1)验证码:利用验证码未销毁
-
(2)Token:利用脚本获取Token值
最后总结一句:
拒绝弱口令,即可有效防止密码被爆破!
文末
本文中所写黑客技术,不得用于非法用途!所造成的后果和本文作者无关!
如有侵权之处,请联系作者删除。
此外,我这里有一份从网上搜集的密码爆破字典和路由器默认密码破解字典,想要的小伙伴可以私信我,或者在下方留言。(大概,400万个密码吧)
来源:freebuf.com 2021-04-05 14:44:39 by: 和风赛跑的男人
请登录后发表评论
注册