• 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分钟有效等。

  • 相关阅读:
    java 运算符优先级(sum operator priority level)
    how to improve your programming ablity?
    window.returnValue = 00000000; window.close();
    list
    select card 双层
    double color ball
    Linq 左连接 内连接
    DDD 详细 介绍 摘自网络
    没有老板的公司,你适应吗?摘自网络
    Using Java Classes in your .NET Application 摘自网络
  • 原文地址:https://www.cnblogs.com/Ben-john/p/14815632.html
Copyright © 2020-2023  润新知