关于top10大漏洞形成原因与修复解决方案一波[详细]之关于爆破漏洞
此教程针对渗透测试 -软件安全测试 的朋友们希望有帮助 关注博主以后会更新更多教程 喜欢交朋友的也可以加我微信或QQ
在这里环境我就不说了
- 一:暴力破解-服务端验证码爆破(有图有真相)
像这种没有验证码的直接载入payload爆破就可以 无需多说
on server验证码绕过
首先我们抓一个包 载入repeater发送看一下会提示账号密码错误
此时我们随便改一下密码再次发送看是否和上次一样的提示 如果一样说明什么呢?
说明验证码可以复用 此时我们爆破开始 红色区域提示 login success成功
漏洞成因原理呢 说好的修复方案呢
首先我们会看到整个验证逻辑是没有问题的,那么漏洞形成原因是因为php的 session生命周期
修复方案 :我们应该在保证用户每次刷新页面的时候销毁这个验证码session重新生成新的验证码session
二:关于前端验证爆破
右键查看源码可以看到 前端js验证
后端完全没有验证就直接进行了判断验证
这样做的后果导致了 安全人员或恶意攻击者 可以随便进行爆破
验证码删除请求来看 然后载入payload爆破
漏洞成因:只进行前端js验证 不做后端处理
修复方案:进行后端验证
三:token防止爆破? 不存在的 token往往用于防御csrf
可以看到form表单里存在一个隐藏表单
爆破开始 我们对密码和token值进行变量爆破
使用
option里线程设置为1个
登录成功 success
在这里可能有人不知道什么是token,那么我们来了解一下什么是token。
什么是token?
1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。
2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
3、使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
参考:https://www.jianshu.com/p/24825a2683e6
所以,后端会生成一个token返回给客户端,当客户端进行请求时,就会同时携带该token,与服务端的token来比对,一样就接受,不一样就丢弃。
但是,用token来防止暴力破解是不行的,这是因为token存在于前端,可以被很容易的捕获。
通过测试发现每个数据包的token在变化,所以使用pitchfork进行爆破。
总体来说关于防爆破发修复方案:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
求赞助