实战篇——Burpsuite工具BruteForc靶场实战

实战篇——Burpsuite工具BruteForc靶场实战

BurpSuite是一款强大的渗透工具,主要用于抓包、口令爆破和Fuzzing测试。本章通过BruteForc靶场实战,深入掌握Burp口令爆破。

经过测试,原靶场(https://github.com/3sNwgeek/BruteForc_test)在登录回显方面存在几处问题,现已修正并发布至本人的仓库(https://github.com/yaoguyuan/BruteForc_test_improved)。

环境配置:JDK+Burpsuite+SwitchySharp+Python+captcha-killer+BurpCrypto (具体配置方式此处不再赘述,不会在网上搜索相关教程)

1. 热身练习

之前正好开发了一个简单的登录网站,那就拿它热热身吧!😃

登录页面:

先抓包再爆破,最后通过Repeater模块验证一下,轻松搞定!(其实一开始在字典中偷偷加了正确口令)

image-20240628215429274

2. 突破验证码

登录页面:

image-20240628215834810

难点在于验证码。思路就是先通过GET请求获得验证码图片,然后进行验证码的识别,最后带上验证码进行爆破。

这里需要使用Burpsuite的一款插件——captcha-killer,话不多说,直接开始操作!

首先运行yanzhengma.py,开启端口监听:

image-20240628220432547

点击验证码图片,抓包,发送至captcha-killer,点击获取,得到验证码图片:

image-20240628220704060

将验证码请求包导入至Request template,填写接口URL,点击识别,可见识别结果正确!

image-20240628220848668

输入用户名、口令和验证码,抓包,发送至Intruder模块,设置攻击方式为Pitchfork

image-20240628221132674

设置Payloads,第一个payload导入口令字典,第二个payload设为Extension-generated,并选择captcha-killer:

image-20240628221335932

爆破线程数设置为1(重要),开启爆破,得到口令——1q2w3e4r!(会用captcha-killer就完事儿了)

image-20240628221615851

3. 突破前端加密

这题是最难的,并且靶场源码还有问题,导致我改了半天...

登录页面:

image-20240628222248378

看起来啥验证也没有,人畜无害。

抓个包看看:

image-20240628222456861

这一串是啥玩意儿??

发送至Repeater模块看看:

image-20240628222646215

这一串又是啥玩意儿???

通过开发者工具查看网页的源代码,才发现别有玄机:

image-20240628222949970

首先是html表单,可见点击按钮触发form_login函数(下面的responseDiv一会儿会解释)。

image-20240628223134091

form_login函数先基于username和password生成pwd_key,然后调用encryptByDES函数进行加密,最后调用post函数进行发送。

image-20240628223333313

encryptByDES函数先对密钥进行utf8编码,然后对明文进行DES加密,加密模式为ECB,填充算法为PKCS7。

image-20240628223553256

post函数是比较关键的,先对post_key进行URL编码和拼接,这样就得到了Request报文中的那一串;然后通过XHR向response.php发送POST请求。内部onreadystatechange函数会在XHR的readyState发生变化时触发,XMLHttpRequest.DONE表示XHR的readyState为 4,即请求完成且响应已就绪。因此此处用于接收并处理服务器的响应。现在终于豁然开朗了:response.message就是之前Response报文中的那一串,应该是回显信息JSON编码后的结果,将response.message传给responseDiv.innerText,用于在当前页面显示回显信息。

image-20240628223956467

将抓到的数据包放行,查看回显信息:

image-20240628225939938

随便找个JSON在线解析工具,把之前Response报文中那串扔进去,解析,果然不出所料!

image-20240628230339589

现在分析的差不多了,那就趁热打铁!

这里需要使用Burpsuite的另一款插件——BurpCrypto,用于数据加密。

这里有两个需要注意的地方,其一是填充算法选择PKCS5,因为DES加密算法数据块长度为64位(8字节),PKCS7和PKCS5等价;其二是密钥取前8个字符,因为DES加密算法密钥长度也是64位(8字节),JS中应该会发生自动截断,但这里必须给定8字节。

image-20240628231032822

创建一个processor:

image-20240628231529155

抓包,发送至Intruder模块,选择Custom iterator:

image-20240628231655822

三个position设置如下:

image-20240628231846222

image-20240628231909113

image-20240628231941980

别忘了选择之前配置的processor:

image-20240628232038955

开启爆破!得到一个长度与其他不同的响应包:

image-20240628232222181

打开JSON在线解析工具,扔进去,解析,果不其然!

image-20240628232535362

如果还想要获得口令的话,随便找个DES在线解密工具就行了:

image-20240628232943591

口令就是password!手动输入用户名和口令,登录成功!

image-20240628233019906

posted @ 2024-06-28 23:36  yaoguyuan  阅读(53)  评论(0编辑  收藏  举报