• 逻辑漏洞(1)


    逻辑漏洞

    逻辑漏洞是一种业务逻辑上的设计缺陷,业务流存在问题。
    这里说一下密码找回漏洞、多线程条件竞争漏洞和支付漏洞。
    

    密码找回漏洞

    1、 测试流程

    先尝试正确的密码找回流程,记录不同找回方式的所有数据包
    分析数据包,找到有效数据部分
    推测数据构造方法
    构造数据包验证猜测
    

    2、 分类

    * 邮箱找回
        一般是点击邮件中的链接后会转跳到修密码的页面,这就需要分析链接的token构造了,
        可以考虑是时间戳md5、用户名或邮箱和随机字符串md5等,一般是类似如下链接:
        http://domain/findpwd.php?u=xiaoming&token=MTIzQHFxLmNvbQ==
        http://domain/findpwd.php?id=374&token=2ad64bf14c714dbce88c7993663da7da
        当构造相应链接时就可以重置任意用户的密码
    * 手机短信找回
        短信找回一般就是4位或6位验证码,暴力猜测吧
    * 找回逻辑错误
        若恶意用户A用15123333333找回密码,此时收到验证码但不使用
        此时恶意用户A再用受害者B的手机号找回密码
        用户A在B的验证表单填入自己收到的验证码,发送
        此时跳转的修改密码页面修改的就是用户B的密码
    * 直接修改密码
        在修改密码时跳过选择找回方式,直接访问修改密码的页面进行修改
    * 本地验证
        随意输入一个验证码,开Burp抓包,forward,抓返回包,返回包里可能有一个flag字段,
        若flag的值为1则跳转到修改密码页面,所以只要修改返回包即可
    * 服务端将验证码返回给浏览器
        在点击获取验证码时,服务器会将验证码发送给浏览器,抓包即可
    * 验证码直接出现在url中
        当点击获取验证码时发出的请求链接中直接有code
    * 密保问题找回
        回答密保问题,有时一些答案就在html源码里

    支付漏洞

    攻击者通过修改交易金额、交易数量等从而利用漏洞,
    如Burp修改交易金额、使交易数量为负数或无限大等。
    
    * 在支付时直接修改数据包中的支付金额,实现小金额购买大金额商品
    * 修改购买数量,使之为负数,可购买负数量商品,从而扣除负积分,即增加积分,
      或使购买数量无限大,无限大时则程序可能处理出错,从而实现0金额支付
    * 请求重放,在购买成功后重放请求,可实现"一次购买对此收货"
    

    漏洞修复

    • 对于密码重置漏洞,可以使用复杂的token,使之不可被预测
    • 对于密码重置漏洞,校验refer,不使用本地校验等
    • 对于支付漏洞,主要就是签名了,或者https

    值得一看的案例:

    https://blog.csdn.net/hydrakingbo/article/details/52388183

    https://www.cnblogs.com/xishaonian/p/6416659.html

    http://www.freebuf.com/vuls/151196.html

    介绍:仅供技术交流学习探讨请勿用于非法用途,。本文部分资源来源于网络,如有侵权请联系版主删除。

    技术交流确认眼神,请移步渔夫安全官方微信:渔夫(xz116035)
  • 相关阅读:
    Linux shell 脚本中变量的数学计算【转】
    Ubuntu上配置Eclipse:安装CDT【转】
    第一个Java程序示例——Hello World!【转】
    Cmake的介绍和使用 Cmake实践【转】
    CMake使用总结【转】
    Ubuntu 16.04安装JDK/JRE并配置环境变量【转】
    Linux进程间通信——使用信号量【转】
    wpa_supplicant介绍【转】
    【转】Android屏幕适配全攻略(最权威的官方适配指导)
    SQL2005备份数据库到远程服务器中
  • 原文地址:https://www.cnblogs.com/yufusec/p/9178882.html
Copyright © 2020-2023  润新知