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

posted on 2021-05-27 00:26  Ben_John  阅读(94)  评论(0编辑  收藏  举报

导航