常见逻辑漏洞详记

目录

0x00 前言

0x01 越权

1.越权概念

2.越权分类

3.越权使用

4.越权查找

5.越权防护

0x02 任意注册

0x02 密码重置

0x03 支付漏洞

0x04 信息轰炸

0x 后记


0x00 前言

        不安全的对象引用,以及功能级访问控制缺失。--逻辑漏洞

0x01 越权

1.越权概念

        存在一个用户A,能够对自己的信息进行增删改查。但在开发人员的疏忽下,对数据增删改查时没有对其所有者进行判断,导致用户A可以篡改其他用户数据。

2.越权分类

        水平越权:权限类型不变,权限id改变,导致同级间越权访问。

        垂直越权:权限id不变,权限类型改变,常为权限上升。

        交叉越权:顾名思义,水平越权和垂直越权同时存在一个漏洞点中。

3.越权使用

        在越权漏洞中,水平越权最为常见,因此笔者以水平越权举例。

        通常情况下,一个应用程序的功能流程都会存在登录 - 提交请求 - 验证权限 - 数据库查询 - 结果返回,渗透测试人员可以在这些过程中进行越权尝试。

        ①猜想隐藏URL,如登录后的URL存在 /user.php,修改为扫描不到的管理员管理页面 manage.php,当后台配置有缺失时就会出现越权访问。

        ②直接修改参数,如修改URL中的id值越权访问;修改file=admin.pdf越权下载文件;修改U密码重置界面中的URL参数(/tips=2),短信验证步骤直接跳转新密码界面(/tips=3)。

4.越权查找

        服务器与客户端交互时,客户端的cookie与服务端的session进行身份匹配,成功后进行其他操作。如客户端请求时携带其他参数(注意URL)用以辨识信息的唯一性,则可以进行修改尝试越权。拦截请求包后分析:

        ①请求中仅用cookie验证,则无法水平越权,但可能存在谁知越权。

        ②请求中含有cookie和A参数(如employeeId、departmentId,id等)代表唯一用户,但机制中没有对A参数判定是否与cookie相匹配,则存在水平越权和垂直越权都有可能。

        ③测试时,我们通常使用两个小号辅助判断,一个进行越权修改,一个用来验证越权的成功性。而越权的高发功能点有,订单查询、查看用户信息、收货地址增删改查、密码修改与找回等。

5.越权防护

        ①cookie与参数唯一绑定,通过校对判定是否返回数据。

        ②优化cookie的加密算法,注意密钥管理。

        ③用户密码作为参数写入cookie中,保证账户密码与cookie相匹配。

        ④敏感操作时,再次验证是否属于当前用户。

0x02 任意注册

1、概念:注册模块中参数校验不严格而导致的漏洞。

2、常见位置:注册口。

3、食用方法

        ①验证码回传。

        ②验证码(4位)爆破。

        ③修改请求回显绕过。

        ④仅改变手机号,重放数据包,获取相同验证码。

        ⑤注册步骤未校验,修改url可绕过验证。。

4、防护

        ①6位验证码。

        ②验证码限时。

        ③验证码限次数。

        ④验证码多次错误,加图片校验。

        ⑤验证码与手机号绑定,即用即销毁。

        ⑥后端校验注册信息。

0x02 密码重置

1、概念:无

2、常见位置:忘记密码口,登陆后重置密码口。

3、食用方法

        ①验证码回传/明文验证码。

        ②验证码爆破。

        ③手机号与验证码二者未绑定,改成他人手机号以重置。

        ④账户、手机号、验证码三者未绑定,改成他人手机号/账户以重置。

        ⑤重置步骤未校验,修改url可绕过验证。

        ⑥前端验证,修改请求回显绕过。

        ⑦登陆后修改密码仅需新密码,直接越权。

        ⑧唯一cookie校验,直接替换cookie绕过。

        ⑨MVC数据对象自动绑定漏洞,即没有身份标识时,可增加参数窃取校验信息。

4、防护

        ①6位验证码。

        ②验证码限时。

        ③验证码限次数。

        ④验证码多次错误,加图片校验。

        ⑤验证码与手机号绑定,使用即销毁。

        ⑥响应包中去掉短信验证码

        ⑦修改信息时校验旧密码,需提供手机验证码。

        ⑧服务端二次校验。

        ⑨验证信息加密。

        ⑩使用token验证。

0x03 支付漏洞

1、概念:无

2、常见位置:购买、充值界面。

3、食用方法

        ①修改支付价格,在订购、订单、付款三步中尝试修改金额。

        ②修改支付状态,替换为已支付单号,实现已支付效果。

        ③修改订单数量,计算方式未校验,导致可以输入负数等。

        ④修改附属值(优惠卷),修改优惠金额/商品价格/优惠折扣来造成低额购买。

        ⑤越权支付,一次性支付时,若未校验用户信息,可利用他人账户支付。

        ⑥无限制试用,调用试用接口参数,使待支付产品错判为试用产品。

        ⑦修改支付接口,支付接口不存在时,处理不妥导致支付成功。

        ⑧多重替换,在两个订单中,以低价订单参数替换高价,造成低额支付。

        ⑨重复支付,试用令牌试用商品,若试用完/取消试用时令牌回到账户,可尝试用一个令牌多次提交订单。

4、防护

        ①后端校验各个参数,确保订单参数与产品参数一致。

        ②修改相应函数,杜绝输入负数,设定商城产品最低金额等。

        ③与第三方支付平台合作,校验订单金额与与实际支付金额。

        ④支付参数进行算法加密。减少数据篡改的可能。

        ⑤支付流程中校验各个环节,防止跳过某环节。

        ⑥金额超过阈值,需要人工审核订单。

0x04 信息轰炸

1、分类:①单id多次轰炸。②多id单次轰炸。

2、常见位置:发送信息验证处,如注册口、登录口、等

3、食用方法

        ①验证码不刷新,重放数据包不断获取短信。

        ②删除cookie。

        ③修改cookie等参数,当其唯一且固定时,修改以伪造新请求。

        ④手机号分割,如加点/加号/减号/分号/逗号/86/%00等。

        ⑤无效验证,如任意输入图片码可绕过。

4、防护

        ①获取短信请求与图片验证唯一绑定,即用即失效。

        ②设置获取频控,拒绝持续请求验证码。

        ③限制ip单位时间请求次数。

        ④限制手机验证码单日请求次数。

        ⑤后端二重验证,确保请求唯一。

        ⑥减少返回包中数据,以减少可控点。

        ⑦验证模块确保与业务功能关联,杜绝无效验证的产生。

0x 后记

再回头,你依旧在;再看着你,又有新的认识。--涂寐

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46318141/article/details/121000924

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值