zoukankan      html  css  js  c++  java
  • 逻辑漏洞(-)

      逻辑错误漏洞是指由于程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误,一般出现在任意密码修改(没有旧密码验证)、越权访问、密码找回、交易支付金额。

      一般挖掘逻辑漏洞有两个重点:业务流程和HTTP/HTTPS请求篡改。

      绕过授权验证:

    1. 水平越权:就是相同级别(权限)的用户或者同一角色不同的用户之间,可以越权访问、修改或者删除的非法操作。如果出现次漏洞,那么将可能会造成大批量数据泄露,严重的甚至会造成用户信息被恶意篡改。

        public String execute(){

          int id = Interger.parseInt(request.getParameter("userId"));

          String password = request.getParameter("password");

          String password2 = request.getParameter("password2");

          if (!("".equals(password) || ("".equals(password2))){

            return ERROR;

          }

          if (!password.equals(password2)){

            return ERROR;

          }

          User u = new UserBiz().findUserById(id);

          u.setPassword(password);

          boolean flag = new UserBiz().saveOrUpdate(u);  // 更新对象

          if (flag){

            return SUCCESS;

          }

          else{

            return ERROR;

          }

      }

      通过上面代码分析,没有任何错误,但是在逻辑上却存在严重的漏洞,假设有两个用户,一个用户名Admin,UserId是1,另一个用户名是Guest,UserId为2,Guest进行密码修改时,拦截HTTP请求,然后将UserId修改为1,如果存在水平越权操作,那么Admin的密码就会被修改为Guest修改的密码。这样就可以获取Admin的用户权限。

      在修改密码这样的问题,一样加上旧密码与修改密码来防范。

     垂直越权:垂直越权是不同级别之间或不同角色之间的越权;垂直越权又别分为向上越权与向下越权。比如,某些网站,像发布文章、删除文章等操作属于管理员该做的事情。假设一个匿名用户也可以做相同的事情,这就叫做向上越权;向下越权是一个高级用户可以访问低级用户信息(这也是不行的,这回暴漏用户的隐私)。

      解决向上越权是比较容易处理的事情,如果管理员表与普通用户是同一张数据库表,就必须要存在权限验证字段,权限验证字段用来区分是否为管理员。

      如果不在同一张表,在过滤器中直接取出管理员信息即可。

     

  • 相关阅读:
    Android下加载GIF图片
    拍照、相册及裁剪的终极实现(一)——拍照及裁剪功能实现
    阿里巴巴矢量库
    ActiveAndroid 管理数据库
    利用box-shadow制作loading图
    适用于移动端的地址选择器
    常用的不易记忆的css自定义代码
    关于js中一个对象当做参数传递是按值传递还是按引用传递的个人看法
    JavaScript之函数柯里化
    CSS3实现图片渐入效果
  • 原文地址:https://www.cnblogs.com/blacksunny/p/5220190.html
Copyright © 2011-2022 走看看