十大漏洞之邏輯漏洞

LAZY

在十大漏洞中,邏輯漏洞被稱為“不安全的對象引用,和功能級訪問控制缺失”。現如今,越權和邏輯漏洞占用比例比較高,包括任意查詢用戶信息,重置任意用戶密碼,驗證碼爆破等。

邏輯漏洞:

常見的邏輯漏洞:

交易支付,密碼修改,密碼找回,越權修改,越權查詢,,突破限制等各種邏輯漏洞

不安全的對象引用指的是平行權限的訪問控制缺失

A,B同為普通用戶,他們之間彼此之間的個人資料應該相互保密的,

A的資料如果被B用戶利用程序訪問控制的缺失而已查看,這就是平行權限的關系。

功能級別訪問控制缺失指的是垂直權限的訪問控制缺失

A是普通用戶,B是管理員,B的頁面登錄訪問需要密碼和token.

A賬號能直接輸入管理頁面URL的方式繞過管理員登錄限制查看管理員頁面,這個時候A,B就是垂直關系。

邏輯漏洞的挖掘:

基本步驟:

1,先嘗試正確操作流程,記錄不同找回方式的所有數據包

2,分析數據包,找到有效數據部分

3,推測數據構造方法

4,構造數據包驗證猜測

比如說,加入購物車,我是不是可以修改購買的數量,修改成負數,商品的價格是不是可以修改;

確認購物車信息時,是不是可以修改商品的數量為負數,是不是可以突破打折的限制;

輸入運費,可不可以被修改;

確認訂單后,能不能直接修改支付金額,可否不支付直接跳轉到交易成功;

邏輯漏洞的利用:

用戶憑證暴力破解:

四位或者六位的純數字,無需驗證碼,直接burp爆破;

四位或者六位的純數字,需要驗證碼,但是驗證碼沒有及時撤銷,也可以直接burp爆破;

四位或者六位的純數字,需要驗證碼,但是驗證碼沒有及時撤銷,也可以直接burp爆破;

如果驗證不是很驗過,burp抓包,在后面手機號后面添加特殊字符繞過第一次防御

防御----對它提交的次數做一個過濾

防御----只要嘗試超過三次,就加入黑名單

返回憑證:

burp抓包的時候,url返回驗證碼及token,時間戳的md5,修改token為1或0,繞過憑證。

密碼找回漏洞:

大綱如下圖所示:

一般都是通過驗證問題,驗證郵箱,驗證手機號碼,等操作進行找回。

基本步驟:

* 先嘗試正確的密碼找回流程,記錄不同找回方式的所有數據包

* 分析數據包,找到有效數據部分

* 推測數據構造方法

* 構造數據包驗證猜測

簡單案例:

1,郵箱驗證:

一般是點擊郵件中的鏈接后會轉跳到修密碼的頁面,這就需要分析鏈接的token構造了,

可以考慮是時間戳md5、用戶名或郵箱和隨機字符串md5等,一般是類似如下鏈接:

php?u=xiaoming&token=MTIzQHFxLmNvbQ==

php?id=374&token=2ad64bf14c714dbce88c7993663da7da

當構造相應鏈接時就可以重置任意用戶的密碼

2,手機短信驗證:

短信找回一般就是4位或6位驗證碼,暴力猜測吧

3,無需驗證,直接修改:

在修改密碼時跳過選擇找回方式,直接訪問修改密碼的頁面進行修改

4,本地驗證:

隨意輸入一個驗證碼,開Burp抓包,forward,抓返回包,返回包里可能有一個token字段,

若token的值為1則跳轉到修改密碼頁面,所以只要修改返回包即可

5,服務端將驗證碼返回給瀏覽器:

在點擊獲取驗證碼時,服務器會將驗證碼發送給瀏覽器,抓包即可

6,驗證碼直接出現在url中:

當點擊獲取驗證碼時發出的請求鏈接中直接有code,或者直接在源代碼里面。

7,密保問題找回:

回答密保問題,有時一些答案就在html源碼里

8,找回邏輯錯誤:

若惡意用戶A用15123333333找回密碼,此時收到驗證碼但不使用

此時惡意用戶A再用受害者B的手機號找回密碼

用戶A在B的驗證表單填入自己收到的驗證碼,發送

此時跳轉的修改密碼頁面修改的就是用戶B的密碼

9,無需舊密碼驗證:

修改密碼,發現不需要輸入原來的舊密碼,直接設置新的密碼,

這個時候就直接存在了csrf漏洞,構造鏈接,直接就修改了

php?token=2&username=test&password=tst

支付漏洞:攻擊者通過修改交易金額、交易數量等從而利用漏洞,如Burp修改交易金額、使交易數量為負數或無限大等。

1、支付過程中可直接修改數據包中的支付金額

金額后端沒有做校驗,傳遞過程中也沒有做簽名,導致可以隨意篡改金額提交。

2、沒有對購買數量進行負數限制,購買數量無限大,

無限大時則程序可能處理出錯,從而實現0金額支付

3、請求重放,實現”一次購買對此收貨”

4、其他參數干擾

在支付時直接修改數據包中的支付金額,實現小金額購買大金額商品

修改購買數量,使之為負數,可購買負數量商品,從而扣除負積分,即增加積分,

或使購買數量無限大,無限大時則程序可能處理出錯,從而實現0金額支付

請求重放,在購買成功后重放請求,可實現"一次購買對此收貨"

基本案例:案例1

會員注冊用戶:

test

test

驗證碼0566

登錄密碼沒有驗證碼,可以直接暴力破解用戶名和密碼

因為服務端沒有及時銷毀,就可以使用burp批量注冊

每個參數多可能存在邏輯漏洞,修改參數,看能不能提交成功。

burp發送到爆破,變量,username,password,email

然后加載3個字典,批量注冊了,有木有,發現響應都是200,證明存在這個漏洞

這個時候所有的用戶都可以登陸

修改密碼:

1234567

1234567

攔截數據包,查看參數值,發現當我們把用戶修改成別人的,然后可以修改成功,這個時候越權漏洞就產生了。

投票系統:

我們抓包,刪除cookie信息,或者是ip地址判斷的

然后使用burp跑字典

案例二

后臺地址,訪問,提示不能直接訪問,查看源代碼,發現后臺是referer判斷,

這個容易繞過,burp抓包,然后進到了后臺頁面,

然后找到數據備份,找到referer,

然后普通用戶,添加referer偽造地址,

接著看到了script限制,我們使用chrome,不允許script,然后重新訪問

就直接突破了,這個不能使用firebox

參數越權

地址管理處,修改任意收獲信息,造成敏感信息泄露

地址管理---修改---burp抓到數據包get鏈接---有一個address_id,是收貨人的地址對應的id--將參數替換成任意值---這個時候發現收貨人的地址發生改變了,修改了收貨人的信息了。

建議是,對用戶修改以及查看地址進行權限校驗,避免越權操作,如果越權,直接錯誤頁面你,或者賬戶退出

注冊一個賬號,郵箱需要激活才能登陸---點擊重新發送-burp抓包,在uid處,修改參數值,可以發送郵箱炸彈。

修復建議:

對激活郵件限制發送次數

越權其他用戶信息:

登錄抓取cookie信息,有手機號碼在Cookie

這個時候,我們修改cookie中的手機號,查看其他用戶的信息

參數越權:

直接訪問一個頁面,能看到其他用戶的訂單號

注冊工程中,返回全部用戶的注冊信息

當我用別人郵箱注冊的時候,爆出來了別人的信息,

我們只需要別人的用戶,就可以了

服務費的繞過:

點擊還款,然后get抓包,修改參數,為0或者1,就直接繞過,還款成功。

積分數值允許喂負數

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容