邏輯漏洞的原理及分析

2022-01-10 20:41:32 字數 1481 閱讀 3476

之前的文章都是寫的sql注入,命令執行,檔案上傳等一步到位的高危漏洞原理及防禦,接下來說一說邏輯漏洞,因為現在工具的大量使用,之前的那些主流漏洞,很難被輕易利用了,邏輯漏洞不一樣,工具不會思考,所以應用程式有邏輯缺陷,工具很難發現,需要人為去挖掘,接下來就簡單說一說,如何來進行邏輯漏洞的挖掘。

web應用程式中的邏輯漏洞各不相同,有的很明顯,有的很微妙。與sql注入和跨站不同,邏輯漏洞沒有共有的「簽名」,定義特性是指應用程式執行的邏輯存在某種缺陷。大部分邏輯缺陷表現為開發者在思考過程中做出的特殊假設存在明顯或隱含的錯誤,通俗點來說,有的開發者會這樣認為,如果發生a,就會出現b,因此我執行c。沒有考慮如果發生x會怎麼樣,這種錯誤的假設會造成許多安全漏洞。邏輯漏洞是多樣性的,挖掘它們需要從不同的角度思考問題,設法了解設計者和開發者做出的各種假設,然後考慮如何攻擊。

一般哪些地方容易報出邏輯漏洞呢,比如,密碼找回、交易支付、密碼修改、突破限制等。

關於密碼找回的邏輯問題,我畫了乙個思維導圖,把可能出現邏輯缺陷都寫出來了。如下圖

比如第四條,如果驗證碼沒有銷毀,或者是驗證碼沒有重新整理,我們是不是可以嘗試進行暴力破解。再比如第六條,如果沒有進行非空判斷,那驗證也是可以繞過。

密碼修改過程中,可能存在的邏輯問題,我也以畫思維導圖為例,如下圖

現在電商這麼發達,如果你不想去**開店,自己搭建乙個,那就要分析可能存在的邏輯問題了。下面我就以電商購買商品的過程為例,分析可能存在的邏輯問題,這次以流程圖的方式。

加入購物車時,抓包嘗試修改購買數量為負數,試一試商品**能否修改。

確認購物車訊息時,嘗試修改金額,如果購買多件打折,嘗試能不能突破這個邏輯,比如先加入購物車,再把多餘的移除,看有沒有效果。

物流這裡嘗試能否修改運費,或改為負數,雖然現在大部分都包郵,萬一有漏網之魚了。

確認訂單跳轉支付介面時,看能不能修改金額,嘗試能不能跳過支付,直接跳到支付成功的頁面。

還有一些其他的就不依次分析了。

確保將應用程式各方面的設計資訊都詳細的記錄在文件中,方便其他人了解設計者做出的每個假設。

要求源**提供清楚的注釋,包括每個**的元件的用途和預計用法以及每個元件對它無法直接控制的內容做出的假設。

根據會話確定使用者的身份和許可權,不要根據請求的其他特性對使用者的許可權做出假設。

發掘邏輯漏洞時,要對程式進行系統性的探查,也要從不同的角度思考問題。除了這些,挖掘邏輯漏洞的最大挑戰是如何深入的了解開發者的思維方式,需要了解到他們想要達到什麼目的,可能做出什麼假設,可能採用哪些捷徑,將會犯什麼錯誤。想象一下,如果程式完工的最後,還在擔心功能,而不是安全,要加入新功能,這樣的情況下,開發者可能犯什麼錯誤等等。

XXE漏洞原理分析

除了json外,xml也是一種常用的資料傳輸格式。對xml的解析有以下幾種常用的方式 dom,sax,jdom,dom4j,stax等。然而這幾種解析方式都可能會出現外部實體注入漏洞,這類漏洞統稱 xml 外部實體漏洞。以下提供乙個請求如果接受的值是xml格式資料,則會存在xxe漏洞,我們使用下面簡...

webmin RCE漏洞利用及分析

webmin是目前功能最強大的基於web的unix系統管理工具。管理員通過瀏覽器訪問webmin的各種管理功能並完成相應的管理動作。利用條件 webmin 1.910 原因 官網 sourceforge 中存在漏洞,github 中無漏洞,為後門植入,不得不佩服這些老外真會玩,看了一堆大神分析,自己...

基本漏洞原理及防禦(2)

xss 跨站指令碼攻擊 漏洞產生的原理 瀏覽器未對使用者的輸入內容做嚴格審查,同時html語言具有文字和標籤屬性,瀏覽器會將惡意構造的輸入識別成標籤,從而執行。漏洞攻擊原理 攻擊者利用特殊字元構造惡意的指令碼 欺騙瀏覽器將其識別成標籤,從而達到使瀏覽器執行惡意操作的目的。可能產生的後果 例如利用js...