1. 程式人生 > >Web安全測試中常見邏輯漏洞解析(實戰篇)

Web安全測試中常見邏輯漏洞解析(實戰篇)

*文章原創作者: [email protected]漏洞盒子安全研究團隊,轉載請註明來自FreeBuf黑客與極客(FreeBuf.COM) 

邏輯漏洞挖掘一直是安全測試中“經久不衰”的話題。相比SQL注入、XSS漏洞等傳統安全漏洞,現在的攻擊者更傾向於利用業務邏輯層的應用安全問題,這類問題往往危害巨大,可能造成了企業的資產損失和名譽受損,並且傳統的安全防禦裝置和措施收效甚微。今天漏洞盒子安全研究團隊就與大家分享Web安全測試中邏輯漏洞的挖掘經驗。

一:訂單金額任意修改

解析

很多中小型的購物網站都存在這個漏洞。在提交訂單的時候抓取資料包或者直接修改前端程式碼,然後對訂單的金額任意修改。

如下圖所示:

1.png

2.png

經常見到的引數大多為

rmb

value

amount

cash

fee

money

關於支付的邏輯漏洞這一塊還有很多種思路,比如相同價格增加訂單數量,相同訂單數量減少產品價格,訂單價格設定為負數等等。

預防思路

1.訂單需要多重效驗,如下圖所演示。

3.png

2. 訂單數值較大時需要人工稽核訂單資訊,如下圖所演示。

4.png

3. 我只是提到兩個非常簡單的預防思路,第二個甚至還有一些不足之處。這裡需要根據業務環境的不同總結出自己的預防方式,最好諮詢專門的網路安全公司。

二:驗證碼回傳

解析

這個漏洞主要是發生在前端驗證處,並且經常發生的位置在於

賬號密碼找回

賬號註冊

支付訂單等

驗證碼主要傳送途徑

郵箱郵件

手機簡訊

其執行機制如下圖所示:

5.png

黑客只需要抓取Response資料包便知道驗證碼是多少。

預防思路

1.response資料內不包含驗證碼,驗證方式主要採取後端驗證,但是缺點是伺服器的運算壓力也會隨之增加。

6.png

2.如果要進行前端驗證的話也可以,但是需要進行加密。當然,這個流程圖還有一些安全缺陷,需要根據公司業務的不同而進行更改。

7.png

三.未進行登陸憑證驗證

解析

有些業務的介面,因為缺少了對使用者的登陸憑證的效驗或者是驗證存在缺陷,導致黑客可以未經授權訪問這些敏感資訊甚至是越權操作。

常見案例:

1. 某電商後臺主頁面,直接在管理員web路徑後面輸入main.php之類的即可進入。

8.png

2. 某航空公司訂單ID列舉

9.png

3. 某電子認證中心敏感檔案下載

10.png

4.某站越權操作及缺陷,其主要原因是沒對ID引數做cookie驗證導致。

233.png

5. 實際上還有很多案例,這裡就不一一例舉了,但是他們都存在一個共同的特性,就是沒有對使用者的登陸憑證進行效驗,如下圖為例。

11.png

預防思路

對敏感資料存在的介面和頁面做cookie,ssid,token或者其它驗證,如下圖所示。

12.png

四:介面無限制列舉

解析

有些關鍵性的介面因為沒有做驗證或者其它預防機制,容易遭到列舉攻擊。

常見案例:

1. 某電商登陸介面無驗證導致撞庫

13.png

2. 某招聘網驗證碼無限制列舉

14.png

3. 某快遞公司優惠券列舉

15.png

4. 某電商會員卡卡號列舉

16.png

5. 某超市註冊使用者資訊獲取

17.png

預防思路

1. 在輸入介面設定驗證,如token,驗證碼等。

如果設定驗證碼,最好不要單純的採取一個前端驗證,最好選擇後端驗證。

如果設定token,請確保每個token只能採用一次,並且對token設定時間引數。

2. 註冊介面的介面不要返回太多敏感資訊,以防遭到黑客製作列舉字典。

3. 驗證碼請不要以短數字來甚至,最好是以字母加數字進行組合,並且驗證碼需要設定時間期限。

4. 優惠券,VIP卡號請儘量不要存在規律性和簡短性,並且優惠券最好是以數字加字母進行組合。

5. 以上這是部分個人建議,實際方案需要參考業務的具體情況。

五:cookie設計存在缺陷

解析

這裡需要對其詳細的說一下。我們先一個一個來吧。

  1. Cookie的效驗值過於簡單。有些web對於cookie的生成過於單一或者簡單,導致黑客可以對cookie的效驗值進行一個列舉,如下圖所示

18.png

根據上圖,我們可以分析出,這家網站對於cookie的效驗只單純的採用了一組數字,並且數值為常量,不會改變,這樣非常容易遭到黑客的列舉。甚至有一些網站做的更簡單,直接以使用者名稱,郵箱號或者使用者ID等來作為cookie的判斷標準。

2. cookie設定存在被盜風險

有很多時候,如果一個使用者的cookie被盜取,就算使用者怎麼修改賬號和密碼,那段cookie一樣有效。詳情可以參考《BlackHat(世界黑帽大會)官方APP出現兩個邏輯漏洞》

其原理如下:

19.png

國內大部分廠商都不會把這個地方當作安全漏洞來處理,他們認為這個漏洞的利用條件是黑客必須要大批量獲取到使用者的cookie。雖然事實如此,但是這個也是一個安全隱患。

3.使用者的cookie資料加密應嚴格使用標準加密演算法,並注意金鑰管理。

有一些廠商為了圖方便,沒有對使用者的cookie做太多的加密工作,僅僅是單純的做一個靜態加密就完事了。我之前就碰到一個,可以為大家還原一下當時的場景。

20.png

當時我看到cookie中有個access token引數,看到value後面是兩個等號,習慣性的給丟去base64解碼裡面,發現解出來後是我的使用者名稱。因此只要知道一個人的使用者名稱就可以偽造對方的cookie,登陸他人賬戶。

4.還有多個案例不再做重複說明,大家可以深入研究一下cookie中的邏輯漏洞。但是cookie中的漏洞大多都是屬於一個越權漏洞。越權漏洞又分為平行越權,垂直越權和交叉越權。

平行越權:許可權型別不變,許可權ID改變

垂直越權:許可權ID不變,許可權型別改變

交叉越權:即改變ID,也改變許可權

如下圖所示:

QQ截圖20160824190502.png

預防思路

1.cookie中設定多個驗證,比如自如APP的cookie中,需要sign和ssid兩個引數配對,才能返回資料。

2.使用者的cookie資料加密應嚴格使用標準加密演算法,並注意金鑰管理。

3.使用者的cookie的生成過程中最好帶入使用者的密碼,一旦密碼改變,cookie的值也會改變。

4.cookie中設定session引數,以防cookie可以長時間生效。

5.還有很多方法,不再一一例舉,請根據業務不同而思考。

六:找回密碼存在設計缺陷

解析

1.auth設計缺陷

經常研究邏輯漏洞的人可能會對以下URL很熟悉

www.xxx.com/resetpassword.php?id=MD5

使用者修改密碼時,郵箱中會收到一個含有auth的連結,在有效期內使用者點選連結,即可進入重置密碼環節。而大部分網站對於auth的生成都是採用rand()函式,那麼這裡就存在一個問題了,Windows環境下rand()最大值為32768,所以這個auth的值是可以被列舉的。

如下面這個程式碼可以對auth的值做一個字典。

QQ截圖20160824161820.png

然後重置某個賬號,並且對重置連結內的auth進行列舉

21.png

整個漏洞的運作的流程圖如下:

22.png

2.對response做驗證

這個漏洞經常出現在APP中,其主要原因是對於重置密碼的的驗證是看response資料包,由於之前的案例沒有截圖,只能畫個流程圖給大家演示一下。

23.png

3.《密碼找回邏輯漏洞總結》這篇文章很全面的總結了密碼找回漏洞的幾個具體思路和分析,這裡我就不再繼續滾輪子了。

預防思路

1.嚴格使用標準加密演算法,並注意金鑰管理。

2.在重置密碼的連結上請帶入多個安全的驗證引數。

七:單純讀取記憶體值資料來當作使用者憑證

解析

實際上這個應該算作一個軟體的漏洞,但是因為和web伺服器相關,所以也當作WEB的邏輯漏洞來處理了。最能當作例子是《騰訊QQ存在高危漏洞可讀取並下載任意使用者離線檔案(洩漏敏感資訊)》這個漏洞,但是我相信這種奇葩的漏洞不一定只有騰訊才有,只是還沒人去檢測罷了。

產生這個漏洞的主要原因是程式在確定一個使用者的登陸憑證的時候主要是依靠記憶體值中的某個value來進行確認,而不是cookie。但是記憶體值是可以更改和檢視的。其流程圖如下:

24.png

預防思路

1. 走伺服器端的資料最好做cookie驗證。

2. 我不反對直接在程序中確定使用者的登陸憑證,但是請對程序進行保護,或者對程序中的value做加密處理。

總結

以上見到的只是幾個比較經典的和常見的邏輯漏洞,這些邏輯漏洞也是程式開發人員和安全檢測人員需要留意的。

如果對邏輯漏洞感興趣的可以檢視以下的擴充套件閱讀:

*文章原創作者: ArthurKiller @漏洞盒子安全研究團隊,轉載請註明來自FreeBuf黑客與極客(FreeBuf.COM)

相關推薦

Web安全測試常見邏輯漏洞解析實戰

*文章原創作者: [email protected]漏洞盒子安全研究團隊,轉載請註明來自FreeBuf黑客與極客(FreeBuf.COM)  邏輯漏洞挖掘一直是安全測試中“經久不衰”的話題。相比SQL注入、XSS漏洞等傳統安全漏洞,現在的攻擊者更傾向於利用業務

Web安全測試之跨站請求偽造CSRF

 跨站請求偽造(即CSRF)被Web安全界稱為諸多漏洞中“沉睡的巨人”,其威脅程度由此“美譽”便可見一斑。本文將簡單介紹該漏洞,並詳細說明造成這種漏洞的原因所在,以及針對該漏洞的黑盒測試與灰盒子測試具體方法和示例,最後提提了一些防範該攻擊的建議,希望本文對讀者的安全測試

使用Unity實現VR在黑板上寫字升級----- 加入黑板擦

turn isequal 是什麽 true int bool float sta oca 黑板擦的功能其實和畫筆是一樣的,只是黑板擦設置的顏色是畫板最原始的顏色,而筆設置的是其他的顏色。 所以最大的不同時,當手柄握住黑板擦時和握住筆時的函數實現是不一樣的;實現這個功能之後,

DoTwe幸運28平臺搭建下載en全解析入門

陌生 搭建 今天 入門 tween 幸運 開發人員 方式 開發 DoTween,Itw幸運28平臺搭建下載【征途源碼論壇zhengtuwl.com】聯系方式:QQ:2747044651幸運28平臺搭建下載een,這些名字作為一個Unity開發人員聽起來並不陌生,它們在動畫方

MySQL使用過程遇到的小問題積累

問題一:Caused by: java.sql.BatchUpdateException: Cannot execute statement: impossible to write to binary log      since BINLOG_FORMAT = STATE

在 .NET Core 結合 HttpClientFactory 使用 Polly

譯者:王亮  作者:Polly 團隊  原文:http://t.cn/EhZ90oq 譯者序一:前兩天寫了一篇文章 .NET Core 開源專案 Polly 介紹,在寫這篇文章檢視 Polly 資料時,看到了“Polly and HttpClientFactory”這篇 Wiki 文件,覺得

【轉】azkaban的部署過程遇到的一些坑部署

注:azkaban之前有個配置檔案預設要求6G以上可用記憶體的坑,解決完之後今天又遇到了程式碼寫死3G以上記憶體的坑,根據報錯資訊正巧搜到了這篇文章,另外作者的主頁https://my.oschina.net/u/2988360裡也有其他幾篇關於azkaban的文章,推薦

Appium+Python 自動化測試之二:啟動APPAndroid

android版本 inf 環境 哪些 aapt code div port ons 前一篇寫了環境安裝,這篇記錄是記錄如何啟動APP以及啟動APP之前要做哪些事。 Appium 啟動APP至少需要5個參數,分別是‘platformName‘,‘platformVersio

Python+Pytest 單元測試框架之執行用例第二

俗話說:無規矩不成方圓,做事做人都一樣。寫程式碼也是一樣,都需要遵循基本的程式碼規範和格式。只有瞭解和遵循規則,才能寫出更高質量的程式碼,才能在錯綜複雜的 Bug 中快速定位出問題並找到解決方案。相信大家在《Python 單元測試框架之 Pytest 剖解入門(第一篇)》 已

Kubernetes應用部署模型解析原理

十多年來Google一直在生產環境中使用容器執行業務,負責管理其容器叢集的系統就是Kubernetes的前身Borg。其實現在很多工作在Kubernetes專案上的Google開發者先前就在Borg這個專案上工作。多數Kubernetes的應用部署模型的思想都起源於Bor

資料倉庫的sql效能優化MySQL

做資料倉庫的頭兩年,使用高配置單機 + MySQL的方式來實現所有的計算(包括資料的ETL,以及報表計算。沒有OLAP)。用過MySQL自帶的MYISAM和列儲存引擎Infobright。這篇文章總結了自己和團隊在那段時間碰到的一些常見效能問題和解決方案。 P.S.如果沒有

在Mac os 快速建立一個檔案失敗

最近開始上手使用Mac OS , 一開始很是不習慣,但漸漸的上手之後,真心覺得體驗上面比Windows要好太多了,對得起它這個價格的。 今天就說一個很簡單的操作 : 如何快速的建立一個任意格式的文字檔案 在Windows 上面右鍵之後可以很容易的建立一個檔案

JavaScriptCore 全面解析

作者:殷源,就職於騰訊,專注移動客戶端開發,微軟Imagine Cup中國區特等獎獲得者。 責編:屠敏,關注物聯網、移動開發領域,尋求報道或投稿請發郵件[email protected],或微信tm_forever_miss。 本文為騰雲

Android View 事件分發機制 原始碼解析ViewGroup

1. 前言 android點選 事件一直以來都是很多安卓程式設計師的心病,之前通過demo模擬總結出一些經驗,但是不看原始碼的程式設計師不是好程式設計師,這段時間,系統的梳理了下整個事件傳遞的原始碼,希望可以幫助大家徹底理解andriod的點選

MyBatis詳細原始碼解析

# 前言 我會一步一步帶你剖析MyBatis這個經典的半ORM框架的原始碼! 我是使用Spring Boot + MyBatis的方式進行測試,但並未進行整合,還是使用最原始的方式。 # 專案結構 **匯入依賴:** 1. mybatis:[mybatis](https://mvnrepositor

WEB開發常見漏洞

需要 提交 源代碼 包頭 紀念日 正常 漏洞 發生 裏的 一、SQL註入漏洞 SQL註入攻擊(SQL Injection),簡稱註入攻擊、SQL註入,被廣泛用於非法獲取網站控制權,是發生在應用程序的數據庫層上的安全漏洞。在設計程序,忽略了對輸入字符串中夾帶的SQL指令的檢查

Web專案開發常見安全問題及防範

計算機程式主要就是輸入資料 經過處理之後 輸出結果,安全問題由此產生,凡是有輸入的地方都可能帶來安全風險。根據輸入的資料型別,Web應用主要有數值型、字元型、檔案型。 要消除風險就要對輸入的資料進行檢查,對於Web應用來說,檢查的位置主要是前端和後端。前端檢查只能防止正常狀況,沒法防止通過工具、程式繞開前端

Web自動化測試針對圖片驗證碼問題的常見解決思路

圖片驗證碼(Captcha)問題在自動化測試中是一個很常見的問題,也是一個很棘手的問題。圖片驗證碼設計的初衷其實就是為了防自動化,防止一些人利用自動工具惡意攻擊網站,而很不幸的是,我們所使用的一些自動化測試工具也包含在內。當然了,對付驗證碼也不是一點辦法都沒有,方法還是有很多

Web自動化測試針對圖片驗證碼問題的常見解決思路,看看對您有沒有幫助

原文地址 圖片驗證碼(Captcha)問題在自動化測試中是一個很常見的問題,也是一個很棘手的問題。圖片驗證碼設計的初衷其實就是為了防自動化,防止一些人利用自動工具惡意攻擊網站,而很不幸的是,我們所使用的一些自動化測試工具也包含在內。當然了,對付驗證碼也不是一點辦法都沒

Web安全測試之——XSS漏洞

一、概念 XSS攻擊:跨站指令碼攻擊(Cross Site Scripting),它是Web程式中最常見的漏洞。 XSS攻擊是指攻擊者在網頁中嵌入客戶端指令碼(例如JavaScript), 當用戶瀏覽此網頁時,指令碼就會在使用者的瀏覽器上執行,從而達到攻擊者的目的。比如獲取