zoukankan      html  css  js  c++  java
  • 11 逻辑漏洞

    11-1.逻辑漏洞-订单金额任意修改
    1)逻辑漏洞介绍
    逻辑漏洞挖掘一直是安全测试中"经久不衰"的话题。相比SQL注入、XSS漏洞等传统安全漏洞,现在的攻击者更倾向于利用业务逻辑层的应用安全问题,这类问题往往危害巨大,可能造成了企业的资产损失和名誉受损,并且传统的安全防御设备和措施收效甚微。
    在存在功能性的接口中,都有可能存在程序逻辑功能的安全问题。例如:支付处的任意金额修改。
    2)订单处逻辑分析
    用户-->购买商品-->结账-->成功购买
    商品的价格如何获得?
    3)订单处逻辑漏洞
    订单处的逻辑漏洞,大部分在于程序未能正确处理商品价格、数量等。
    1、商品价格可以任意修改。
    2、商品价格在后端存储,但是价格、数量可以修改。例如:输入-1价格等

    <?php 
        if(isset($_POST["submit"])){
            $num = $_POST["num"];
            $price = $_POST["price"];
            echo "需要支付:".$num*$price."元";
        }
    ?>

    <!DOCTYPE html>
    <head>
        <meta charset="utf-8">
        <title>login price</title>
    </head>
    <body>
        <h1>提交订单</h1>
        <form method="post" action="">
            手机名称:test
            <br>
            数量:<input type="text" name="num">
            <br>
            <input type="hidden" name="price" value="100">
            <br>
            <input type="submit" name="submit" value="确定">
        </form>
    </body>
    </html>


    4)逻辑漏洞防御
    1、订单多重验证。
    2、数额巨大采用人工验证。

    11-2.逻辑漏洞-密码重置(简单验证码)
    1)密码重置or密码找回
    实际情况下,用户很有可能长时间不使用该系统忘记了对应的用户密码,此时系统应该提供密码找回或修改功能。但是大多数提供的是密码重置功能,而非密码找回。
    明文存储和密文存储
    2)密码重置逻辑分析
    用户-->重置模块-->发送验证码,验证身份-->成功重置
    3)密码重置处逻辑漏洞
    如果手机验证码或邮箱验证码为一个4位数,且没有机制来验证输入次数,那么此时存在被破解的风险。

    <?php 
        $code = 1234
        echo $code
        if(isset($_POST["submit"])){
            if($_POST["code"] == $code){
                echo "修改成功";
            }else{
                echo "验证码错误";
            }
        }
    ?>

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>重置密码</title>
    </head>
    <body>
        <form action="" method="post">
            新密码:<input type="password" name="new_pass">
            确认密码:<input type="password" name="yes_pass">
            手机验证码:<input ttype="text" name="code">
            <input type="submit" name="submit" value="确认">
        </form>
    </body>
    </html>


    4)逻辑漏洞防御
    1、设置复杂验证码,例如6位数字。
    2、设置限制次数,比如3次输入错误需要重置验证码或者设置时间1分钟有效等。

  • 相关阅读:
    Hibernate延迟加载
    java.io.FileNotFoundException: antlr-2.7.7.jar (系统找不到指定的路径。)[待解决]
    Eclipse中复制项目重命名后重新发布,项目名在地址栏仍然是原来的项目名”的问题
    Tomcat服务器启动失败:Could not publish server configuration for Tomcat v8.0 Server at localhost. Multiple Contexts have a path of
    SSH整合:Unable to instantiate Action, employeeAction, defined for 'emp-list' in namespace '/'employeeAction
    ApplicationContext详解以及多个ApplicationContext.xml的相互引用
    Tomcat启动失败:Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds
    三大框架你理解多少?
    通过命令行查询可用的包的版本号
    使用create-react-app命令创建一个项目, 运行npm run eject报错
  • 原文地址:https://www.cnblogs.com/Ben-john/p/14815632.html
Copyright © 2011-2022 走看看