逻辑漏洞学习
思维导图
水平越权和垂直越权
原理:
通常来讲,就是由于逻辑上的缺陷,对用户的权限没有做出严格的限制,使得用户A可以通过修改数据包达到访问同级用户B的页面,用户A也可以通过修改数据包访问管理员用户C的页面。即(浏览器对用户提交的数据请求没有经过严格的权限设置,导致用户可以拥有观察或更改其他用户信息的功能。)
水平越权 :用户在权限相同级别下的组,可以进行越权访问、修改、删除数据。
垂直越权 :用户在不同权限下的组,可以进行高级别的权限使用。
漏洞成因:
前端原因:
只对页面进行更高权限的隐藏
实际上并没有对后端的进行一个权限过滤,只是对前端进行隐藏。根据用户权限的判断,进行选择显示,但是功能点还是可以触发。
正确的做法应该是用户权限与功能点进行绑定。
例子:pikachu的越权源码,这里只是对输入的参数username判断不为空即可进行数据查询,没有与用户的登录状态进行绑定,burp抓包就可以修改请求参数即可看到别的用户数据
if(isset($_GET['submit']) && $_GET['username']!=null){
//没有使用session来校验,而是使用的传进来的值,权限校验出现问题,这里应该跟登录态关系进行绑定
$username=escape($link, $_GET['username']);
$query="select * from member where username='$username'";
后端成因:
1.没有进行权限设置(通常来说我们是判断用户组编号、用户等级、用户组来确定权限)
2.没有进行参数过滤
3.数据库中同组成员不同权限
墨者靶场实操
URL:https://www.mozhe.cn/bug/detail/eUM3SktudHdrUVh6eFloU0VERzB4Zz09bW96aGUmozhe
要求:通过越权得到某位会员的信息
登录test测试账号并抓包分析,一共两个包,
第一个可以看到明显的uid应该是要绑定用户账号名,而第二个则是根据ID来查询
这里测试根据用户名来爆破不行,然后查看首页的图片地址,可以发现跟card_id很像,于是使用burp爆破card_id查看
爆破最后两位
爆破之后可以一个个试,也可以直接找图片那个id
相关工具:
- https://github.com/ztosec/secscan-authcheck
- Burp中有三个插件可用于越权测试,分别是:Autorize、Authz(水平越权测试)、AuthMatrix(垂直越权测试)。
逻辑漏洞之支付漏洞
参考文章:https://www.secpulse.com/archives/67080.html
登录点安全测试
登录框暴力破解
- 查看账号密码是否明文传输,若非则猜解加密方式,并且使用burp的爆破模块来进行爆破
cookie脆弱性
某个熊海cms后台登录处的源码,这里仅仅只判断了cookie中的user参数值是否为空,不为空则能登录,这便是cookie脆弱性
常见支付漏洞学习
- 商品购买流程: 选择商品和数量-选择支付及配送方式-生成订单编号-订单支付选择-完成支付
- 常见篡改参数:
商品编号 ID,购买价格,购买数量,支付方式,订单号,支付状态等 - 常见修改方法: 替换支付,重复支付,最小额支付,负数支付,溢出支付,优惠券支付等
niushop存在商品数量支付漏洞
大米cms 用户下单位置存在漏洞
逻辑漏洞
- 找回密码验证码逻辑-爆破测试-实例
- 墨者靶场密码重置-验证码套用-靶场
- 手机邮箱验证码逻辑-客户端回显-实例
- 绑定手机验证码逻辑-Rep 状态值篡改-实例 某 APP 短信轰炸接口乱用-实例接口调用发包
验证安全
burp图片验证码爆破
captcha-killer的配置
- 下载
burp2020前使用:
https://github.com/c0ny1/captcha-killer/tree/0.1.2
burp2020后的版本使用:
https://github.com/Ta0ing/captcha-killer-java8
- 使用burp抓取获取验证码数据包(逐步放包直到有验证码的包就行了),然后右键captcha-killer -> send to captcha panel发送数据包到插件的验证码请求面板。
- 配置识别接口的地址和请求包
这里使用图鉴:http://www.ttshitu.com/
然后配置充好积分,填好自己的账户密码,然后右键保存该模板
POST /predict HTTP/1.1
Host: api.ttshitu.com
Accept: application/json;
{"username":"xxx","password":"xxxx","typeid":"3","image":"<@BASE64><@IMG_RAW></@IMG_RAW></@BASE64>"}
点击识别,然后双击结果会自动生成正则
然后就有了正常的识别结果了
爆破使用注意:
- 验证码cookie和爆破的数据包cookie相同
- 设置单线程
- 第二个payload中设置为captcha
爆破使用教程:https://gv7.me/articles/2019/burp-captcha-killer-usage/
https://www.cnblogs.com/nul1/p/12071115.html
验证码绕过服务端,客户端
token爆破
token定义
token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。
当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。(简单的说就是在爆破密码的时候,若是需要携带token,则不好去进行爆破)
简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串。为防止token泄露)。
更多token解释:https://www.cnblogs.com/ahaMOMO/p/12373287.html
- 选择密码和token作为爆破目标
- token前的参数正常设置爆破所需的参数
- 新版中在线程池中设置爆破线程为1,因为只能从body中的token一一匹配,不能多线程发包
- 在option中的正则匹配中添加新的正则来匹配出所需token,若添加时没显示返回包,则点击refetch response重新获取返回包,随后搜索token,双击需要的字符串就会自动生成正则,并且
需要复制下刚刚的token作为待会首次token。
- 设置返回包中要显示body内容
- 返回payload设置中设置第二个参数
callback 存在跨站
burp爬虫模块
https://blog.csdn.net/weixin_41489908/article/details/117601996
版权声明:本文为原创文章,版权归 Bill's Blog 所有,转载请注明出处!如相关链接出现404,可以在文章下面评论留言。