基于表单的爆破
步骤一:进入Pikachu靶场暴力破解的基于表单模块,尝试登录发现登录失败返回内容为 username or password is not exists~
而使用争取的账号密码登录为返回结果为 login success
开启Burpsuite的代理并登录使用BP抓取用户登录的数据包...
POST /vul/burteforce/bf_form.php HTTP/1.1 Host: 39.104.122.217:8000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Content-Type: application/x-www-form-urlencoded Content-Length: 42 Origin: http://39.104.122.217:8000 Connection: close Referer: http://39.104.122.217:8000/vul/burteforce/bf_form.php Cookie: PHPSESSID=ldr6tst8oc5h5nrpmn8occagpj Upgrade-Insecure-Requests: 1 username=admin&password=admin&submit=Login
步骤二:按下快快捷键Ctrl+i
将捕获数据包发送到Intruder
模块中...在Positions
标签页下设置Attack type
为Cluster bomb
(集束炸弹)模式...并点击右侧的Clear$
清楚掉变量...选中username
字段和password
字段的值并依次点击Add$
按钮添加要爆破的变量...1,2....
步骤三:点Payloads
标签页在Payload set
设置中选中第一个要攻击的目标变量...并且设置Payload type
为Runtime file
...在Payload Options
下设置爆破用户名的字典路径...同样在设置第二个变量也是如此...
步骤四:在Option
标签中的Grep-Match
下添加登陆失败时发回的提示字符串username or password is not exists
便于查找我们之后进行攻击破解出的正确账户和密码...
步骤五:点击Positions
标签页右上角的Start Attack
开始进行爆破...在打开新的页面中显示爆破结果...需要注意的是没有出现√的就是服务器没有返回username or password is not exists
字符串的数据包...而没有出现√的则是有可能爆破成功的...
验证码绕过(on client)
快速判断在页面中哪些功能点使用了JavaScript
脚本代码可以使用火狐浏览器中的Disbale JavaScript
插件来进行检查...
步骤一:打开靶场暴力破解模块中验证码绕过(On client)页面,执行以下操作...查看结果并启动火狐浏览器中的插件Disbale JavaScript
来判断验证码是否是前端的JS代码产生的功能...
- 随意输入账户和密码不输入验证码
- 随意输入账户和密码输入错误的验证码
- 随意输入账户和密码输入正确的验证码
步骤二:通过Disbale JavaScript
插件可以判断出验证码可能是由前JS代码生成..抓取用户登录的数据包并发送到Repeater
模块中...多次重放发现服务端并没有做检查
步骤三:将处于Proxy
模块的数据包发送到Intruder
模块下...设置Attack type
为Sinper
(狙击手)模式...并设置password
字段值为攻击向量....在Payloads
标签中设置Payload type
为Simple list
并在Payload Options
加载密码字典....
步骤四:点击Start Attack
进行暴力破解...成功如下...
验证码绕过(on server)
知识点:服务端验证码存在一定的时效性....
步骤一:进入Pikachu靶场暴力破解的基于表单模块,尝试以下方式登录....并观察结果...
- 随意输入账户和密码不输入验证码
- 随意输入账户和密码输入错误的验证码
- 随意输入账户和密码输入正确的验证码
步骤二:填写错误的用户密码与正确的验证码并抓取用户登录数据包发送到Repeater
模块下...改变验证码或不填,来判断后台是否对验证码进行校验....
步骤三:通过反回的响应验证码不能为空哦!
判断出,后台对验证码进行了校验,我们不能使用之前的方进行破解,但是如果验证码不具备时效性,及同一个正确的验证码可以反复使用的话,我们可以通过不改变验证码的变量进行暴力破解,为了再判断验验证码的时效性(后台是否会在一段时间内对验证码刷新并重新进行校验)....填写正确的验证码再随意填写用户名和密码并多次重复这个步骤....
步骤四:通过服务器多次发回的响应username or password is not exists~
判断,这个验证码不具备时效性,后台不会在一段时间内刷新验证重新进行校验,同一个验证码同样具有有效性。那么就可以使用之前的方法来进行暴力破解。将POST请求发送到Intruder
模块下。点击Clear$
清除变量,再将账户和密码设置为变量,同时将验证码填为正确的验证码。
Token防爆破
什么是Token?
简单的说token是由服务端生成的一串字符串,作为客户端向服务端请求的一个标识。在前端使用用户名/密码向服务端发送请求认证,服务端认证成功,那么在服务端会返回token给前端,前端在每次请求时会带上服务端发来的token来证明自己的合法性。
###Token抓取###
步骤一:将BurpSuie
的Proxy
模块设置抓取HTTP响应包..
步骤二:进入Pikachu靶场的Token方爆破界面开启代理并输入账号密码并使用BP进行捕获请求数据包...
步骤三:可以看到此时请求的Token值为9663762175375dc94a082617602
点击Forward
转发并捕获服务器相应数据包...发现Token的Value
值为58234621754bde4c37140138431
步骤四:回到登录页面进行用户登录并抓取数据包发现...Token值为58234621754bde4c37140138431
即服务器发送的Token值.....
###Token爆破###
步骤一:在Pikachu
的Token
方爆破的界面进行登录并抓取数据包...将其发送到Intruder
模块...
步骤二:在Intruder模块下的Attack Type
选择Pitchfork
模式(音叉攻击),点击右侧Clear$
并在password
字段与token
字段值上点击Add$
添加变量...如下
步骤三:点击Options
标签在Request Engine
中设置线程数为1
并在Grep-Extract
中点击Add添加提取信息...在新的页面中点击Fetch response
并在下面的搜索框中搜索value
选中value
的值并复制...点击Ok
,在Redirections
中点选Always
关注重定向...
31212621758a3b497a946494928
步骤四:在Payloads
标签页中设置Payload set
第一个变量的类型为Runtime file
并在Payload Options中选在要进行爆破的密码文件....在第二个变量选择类型为Recursive grep
并在Payload Options
中将之前复制的Token值填写入Initial payload for first request
中...
步骤五:点击Start attack
或者工具栏中的Intruder-->Stack attack
开始进行爆破...在弹出的页面中寻找Length
长度不一样的数据包...并查看Response
包中是否存在login success
字段...即可爆破成功...