暴力破解攻击

严格来说,暴力破解不能算是web漏洞,但是很多时候我们又会在网站页面用到爆破,所以这里暂且把它归类到web漏洞里。这里会频繁用到BurpSuite,如果不会使用的话,请参考这里

“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
…等等。
千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!

基于表单的暴力破解

只在前端检查,导致存在绕过
首先随意输入一个用户名和密码,Burpsuite抓包

发现没有验证码及其他限制,可以肆意爆破,由于左上角的提示按钮给出了答案,下面处于演示需求做一个简单爆破。


爆出一个账密:admin:123456

验证码绕过(on client)

首先明确两个概念:验证码一般被用来做什么,以及验证码是怎么认证的。
我们一般使用验证码作什么?

1:防止登录被暴力破解
2:防止机器人恶意操作

验证码认证流程
1:客户端请求登录页面,后台生成验证码

后台使用算法生成图片,并将图片响应给客户端
同时将算法生成的值全局赋值存到SESSION中

2:校验验证码

客户端将认证信息和验证码一同提交
后台对提交的验证码与SESSION里面的进行比较

3:客户端重新刷新页面,再次生成新的验证码

验证码算法中一般包含随机函数,所以每次刷新都会改变

客户端验证码是个啥
由于题目是“验证码绕过(on client)”,所以可以列出客户端验证码的常见问题:

使用前端js实验验证码(纸老虎)
将验证码在cookie中泄露,容易被获取
将验证码在前端源代码中泄露,容易被获取

首先先来试试这个页面,账密胡编,测试发现:

不输入验证码会报错
输错验证码会报错
正确输入验证码才会报:用户名或者密码错误


行吧,那就换一种个思路。首先需要明确BurpSuite是一个代理,是客户端浏览器和服务器之间的一个中间人,那么思路就可以是先输入正确的验证码跳出浏览器客户端,进入到BurpSuite中,再由Burpsuite篡改验证码,去验证服务器端是否有验证码验证。

方案1:修改验证码
发现服务器不管验证码错误

方案2:删除验证码
发现服务器不管验证码丢失,操作同上。大致可以判断,是如下逻辑:

我这里选择方案2,执行直接爆破,操作内容同基于表单的暴力破解,不再赘述

验证码绕过(on server)

验证码没有及时销毁,导致存在绕过

先来说一下服务端验证码常存在的问题

验证码在后台过期时间太长,导致验证码可以长期被使用
验证码校验不严格,逻辑出现问题
验证码以明文的形式出现在HTTP响应包里面
验证码设计的太过简单,存在规律,可以被猜到

来看一下目标站点,长这个样子

测试发现,验证码为空,验证码填写错误都会报错,正确填入验证码之后,BurpSuite更改验证码或者删除验证码都会出错,说明服务器和客户端都做了验证码校验,那么首先考虑验证码的可用时长问题。
BurpSuite中的包不要管了,停止截断,浏览器那边手动刷新验证码,获取一个新的验证码之后就不要再动浏览器了,拿着这个新的验证码写到BurpSuite中试着连发几个包,证明是否存在验证码有效期问题

通过更改账密发现服务器返回的是username or password is not exists~说明验证码没有过期,那就爆破


再次爆破成功
实验的逻辑如下:

token防爆破?【旧】

来看一下题目,token在这里是不能防爆破的,i see you here

先用BurpSuite重放试试,发现更改账密时,服务器的响应中有新的token,那其实可以拿每次失败后返回的新的token去做下一次测试,那这样是话是可以爆破的

1:把截断下来的内容发送到Intrude模块,注意选择的攻击模式!
为了方便实验,这里只选择密码和token作为对象。

2:来到Options模块,使用Grep - Extract 通过正则提取返回信息中的内容,如下图所示,先勾选,然后点add发现弹出的页面是空白的话再点一下Refetch response就能看到响应包了,确认目标之后选中即可,然后复制一下token值,就可以点击ok关闭页面了

3:设置为Always

4:线程设置为1

5:第一个payload是密码字典,第二个payload就是token值,粘贴上刚才复制的token值

6:填一下Grep - Match,方便一会找出答案!!!其中login success是在前面的实验中发现的,只要登录成功就会返回这个信息

7:发起攻击

8:于是,很轻松的找出了密码

防爆破的一些手段

设计安全的验证码(安全的流程+复杂而又安全的图形)
对认证错误给出次数限制,超出次数就锁定账户一段时间
使用双因素认证

token防爆破?【新】

参见:https://www.yuque.com/u1881995/xwfvho/vd1kiy#gC6Kg

反CSRF爆破的三种姿势

参考:https://xz.aliyun.com/t/11419#toc-2
介绍了使用CSRF Token Tracker、定义宏、宏+Extractor

宏爆破【联动数据包-场景1】

如果token防爆破中,第一个数据包的响应体中出现token,第二个数据包的请求体中携带token。如何联动2个数据包呢?这就用到宏了,参见:https://medium.com/numen-cyber-labs/using-burp-suite-to-bruteforce-anti-csrf-token-based-forms-f0832fe147c1
在线演示靶场:DVWA https://www.yunyansec.com/#/experiment/securitydetail/55/0/

此处演示的是最简单的场景:两个数据包的参数名称一致!
即:响应包给你token值的参数名,和你请求包中的token值的参数名是一致的!

问题说明

一个数据包获取token
image.png
另一个数据包使用token登录网站
image.png

添加宏

2.1 准备运行一个宏
image.png
2.2 添加一个宏,一旦点击之后有2个弹窗
image.png
2.3 找到有csrf的那个请求数据包,选中它,然后点击“确认”
image.png
2.4 告诉bp,你要获取这个数据包的哪个数据
image.png
image.png
找到它之后,点击“确认”按钮即可
image.png
2.5 现在已经看到设置好的参数值和参数名了。点击“确认”按钮
image.png
现在,我们已经有一个宏了,点击右下角“确认”按钮
image.png
2.6 设置作用范围
由于我没有添加scope(范围),因此,我设置宏对所有的 url 生效,点击右下角“确认”按钮,完成设置。
image.png

验证效果

每发送一次请求,token值就会发生一次变化,说明宏已经生效
123.gif

开始爆破

由于这是CSRF-token,因此速率必须设置为1
image.png
image.png

宏爆破【联动数据包-场景2】

问题说明

这里演示的是某授权地址(需要IP加白才能访问):【禁止公开】

cookie 不存在导致验证码绕过

有些网站如果网站不存在 cookie 就不会验证验证码
正常情况下访问如下:
image.png
经过测试发现,一旦删除掉cookie(验证码verify也删了),多次重放数据包,得到的都是“密码错误或不存在该管理员”,与存在cookie时验证码错误的页面不同。
image.png
于是,爆破的方式就是删除掉cookie。
image.png

phpmyadmin 密码穷举

phpmyadmin 是 mysql 的一个 web 管理工具,可以通过这个工具穷举 mysql 用户的账号和密码。
这里使用的是“phpMyAdmin暴力破解v1.3.exe”,指定URL、账密,一旦成功,会出现 result.txt。
软件缺点是速度比较慢。
image.png

爆破webshell(BurpSuite)

asp类型

访问webshell,然后抓包。
访问的方法自然是GET,连接webshell自然是POST,所以更改一下方法。
image.png
设置POST传参内容,一旦成功破解,输出“passwordright”
pass=execute("response.clear:response.write(""passwordright""):response.end")
image.png
image.png
嫌弃上面的命令太长,也可以换成phpinfo。这里不知道怎么回事,响应码500了。
image.png

PHP类型

思路完全同上,直接截图。
POST传参内容: echo "password right";
抓包,修改方法,“cmd”起到占位符作用
image.png
image.png

aspx类型

思路完全同上,直接截图。
POST传参内容:cmd=Response.Write("password right");
image.png
image.png

爆破webshell(cheetah)

cheetah 是针对一句话后门的穷举工具

python cheetah.py -u http://orz/orz.php
python cheetah.py -u http://orz/orz.jsp -r post -n 1000 -v
python cheetah.py -u http://orz/orz.asp -r get -c -p data/pwd.list
python cheetah.py -u http://orz/orz -w aspx -s iis -n 1000
python cheetah.py -b url.list -c -p pwd1.list pwd2.list -v
cheetah.py -u http://www.c1moon.com/a.php -n 1000 -v -p data/pwd.list
cheetah.py -u http://www.c1moon.com/a.asp -n 1000 -v -p data/pwd.list
cheetah.py -u http://www.c1moon.com/a.aspx -n 1000 -v -p data/pwd.list

支持 asp php .net jsp 后门

  • -u 后门地址
  • -r 提交的方法 一般是 post
  • -n 一次提交密码的数量
  • -v 详细信息
  • -p 字典位置(如不指定,将使用自己的字典 pwd.list)
┌──(root💀kali)-[/home/kali/test/cheetah]
└─# tree
.
├── cheetah.py
├── data
│   ├── big_shell_pwd.7z
│   ├── find.list
│   ├── pwd.list	【密码本位置】
│   ├── url.list
│   └── user-agent.list
├── images
│   ├── 1.png
│   ├── 2.png
│   ├── 3.png
│   ├── 4.png
│   └── logo.jpg
├── LICENSE
├── README.md
├── README_zh.md
├── requirements.txt
└── update.py

例子
python cheetah.py -u http://www.c1moon.com/cmd.php -r post -n 1000 -v

  1. 修改hosts文件

image.png

  1. 跑脚本

image.png

爆破 wordpress 博客系统账密

wordpress 是知名的博客系统,在互联网上的占有量很大,所以一定要知道这套系统的弱口令穷举的方法。
首先到这个网站注册账号和密码,注册后获取 token。https://wpscan.com
设备网络,让kali访问到靶机
image.png
image.png

  1. 自动寻找账号,并根据密码本进行爆破

wpscan --url http://www.redteam.com/ -e u -P /home/kali/test/top1000.txt --api-token QYbHH6fbNDIi6Op3MQuvg85fD4fhNiB4RKJsVOMVp6w
image.png

  1. 手动收集 wordpress 用户信息

访问连接获取用户信息,在网址后面添加/wp-json/wp/v2/users
http://www.vtmoon1.com/wp-json/wp/v2/users,获取信息可以再进行指定用户爆破
image.png
知道用户名之后,纯粹爆破密码的话,无需再提供API
wpscan --url http://www.redteam.com/ -U moonsec -P /home/kali/test/top1000.txt
image.png

爆破验证码

验证码干扰像素太少很容易就会被一些工具识别出来。如图片提取文字工具。
这里使用“Codex验证码后台爆破辅助工具v2.1.exe”进行测试。
如下图,对着验证码鼠标右键获取验证码的地址,然后到验证码测试工具中,测试验证码识别效果,发现还不错
image.png
实验步骤:
首先使用BP获取登录的数据包,然后丢给验证码爆破工具,再提供一个密码本即可。

  1. BP获取登录包

image.png

  1. 设置爆破

image.png
重设密码本的编码方式即可
image.png
image.png

  1. 开始爆破

只需要填写一个验证码失败的特征即可,线程默认5就行。
image.png

  1. 爆破结果

image.png

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值