手把手教你玩爆破 --- 关于暴力破解的一些故事

news2024/11/26 10:32:57

今天不是来打游戏的,我们的重点是了解一些针对web登陆界面的爆破手法。

就是在很多场合中上不了台面的一类攻击手法。简单的通过正常请求的发送,不断尝试用户名密码,最终登陆上去的方法。我们可以称之为爆破、穷举攻击。

1.概述

穷举就是枚举的意思,在互联网的今天,需要使用某种的服务,大多数都需要口令登录,这个口令就是密码,密码的强度分为,弱口令 、中度口令、强度口令。如果登录的服务为弱口令,那会存在很大的安全隐患,黑客通过穷举弱口令对服务进行攻击,很容易就得到登录密码。得到密码之后就能登录服务,进行其他危害较大得操作。黑客也能通过对用户的信息整理,组合密码进行穷举攻击。例如根据用户的生日号码,出身年月日和姓名进行口令组合,再对其服务进行穷举。

2. 环境搭建

两台windows2012的虚拟机需要部署在本地虚拟化环境内部,我们需要对其上部署的网站进行域名访问。那么我们就需要修改本地也就是本机的host文件指向对应的主机IP地址即可使用域名访问到目标主机。

2.1 解压文件到当前目录

在这里插入图片描述

2.2 导入虚拟机

在这里插入图片描述

获取所有权:

在这里插入图片描述
网卡模式NAT:

在这里插入图片描述

开机后配置自动获取IP地址:

在这里插入图片描述
获取当前虚拟机IP地址:

在这里插入图片描述
我们攻击机由本地宿主机扮演,则在攻击机上将对应的域名解析到此地址上,用于维持域名访问对应的web服务。

C:\Windows\System32\drivers\etc\hosts

192.168.2.175 www.c1moon.com
192.168.2.175 www.c3moon.com
192.168.2.175 www.c4moon.com

测试访问情况:

在这里插入图片描述
三个网站均可以正常通过域名访问即可。

至于环境更加详细的信息大家可以在文档中自行查阅,核心的思想就是我们要通过域名访问到我们的测试网站。

3. burpsuite 穷举后台密码

burp真是安全人员的小帮手,它提供的穷举功能也是十分的强大。

3.1 无验证码穷举

测试站点:www.c1moon.com

3.1.1 找到登陆点

在这里插入图片描述
从这里点击可以进入网站后面的登陆框,如果没有明显的登陆位置则可以使用dirsearch等工具进行路径探测。

在这里插入图片描述

3.1.2 抓包爆破

提示我们密码输错则意味着用户名是存在的,开启burp进行抓包分析:ctrl + r送到重放模块,查看放行后的状态:

在这里插入图片描述
这里显示密码错误,我们继续ctrl+i将数据包发送到爆破模块,在这个模块中被$包裹的就是变量,可以在后续的测试中进行多次遍历。整理(点击clear后选中可变字段,再次点击add)之后就是下面的效果:

在这里插入图片描述

在payload里面添加进入我们的字典

在这里插入图片描述

开始攻击:点击右上角start attack

在这里插入图片描述

到这里我们可以看到,根据相应包大小排序或者状态码来看,有那么一个不一样的,极有可能是正确的密码。正常的页面请求在登陆成功的时候通常是302处理的,我们回到原页面进行登陆尝试即可。

在这里插入图片描述

无验证码的状态爆破成功。

tips:在数据包界面中看不见汉字的时候就可以尝试修改burp的编码格式,调整为汉字即可。

在这里插入图片描述

3.2 burp针对webshell的穷举

灰帽子对网站攻破后,一般会留后门方便对其网站进行非法管理。后门的程序语言包括 aspphp.net 这些脚本文件放在网站某些目录底下, 一般都采用单密码进行登录。

通过目录扫描获取 webshell 的后门的网址。得到网址后可以对其进行密码穷举以此获取登入对方后台的机会。

测试环境:我们已经通过扫描手段获取了两个藏在根目录底下的webshell,尝试对其进行穷举。

http://www.c1moon.com/webshell.asp
http://www.c1moon.com/webshell.aspx

在这里插入图片描述
抓包,将数据包放到爆破模块:

在这里插入图片描述

直接开始进行爆破:

在这里插入图片描述

登陆尝试:

在这里插入图片描述

有一说一这样的大马功能还是十分完善的,另一个的爆破过程不在做演示。

因为没有做任何安全限制,所以突破这样的登陆界面对于我们来说是十分简单的。理论上只要我们的字典足够大,很容易爆破进去。

3.3 有token防御的网站后台

有的网站后台存在 token 值,这个 token 通俗的名字叫令牌,每次刷新页面都会随机变化。提交请求时必须携带这个 token 值,可以利用这点避免后台进行直接穷举和防止 csrf 攻击。

测试环境:

http://www.c3moon.com/login.php

第一次进行请求提交:

在这里插入图片描述
尝试跟进跳转页面可以看到登陆失败的字样:

在这里插入图片描述
当我们尝试再次重放这一数据包时:

在这里插入图片描述

可以看到跟进的响应数据报文已经变成了csrf token increat字样。这就意味着服务端通过token对我们的访问做了限制。其实也可以通过不断刷新页面在当前页面查看token的数值变化:

在这里插入图片描述
其大致的访问逻辑如下:

1.客户端向服务器发起请求
2.服务端在返回页面内部插入一次性token字符串,要求客户端下一次请求提交数据时必须携带该token作为令牌。以此实现安全访问。
3.当我们提交post请求时同时将token附在页面内部,和账号密码一起提交
4.服务器拿到请求先检查token是不是自己先前发出去的内一个,用过之后就将使用过的token标记起来,如果下一次在收到相同的token则视为重放攻击。拒绝登陆请求。

3.3.1 burpsuite绕过token

那么,梳理了以上的防御方式之后我们也该有一个应对思路了。先前的burp在发起大量爆破请求时,无法做到每一个请求都提前获取token,因此导致burp在这个环境中无法使用。

也就是说,我们只要让burp的请求可以在每一次请求之前提前获取一次性的token,就可以绕过这一防御机制。这就要仰仗于burp自带的宏定义功能,在模块执行前辅助执行一些动作。

进入project options选项卡,选择添加新的宏
在这里插入图片描述

点击添加

在这里插入图片描述
选择run a macro
在这里插入图片描述
添加任务:
在这里插入图片描述

添加监控页面:

在这里插入图片描述

选则页面内部提取的内容:

在这里插入图片描述

在这里插入图片描述
设置抓取字段:
在这里插入图片描述
设置成功后应该在这个页面内有如下现象;

在这里插入图片描述
点击ok去设置更新内容,此选项对每一个请求进行如下字段的更新

在这里插入图片描述

设置作用范围:这里的作用URL局限在了目标站点内部

在这里插入图片描述

完成后点击OK即可完成宏的设置。回到最开始的那一步,继续抓包,扔到破解模块开始下一步的爆破,要注意的一点是这个页面每一个请求都会进行跳转,那么我们就需要在爆破模块的这里开启跟踪模式:

在这里插入图片描述
实施爆破:
在这里插入图片描述
可以看到在宏的帮助下我们很快就完成了绕过token限制的爆破。

3.3.2 python脚本绕过token

除了上述的burp工具模块的使用,我们还可以采用python脚本完成这一操作。

#coding:utf-8
import requests
import re
#定义目标URL
url = "http://www.c3moon.com/login.php"

#以密码为参数的请求函数
def login(password):
    session = requests.session()
    req=session.get(url)
    #print(req) 获取session对象,下面则从session对象中获取实时的token数值
    user_token=re.search("[a-z0-9]{32}",req.text).group(0) #32md5
    #print(user_token) 获取当前页面的user_token
    data={"username":"admin","password":password,"Login":"Login",'user_token':user_token}
    req=session.post(url=url,data=data,allow_redirects=True)
    html = req.text
    return html

#注意在当前的页面文件夹内部存放字典文件
with open('toppasswd.txt') as p:
    passlist =p.readlines()
    p.close()

for line in passlist:
    line = line.strip("\n")
    print(line)
    if 'File Upload' in login(line):
        print( "[* 密码 is %s *]" % line )
        break

运行结果:

在这里插入图片描述

原理剖析:

1.客户端在于服务器进行通信时,服务器端会生成session文件用于存储客户端校验用的token信息。

2.客户端拿到响应报文时会生成名称为phpsessionid的cookie其内部存储的就是服务器上对应的sessionid,用于找到对应的文件

3.当客户端再次发起post请求提交文件时,会携带cookie上去,服务器跟着cookie中的sessionid找到存储了的session文件,取出其中的token数值于报文中携带的token进行对比,如果不一致则直接拒绝此请求。返回token失效的信息。

那么,我们的脚本实现的功能就是从返回报文中读取session内的token信息用于本次的web请求发送。循环往复,以此绕开了token的验证机制。

4. 验证码绕过

网站后台或者有登录的地方都可能存在验证码验证,验证码的作用 不少网站为了防止用户利用机器人自动注册、登录、灌水,都会采用验证码技术,所谓的验证码,就是将一串随机产生的数字和符号,生成一幅图片,在图像上加上干扰像素(防止 orc),要用户用肉眼识别其中的验证码信息,输入表单提交网站验证。

针对验证码后台的处理方案我们通常有两种思路,一种就是利用验证码逻辑上的漏洞绕过验证过程。另一种则是直接使用自动化图像识别工具,进行验证码的识别。

4.1 逻辑绕过

4.1.1 cookie失效引发的验证失效

测试站点:登陆框

http://www.c4moon.com/index.php?case=user&act=login

在这里插入图片描述
注意这里第一次登陆是没有这个验证码的,是看不见的。需要我们尝试过一次之后才能显示输入验证码的地方。

抓包分析结果:连续提交会提示我们验证码错误,这里说明每一次请求都刷新了后端验证码的数值。
在这里插入图片描述
尝试绕过,我们删除这里的sessionid再次尝试提交请求,发现响应报文的结果发生了变化:

在这里插入图片描述

套入爆破模块测试效果:
在这里插入图片描述

成功爆破成功,这里推测的原因就是应用程序在处理登陆逻辑的时候出现失误,当客户端不存在cookie的时候不进行验证。这一点在我们第一次登陆的时候其实已经有了迹象,因此我们删除了请求报文中对应的cookie字段之后就直接跳过了执行流程。由此使得我们不用进行验证码的校验就可以进行登陆,从而可以进一步进行爆破攻击。

4.1.2 后台验证码不及时跟新引发的验证码绕过

在登录提交的时候进行验证码验证 不管密码是否正确,都要销毁验证码。

测试站点:

http://emlog.redteam.com/admin/

我们直接进行抓包分析,可以看出来无论我们重复提交多少次返回的数据报文仍旧是密码错误,并非验证码失效。故,验证码并未在输错密码后进行刷新,因此会引发我们可以进行爆破的bug

在这里插入图片描述
进入repeat模块尝试重放:

在这里插入图片描述

爆破模块测试:

在这里插入图片描述

4.2 识别绕过

这一步其实就没有什么技术含量了,找一个趁手的工具,想办法完成验证码识别+爆破一把梭即可

图片的干扰像素太少就会被一些工具识别出来,从而造成验证码失效被绕过的危害。

测试环境:这时候我们假装源站不存在cookie验证的逻辑问题即可

http://www.c4moon.com/index.php?case=user&act=login

我们需要拿到具有验证码识别的工具,首先再输入验证码的地方,我们进行验证码可用性测试。右击验证码,在新页面中打开,复制对应的url即可:
在这里插入图片描述
将其放置到工具中进行处理:

在这里插入图片描述
测试识别无误之后我们就可以进行爆破了,我们先从burp中拿到完整的请求报文。
在这里插入图片描述
将其复制到工具中:

在这里插入图片描述

进入爆破界面:注意这里的特征需要从burp中进行提取,放到框内即可

在这里插入图片描述
到这里,就可以使用此软件进行带验证码识别的爆破了。

5. 防御思路

当然,从上面一系列例子中大家可以发现,爆破的核心有两个,一个是拥有趁手的工具,还有一个就是准确的字典。

那么我们的防御思路也有两个,首先是针对字典的防御,我们在日常设置密码的时候可以强制用户必须用什么样的字符,比如大小写字母、数字8位混合密码。让用户的密码变成真正意义上的强密码。以此降低用户密码出现在黑客字典中的概率。

其次,我们可以在其工具上下功夫,也就是在人机识别上想办法。如果说传统的验证码会被绕过,那我们就用更加难以被机器识别的验证码,或者干脆添加单用户登陆手机验证、邮箱验证。如此一来便可以提高工具使用者的门槛。

当然,面对这样的自动化威胁,如果作为大型企业,其已经危害到我们的营业安全时。我们就应该考虑进行相应安全设备的使用,比如可以在自动化威胁防御方面做出强对抗的某些WAF,或者某厂商的动态应用防护系统等。都可以有效的抵抗暴力破解和撞库带来的危害。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/770238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCv之图像金字塔

目录 一、图像金字塔介绍 二、高斯金字塔 三、拉普拉斯金字塔 一、图像金字塔介绍 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。简单来说,图像金字塔是同一图像不同分辨率…

基于区块链技术的元宇宙游戏将成为时代浪潮的弄潮儿

区块链技术作为互联网新兴技术逐渐走进公众视野,其中心化、分布式、公开透明、不可篡改等技术特性使其可以在各个领域大展拳脚。区块链技术在金融、公益、文化、物流、农业等领域带来了全新的思维视角、全新的场景与全新的解决方案,无疑是移动互联网之后…

Spring Batch之读数据库—JdbcCursorItemReader之自定义PreparedStatementSetter(三十八)

一、自定义PreparedStatementSetter 详情参考我的另一篇博客: Spring Batch之读数据库——JdbcCursorItemReader(三十五)_人……杰的博客-CSDN博客 二、项目实例 1.项目实例 2.代码实现 BatchMain.java: package com.xj.dem…

推荐10款设计师都在用的3d机械工程软件

新产品和系统的研究和开发需要特定的软件。您必须能够设计建筑物、系统、机械和设备的蓝图和示意图。您还需要能够与其他工程师、绘图员和团队成员协作,同时有效且高效地工作。设计工程师的软件必须简化其流程,以避免妨碍他们的设计和开发工作。 好的工…

SpringBoot项目中WEB与Controller的联系--【SB系列之009】

SpringBoot系列文章目录 SpringBoot 的项目编译即报错处理–SB系列之001 —第一部的其它章节可以通过001链接 ———————————————— SpringBoot项目中WEB页面放哪里–【SB系列之008】SpringBoot项目中WEB与Controller的联系–【SB系列之009】SpringBoot项目中MVC…

喜报|英码科技联合广师大荣获“智芯杯”AI芯片应用创新创业大赛两大奖项

7月15日,由中国仪器仪表学会主办的全国首届“智芯杯”AI芯片应用创新创业大赛总决赛暨颁奖典礼圆满结束,英码科技联合广东技术师范大学设计开发的“AI视觉,让工厂建设更智慧”和“基于AI的智慧校园无感考勤系统”创新项目均荣获三等奖。 ​ 自…

曲师大2023大一新生排位赛-C.String题解

C.String 题目描述 众所周知,许师哥精通字符串。 一天,许师哥意外的获得了一个字符串,但他发现这个字符串并不是一个回文串,因此他非常生气。于是他决定从这个字符串中删除若干个字符使得 剩余的字符串为一个回文串。 回想回文串…

如何选购开放式耳机?开放式蓝牙耳机哪些品牌比较好?开放式耳机选购指南!

作为一个耳机爱好者,最近更是喜欢上了开放式蓝牙耳机,实际用过的起码有十几款,但其实最终能留下来的也只有四五款。由于前期并不知道应该如何选择开放式耳机,经常都会高价买到些质量差、音质也不好、漏音大的开放式耳机&#xff0…

SpringBatch从入门到实战(十一):事务控制

一:事务模型 Step之间事务独立。Step划分成多个Chunk执行,Chunk事务批次独立,互不影响。Chunk开始启动一个事务,Chunk结束时提交或者回滚事务。 二:事务回滚控制 默认情况下,无论是设置了重试retry&#…

实际上手体验maven面对冲突Jar包的加载规则 | 京东云技术团队

一、问题背景 相信大家在日常的开发过程中都遇到过Jar包冲突的问题,emm,在最近处理业务需求时我也遇到了不同版本jar包冲突导致项目加载出错的问题。主要是一个完整的项目会不可避免的使用第三方的Jar包来实现功能开发,各种第三方包之间可能…

低代码如何帮助企业数字化转型?

在数字化时代背景下,企业都面临着巨大的数字化转型挑战。为了迎接这一挑战,企业软件开发工具和平台都在不断地创新和进化。其中,低代码开发平台应运而生,并成为了众多企业转型的首选方案。企业为什么都选择低代码开发平台&#xf…

【机器学习】PyTorch手动实现Logistic算法

参考地址:点击打开 计算较为繁琐,需要用到sigmoid函数和梯度下降算法,步骤主要如下: 二项分布概率公式表示最大似然估计和对数化计算求道带入梯度下降算法计算和优化 代码: import numpy as np import matplotlib.p…

[CPU飙升排查]生产CPU飙升,YGC不断的事故

背景 最近给上线还未使用的服务配置监控,监控系统电话将我呼醒 ,导致原本就不多的头发一阵掉落. 还好系统还没有流量进入,先免打扰,第二天再处理. 查看面板情况如下: FGC正常 YGC不断 CPU飙升 思路确定 分析了下YGC不断,但是没有FGC,CPU飙升,可能出现的情况是哪里有活锁或者…

数据迁移卷不动了?Squids DBMotion新增多种数据库迁移能力

Squdis DBMotion新增了多种数据库的迁移能力:SQLServer to SQLServer、Redis to Redis、MySQL to Kafka,增加了列映射、校验任务独立、抽样校验、校验复检和限速等十多项功能。 本次版本更新,DBMotion新增了三种数据库迁移同步的场景。目前&…

el-table组件插槽“slot-scope”

目录 一、代码展示 二、返回的数组对象不含value或者ispass&#xff0c;不会报错 三、插槽里面放的是要手动输入的值时 一、代码展示 <el-table v-loading"loading" :data"checklistList" selection-change"handleSelectionChange"><…

轻松实现数据一体化:轻易云数据集成平台全解析

在当今快速发展的商业环境中&#xff0c;企业面临着大量来自多样数据源的数据。如何将这些数据进行高效集成和利用&#xff0c;成为企业数字化转型的关键挑战。轻易云数据集成平台提供了一个一站式的解决方案&#xff0c;帮助企业实现数据的无缝集成和高效利用。下面我们将通过…

Pandas Groupby:在Python中汇总、聚合和分组数据

GroupBy是一个非常简单的概念。我们可以创建一个类别分组&#xff0c;并对这些类别应用一个函数。这是一个简单的概念&#xff0c;但它是一种在数据科学中广泛使用的非常有价值的技术。在真实的的数据科学项目中&#xff0c;您将处理大量数据并一遍又一遍地尝试&#xff0c;因此…

Linux(CentOS7)下源码编译 PostgreSQL13.10 安装手册

Linux&#xff08;CentOS7&#xff09;下PostgreSQL安装手册 文章目录 一、准备PostgreSQL二、安装PostgreSQL2.1解压安装包2.2编译PG2.3查看PG安装目录2.4配置PG环境变量2.5查看PG版本2.6创建postgres用户2.7创建PG数据库数据存放目录2.8授权PG数据库数据存放目录2.9切换postg…

一起学SF框架系列5.9-spring-Beans-bean实例创建

bean实例化底层采用Java反射机制&#xff0c;但Spring根据框架需要提供了更多的增强功能。 类关系图 InstantiationStrategy&#xff1a;接口-定义了创建RootBeanDefinition对应bean实例方法 SimpleInstantiationStrategy&#xff1a;简单bean的实例化处理。实现了Instantiati…

WEB:题目名称-文件包含

背景知识 题目 题目了文件包含&#xff0c;所以想到了php伪协议 构造payload尝试读取flag.php /?filenamephp://filter/readconvert.base64-encode/resourceflag.php 页面提示“do not hack”猜测可能是黑名单检测敏感字符串。猜测字符串哪些被禁用&#xff0c;这里输入单个…