業務邏輯漏洞總結

前言:

在平時學習安全中常常會有涉及到sql注入xss文件上傳命令執行等等常規的漏洞,但是在如今的環境下,結合當前功能點的作用,雖然不在owasp top10 中提及到,但是往往會存在的,一般叫做邏輯漏洞

本篇文章是根據《web攻防業務安全實戰指南》一書的知識進行簡要的總結而成的筆記

歸類

邏輯漏洞主要產生的位置

  1. 登錄處

  2. 業務辦理處

  3. 驗證碼處

  4. 支付處

  5. 密碼找回處

登錄處存在的邏輯漏洞

可以暴力破解用戶名或密碼

沒有驗證碼機制,沒有根據用戶名限制失敗次數,沒有根據ip限制失敗次數等等

通常思路:

  1. 直接拿密碼字典爆破某一個用戶名
  2. 拿固定的弱口令密碼,去跑top xxx的用戶名
  3. 如果只是用戶名限制失敗次數,可以使用思路2的方法
  4. 在存在返回提示用戶名錯誤或者密碼錯誤的情況下,可以分別爆用戶名和密碼

常見限制:

  1. 有時候會發現用戶名或者密碼是密文加密,這時可能是通過前端或者其他方式加密,對於簡單的來說base64編碼和md5的簽名是很好識破的,在爆破的時候可以選擇encode和hash
session沒有清空

登出後服務器端的session內容沒有清除,因此客戶端重新帶回登出前的session,也能夠達到重新登錄

通常思路:

  1. 在登出後,拿登出前的session,重新訪問需要登錄的界面

業務辦理處存在的邏輯漏洞

水平越權

通常說的越權一般是修改get或者post參數,導致的查看到他人的業務信息,一般看訂單處,個人信息處等位置的參數

通常思路:

  1. 拿2個賬號,修改賬號1的get或post參數給賬號2
篡改手機號

在需要手機號的短信驗證處,抓包修改手機號,可能做到非本賬號手機號獲取能夠編輯本賬號的驗證碼

通常思路:

  1. 抓包,查看get或者post參數存在手機號的地方,進行修改

驗證碼處存在的邏輯漏洞

登錄驗證碼未刷新

沒有清空session中的驗證碼信息

通常思路:

  1. 抓包多次重放,看結果是否會返回驗證碼錯誤,如沒有返回驗證碼錯誤則存在未刷新
  2. 觀察檢驗的處理業務,如果驗證碼和用戶名密碼是分2次http請求校驗,則也可以爆破用戶名和驗證碼
手機或郵箱驗證碼可爆破

沒有對應的手機號或郵箱,但如果驗證碼純數字4,5位左右,沒有次數校驗,可以爆破

通常思路:

  1. 拿自己的手機號或郵箱先獲取驗證碼查看驗證碼格式,之後多次提交錯誤的看是否有次數現在,沒有就爆破
手機或郵箱驗證碼回顯到客戶端

在發送給手機或者郵箱驗證碼時,會在response包中有驗證碼,因此不需要手機和郵箱就可以獲取驗證碼

通常思路:

  1. 發送驗證碼時抓包,看返回包
修改response包繞過判定

在輸入錯誤的驗證碼時會返回false之類的字段,如果修改response中的falsetrue,會識別爲驗證通過

通常思路:

  1. 抓包,選擇do intercept-> response to this request ,放包,抓到下一個包就是response的包,可以修改,重放

支付處存在的邏輯漏洞

修改商品編號

如果業務是通過商品編號來判斷價格的話,可能存在只修改A商品編號爲B商品編號,做到以A商品的價格購買B商品

通常思路:

  1. 先準備2個商品的編號,將其中一個改爲另一個
條件競爭

通過條件競爭使餘額達到負數,從而買多個商品

通常思路:

  1. 支付處,多線程請求付款確認,結果如果餘額爲負數,則存在該漏洞
金額修改

金額直接寫在了post或者get請求中,對其進行修改達到修改了商品金額的效果

通常思路:

  1. 抓包修改金額的字段
商品數量修改

在購買時,如果一個商品爲負數,那麼它的價格則會是負數,如果購買多種商品,將其中一個設爲負數,降低整體的價格

通常思路:

  1. 購物車裏選取多個商品,修改其中一個商品的數量,在購買後查看最終的價格
通過前端限制限購商品

有些商品限購1個,但是判定是通過前端,因此可以抓包後修改數量

通常思路:

  1. 抓取限購數量內的包,抓取後修改個數,重放
充值中放棄訂單未失效

在充值中選取大額充值訂單,放棄訂單,獲得訂單號,之後充值小額訂單,拿到充值成功的界面,將訂單號修改爲放棄的大額訂單,觀察是否成功

通常思路:

​ 1. 看看充值的時候是否有訂單號字段,如果有在成功界面修改爲未支付的訂單號,觀察是否充值成功

密碼找回處的邏輯漏洞

驗證碼處的邏輯漏洞在密碼找回處存在一樣適用
修改發送的驗證的目標爲攻擊者的郵箱或手機

在找回密碼處,如果字段帶上用戶名,校驗的郵箱或者手機號,將郵箱或者手機號改爲自己的,如果自己的能夠收到驗證碼並重置密碼,則該漏洞存在

通常思路:

  1. 抓包,注意找回密碼流程中的郵箱號或者手機號字段,修改其爲自己即可
session覆蓋

已知A的手機號,不知B的手機號,找回A的密碼,輸入驗證碼後到了設置新密碼設置界面。這時在同一瀏覽器下重開窗口找回B的密碼,獲取驗證碼,刷新A設置新密碼的頁面,如果此時修改的是B賬號的密碼,則存在漏洞

通常思路:

  1. 準備2個賬號,測試步驟如上所述
  2. 在郵箱收到找回密碼連接時,依然可以使用該思路
弱token爆破

有些時候通過找回密碼的時候填郵箱,郵箱此時會收到一個帶有token的鏈接,點擊鏈接就能跳轉到重置密碼的頁面,如果token是base64時間戳位數較低的隨機數則可以爆破

通常思路:

  1. 正常找回流程獲取重置密碼的url,瞭解token的規則後,爆破其他郵箱的重置密碼url
密碼找回流程繞過

在找回密碼處,一般會有三個步驟頁面,頁面1找回用戶的填寫,頁面2找回時的手機號短信驗證碼填寫,頁面3填寫新密碼,如果填好頁面1,直接訪問頁面3能夠重設密碼的話,則會存在該漏洞

通常思路:

  1. 在設置好找回用戶後,直接訪問重設密碼的url頁面
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章