暴力破解攻击

目录

  • 基于表单的暴力破解
  • 验证码绕过(on client)
  • 验证码绕过(on server)
  • token防爆破?【旧】
  • token防爆破?【新】
  • 反CSRF爆破的三种姿势
  • 宏爆破【联动数据包-场景1】
    • 问题说明
    • 添加宏
    • 验证效果
    • 开始爆破
  • 宏爆破【联动数据包-场景2】
    • 问题说明
  • cookie 不存在导致验证码绕过
  • phpmyadmin 密码穷举
  • 爆破webshell(BurpSuite)
    • asp类型
    • PHP类型
    • aspx类型
  • 爆破webshell(cheetah)
  • 爆破 wordpress 博客系统账密
  • 爆破验证码

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

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

基于表单的暴力破解

只在前端检查,导致存在绕过
首先随意输入一个用户名和密码,Burpsuite抓包
暴力破解攻击_第1张图片
发现没有验证码及其他限制,可以肆意爆破,由于左上角的提示按钮给出了答案,下面处于演示需求做一个简单爆破。
暴力破解攻击_第2张图片
暴力破解攻击_第3张图片
爆出一个账密:admin:123456
暴力破解攻击_第4张图片

验证码绕过(on client)

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

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

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

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

2:校验验证码

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

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

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

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

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

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

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

暴力破解攻击_第5张图片
行吧,那就换一种个思路。首先需要明确BurpSuite是一个代理,是客户端浏览器和服务器之间的一个中间人,那么思路就可以是先输入正确的验证码跳出浏览器客户端,进入到BurpSuite中,再由Burpsuite篡改验证码,去验证服务器端是否有验证码验证。
暴力破解攻击_第6张图片
方案1:修改验证码
发现服务器不管验证码错误
暴力破解攻击_第7张图片
方案2:删除验证码
发现服务器不管验证码丢失,操作同上。大致可以判断,是如下逻辑:
暴力破解攻击_第8张图片

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

验证码绕过(on server)

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

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

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

来看一下目标站点,长这个样子
暴力破解攻击_第9张图片
测试发现,验证码为空,验证码填写错误都会报错,正确填入验证码之后,BurpSuite更改验证码或者删除验证码都会出错,说明服务器和客户端都做了验证码校验,那么首先考虑验证码的可用时长问题。
BurpSuite中的包不要管了,停止截断,浏览器那边手动刷新验证码,获取一个新的验证码之后就不要再动浏览器了,拿着这个新的验证码写到BurpSuite中试着连发几个包,证明是否存在验证码有效期问题
暴力破解攻击_第10张图片
通过更改账密发现服务器返回的是username or password is not exists~说明验证码没有过期,那就爆破
暴力破解攻击_第11张图片
暴力破解攻击_第12张图片
再次爆破成功
实验的逻辑如下:
暴力破解攻击_第13张图片

token防爆破?【旧】

来看一下题目,token在这里是不能防爆破的,i see you here
暴力破解攻击_第14张图片
暴力破解攻击_第15张图片

先用BurpSuite重放试试,发现更改账密时,服务器的响应中有新的token,那其实可以拿每次失败后返回的新的token去做下一次测试,那这样是话是可以爆破的
暴力破解攻击_第16张图片
1:把截断下来的内容发送到Intrude模块,注意选择的攻击模式!
为了方便实验,这里只选择密码和token作为对象。
暴力破解攻击_第17张图片
2:来到Options模块,使用Grep - Extract 通过正则提取返回信息中的内容,如下图所示,先勾选,然后点add发现弹出的页面是空白的话再点一下Refetch response就能看到响应包了,确认目标之后选中即可,然后复制一下token值,就可以点击ok关闭页面了
暴力破解攻击_第18张图片

3:设置为Always
暴力破解攻击_第19张图片
4:线程设置为1
暴力破解攻击_第20张图片
5:第一个payload是密码字典,第二个payload就是token值,粘贴上刚才复制的token值
暴力破解攻击_第21张图片
6:填一下Grep - Match,方便一会找出答案!!!其中login success是在前面的实验中发现的,只要登录成功就会返回这个信息
暴力破解攻击_第22张图片
7:发起攻击
暴力破解攻击_第23张图片
8:于是,很轻松的找出了密码
暴力破解攻击_第24张图片
防爆破的一些手段

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

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
暴力破解攻击_第25张图片
另一个数据包使用token登录网站
暴力破解攻击_第26张图片

添加宏

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

验证效果

每发送一次请求,token值就会发生一次变化,说明宏已经生效
暴力破解攻击_第36张图片

开始爆破

由于这是CSRF-token,因此速率必须设置为1
暴力破解攻击_第37张图片
暴力破解攻击_第38张图片

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

问题说明

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

cookie 不存在导致验证码绕过

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

phpmyadmin 密码穷举

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

爆破webshell(BurpSuite)

asp类型

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

PHP类型

思路完全同上,直接截图。
POST传参内容: echo "password right";
抓包,修改方法,“cmd”起到占位符作用
暴力破解攻击_第47张图片
暴力破解攻击_第48张图片

aspx类型

思路完全同上,直接截图。
POST传参内容:cmd=Response.Write("password right");
暴力破解攻击_第49张图片
暴力破解攻击_第50张图片

爆破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)
┌──(rootkali)-[/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文件

暴力破解攻击_第51张图片

  1. 跑脚本

爆破 wordpress 博客系统账密

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

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

wpscan --url http://www.redteam.com/ -e u -P /home/kali/test/top1000.txt --api-token QYbHH6fbNDIi6Op3MQuvg85fD4fhNiB4RKJsVOMVp6w
暴力破解攻击_第53张图片

  1. 手动收集 wordpress 用户信息

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

爆破验证码

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

  1. BP获取登录包

暴力破解攻击_第56张图片

  1. 设置爆破

暴力破解攻击_第57张图片
重设密码本的编码方式即可
暴力破解攻击_第58张图片
暴力破解攻击_第59张图片

  1. 开始爆破

只需要填写一个验证码失败的特征即可,线程默认5就行。
暴力破解攻击_第60张图片

  1. 爆破结果

暴力破解攻击_第61张图片

你可能感兴趣的:(渗透测试,爆破)