邏輯漏洞(-)

  邏輯錯誤漏洞是指因爲程序邏輯不嚴或邏輯太複雜,致使一些邏輯分支不可以正常處理或處理錯誤,通常出如今任意密碼修改(沒有舊密碼驗證)、越權訪問、密碼找回、交易支付金額。數據庫

  通常挖掘邏輯漏洞有兩個重點:業務流程和HTTP/HTTPS請求篡改。網站

 

  繞過受權驗證:spa

  1. 水平越權:就是相同級別(權限)的用戶或者同一角色不一樣的用戶之間,能夠越權訪問、修改或者刪除的非法操做。若是出現次漏洞,那麼將可能會形成大批量數據泄露,嚴重的甚至會形成用戶信息被惡意篡改。

    public String execute(){對象

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

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

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

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

        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的用戶權限。

  在修改密碼這樣的問題,同樣加上舊密碼與修改密碼來防範。

 

 垂直越權:垂直越權是不一樣級別之間或不一樣角色之間的越權;垂直越權又別分爲向上越權與向下越權。好比,某些網站,像發佈文章、刪除文章等操做屬於管理員該作的事情。假設一個匿名用戶也能夠作相同的事情,這就叫作向上越權;向下越權是一個高級用戶能夠訪問低級用戶信息(這也是不行的,這回暴漏用戶的隱私)。

 

  解決向上越權是比較容易處理的事情,若是管理員表與普通用戶是同一張數據庫表,就必需要存在權限驗證字段,權限驗證字段用來區分是否爲管理員。

  若是不在同一張表,在過濾器中直接取出管理員信息便可。

相關文章
相關標籤/搜索