?

淺談基于HTTP數據包的Web安全邏輯漏洞挖掘思路

2023-09-25 19:32吳盼盼俞嘉雯韓冰青
計算機時代 2023年9期
關鍵詞:網絡安全

吳盼盼 俞嘉雯 韓冰青

摘? 要: 漏洞掃描、WAF、IPS、APT探針平臺等網絡安全防護設備雖然能根據實體設置策略來動態偵測和阻止外部以及內部的網絡攻擊,但無法檢測到基于系統邏輯漏洞的網絡安全攻擊,所以系統邏輯漏洞的挖掘十分重要。本文主要基于HTTP協議的數據包之間邏輯的分析,來進行Web系統的邏輯漏洞的挖掘,從而進一步加強系統的安全性。

關鍵詞: 網絡安全; 漏洞挖掘; Web系統; 邏輯漏洞

中圖分類號:TP393? ? ? ? ? 文獻標識碼:A? ? ?文章編號:1006-8228(2023)09-24-05

Web security logic vulnerability mining based on HTTP packets

Wu Panpan, Yu Jiawen, Han Bingqing

(Nanjing Audit University, Nanjing, Jiangsu 211815, China)

Abstract: Although network security protection devices such as vulnerability scanning, WAF, IPS, and APT probe platforms can dynamically detect and block external and internal system attacks according to entity setting policies, they cannot detect network security attacks based on system logic vulnerabilities, so it is very important to mine the system logic vulnerabilities. In this paper, we analyze the packet logic of the HTTP protocol to mine the logical vulnerabilities of the Web system, so as to further strengthen the security of the system.

Key words: network security; vulnerability mining; Web system; logic vulnerability

0 引言

網絡攻擊,根據攻擊手段一般可分為“硬攻擊”和“軟攻擊”兩類。SQL注入、信息監聽、DDOS攻擊和暴力破解等主動或被動攻擊,都屬于“硬攻擊”[1],而“軟攻擊”主要的攻擊方法為社會工程攻擊,通過欺詐、誘騙等手段來獲取收集信息和入侵計算機系統[2]。而邏輯漏洞攻擊更像是兩者的融合。

Web安全邏輯漏洞是軟件開發者在設計與開發系統過程中存在的邏輯缺陷所造成的[2]。隨著軟件系統框架的成熟以及網絡安全設備的部署,傳統網絡攻擊的成本和難度不斷加大,但仍無法檢測與阻止基于系統邏輯的網絡攻擊。網絡安全設備是對數據流進行檢測與分析,作用于網絡層與應用層[3],一旦攻擊者出現攻擊行為,其流量特征與正常流量相比存在異常,則會進行會話阻斷。

邏輯漏洞是系統HTTP協議接口本身存在的邏輯問題,短信轟炸、敏感信息泄露、更改任意用戶密碼、越權、價格篡改、未授權登錄等都屬于邏輯漏洞范疇,其作用范圍廣、時間長,且無法被安全設備感知[4],在實際環境中只能通過手工分析HTTP數據包的方法來挖掘此類漏洞。

本文結合實際生產過程中Web系統常用的軟件功能模塊,詳細分析其HTTP數據包內容以及上下接口邏輯關系,探討Web安全邏輯漏洞的挖掘思路,幫助用戶更好地進行網絡安全防護。

1 驗證碼機制缺陷

1.1 圖片驗證碼

圖片驗證碼被廣泛應用在Web系統的各個場景中,用戶登錄認證和用戶注冊是其中使用最多的兩個場景。圖片驗證碼認證機制一旦存在問題,那么很有可能導致整個用戶登錄整體模塊被完全攻破和任意用戶無限次注冊的問題。圖片驗證碼機制缺陷一般可分為兩類。①GET/POST方法請求驗證碼接口時返回的驗證碼格式為文本格式而不是圖片格式,這樣可以直接通過報文進行讀取,如圖1所示。②機制缺陷為驗證碼認證機制缺陷。由于系統開發人員的失誤,僅僅依靠Web前端來進行驗證碼的驗證。直接刪除報文信息中的驗證碼字段(將code=****刪除或者將****置空),這就會導致空驗證碼繞過。對于獨立驗證碼認證接口,可嘗試將認證接口數據包通過Burpsuit工具直接丟棄,如若未報錯則存在問題。

1.2 短信驗證碼

短信驗證碼常存在的問題有短信轟炸和認證缺陷。短信轟炸是由于開發人員未設置接口請求時間間隔限制造成的或是時間判斷完全依靠前端提交的Unix時間戳,通過無間隔的調用短信發送接口或更改時間戳來實現無限制短信發送。

認證缺陷是指用戶已經收到服務器發送的短信驗證碼并填寫提交給服務器認證時,服務器認證過程中存在的缺陷。關于繞過過程,可參考第1章中的圖片驗證碼機制缺陷。對于短信驗證碼的繞過,本文主要分析根據服務器回顯狀態碼繞過,由于認證的特殊性,將此類方法結合密碼認證繞過放在第2章的Response狀態值進行闡述。

2 密碼認證繞過

2.1 Response狀態值

在用戶提交登陸憑證請求后,HTTP的Response中會根據用戶的憑證返回特定的響應值(1/0、yes/no、fail/success等)。如若系統存在校驗值不嚴格,并且返回的狀態值是在前端進行校驗的,那么就可對Response狀態值進行修改,用戶密碼/手機驗證碼的非法登錄請求就能夠被成功執行。如圖2所示,上面Response中的json狀態值為用戶輸入的正確密碼,下面為錯誤的,可以在正常登錄流程中更改狀態值為正確的再提交給前端,非法用戶就能在不需要密碼的情況下登錄賬戶。如若系統用session、taken、JWT等會話控制功能,憑證校驗在服務端操作,則不存在此類問題。

2.2 暴力破解

窮舉所有的可能性就是暴力破解。暴力破解在計算機安全領域中應用極廣,不僅可以用來爆破用戶名和口令,也可以對session、taken甚至是JWT進行破解。Web系統中如未配有驗證碼(圖片、滑動、識別、計算)和登錄失敗鎖定等防暴力破解的功能,那么攻入系統只是時間問題。本節主要介紹用戶名和口令的暴力破解。

用戶名和口令暴力破解的核心是字典,字典囊括了所有用戶名和口令的可能字符串。因為大多數人的密碼會包括自己信息,所以最好的字典是根據受害者的信息使用字典工具(Cupp、Cewl、Crunch)自動生成的,比如受害者名字、生日、手機號、身份證號、親人信息等等。一旦發現系統并不存在防暴力破解機制,則可以使用暴力破解工具抓取登錄接口信息并導入字典信息進行暴力破解。正確和錯誤的用戶口令,服務器返回信息是不同的,字節長度不同,暴力破解結果根據response的Length長度來甄別,如圖3所示。

3 敏感信息泄露

3.1 JWT

JWT(Json Web Token)是認證授權會話機制的一種[5],JWT的驗證方式適用于分布式站點的單點登錄(SSO)場景,JWT的驗證流程如圖4所示。

JWT由header、Payload、signature三個部分表示并使用“.”來分割這三串字符,header部分用來描述元素對象,由type(聲明對象是JWT)與alg(聲明Hash算法)構成。Payload表示有效荷載,傳遞的數據都在這個字段中,除了官方提供的七個聲明字段(iss、sub、aud、exp、nbf、iat、jti),也可以自定義字段,但存在開發人員將密碼的密文字符存放在Payload中,而header與Paylaod均使用base64進行編碼,十分容易做逆向解析,一旦存在上述情況,就導致了JWT中的敏感信息泄露。

3.2 JavaScript冗余信息

JavaScript是一種非常簡單且強大的前段腳本語言,但是在系統開發時開發人員為了方便,將密碼、后臺路徑、對稱密鑰、API注釋在JavaScript中,這就導致了敏感信息泄露[6]。此類泄露找尋方法非常簡單,只需要查看源代碼并在其中輸入關鍵字段(login、adminlogin、user/login、password、phone、id等等)進行搜索(Ctrl+F)。前端已經匿名或者打碼的敏感信息也可能由于開發人員的疏忽在前端代碼中找尋到,另外也可以右擊頁面找到匿名信息的前端代碼,修改元素type為“text”種類后,查看匿名信息是否直接明文顯示在前端頁面上。開發人員需要對前端代碼進行混淆壓縮,并仔細檢查是否留下關于敏感信息的備注

3.3 中間件版本信息

中間件是介于操作系統與應用軟件的一類軟件,用來發布應用軟件。B/S(瀏覽器/服務器)架構系統常用的中間件有tomcat、apache、weblogic等。

中間件版本信息泄露主要有兩個來源,一是HTTP數據包中的Response返回信息泄露,主要是Server與X-Powered-By字段泄露,如圖5所示。但Apache-Coyote/1.1可以作為例外,它不會暴露tomcat的具體版本號,可以不隱藏版本號。同時構造報錯頁面影響的請求,比如訪問未被授權的頁面的URL構造401錯誤、訪問不存在的頁面的URL構造404錯誤和篡改http method改為站點不允許的http method構造405錯誤,查看報錯頁面是否存在版本號并與漏洞庫進行對比。

近些年來不同版本的中間件存在的安全漏洞非常之多(CVE-2017-12615、CVE-2019-0232等),且風險巨大,每次最新的中間件漏洞被挖掘后廠商只能進行發布版本補丁更新,但由于并不是所有的系統運維人員都會去進行補丁更新,一旦開發人員在系統開發過程中沒有對中間件的版本信息進行隱藏處理,就很有可能導致漏洞直接被非法人員利用。

4 越權漏洞

4.1 垂直越權

垂直越權,是在不同用戶級別、權限之間的越權訪問。垂直越權分為向上越權和向下越權,向上越權指一個低權限用戶訪問高權限用戶的資源與功能。高級別用戶訪問低級別用戶信息(對高級別用戶屏蔽的信息)為向下越權,這類情況較少見,所以垂直越權一般指向上越權。

垂直越權的原因是系統功能與資源未與用戶身份信息(cookie、session、token)綁定。假設在一個民生供水系統中,A用戶為管理用戶,有權限進行社區供水流量的調節,而B用戶為普通用戶,只能進行基本的水流量監控與水卡充值權限,在一次偶然中B用戶發現了供水流量調節的HTTP接口信息,一旦系統存在垂直越權漏洞,用戶B可直接登錄自己的賬戶將自己的身份信息(cookie、session、token)填寫在接口中并調用,后果不堪設想。

垂直越權在實際系統中普遍存在,由于開發人員疏忽,未對用戶身份權限信息進行鑒別,雖然前段流程看起來是違規的,但是HTTP數據包只傳遞信息給服務器,并不去管是否權限對應,服務器端由于未鑒別權限,收到后并不會發現這是個違法信息。

4.2 水平越權

水平越權是攻擊者想訪問與自己同級別用戶的資源,其中主要包括三個場景:基于用戶身份ID、基于對象ID、基于文件名,這三類可同屬于ID指向,更改ID指向只能實現水平越權。圖6中,用戶A與用戶B是同級別用戶,他們的資源(文件、敏感信息、配置等)也是分隔的,分別對應資源1與資源2。在正常訪問資源流程中,用戶B的訪問請求在HTTP數據包的表現為ID=資源2,但如果存在平行越權漏洞,則可以通過更改資源ID為1就能訪問用戶A的資源。

平行越權的在實際場景中普遍存在,失效的訪問控制是造成平行越權的原因,開發人員在系統開發過程中應考慮到權限與用戶之間的綁定,并在系統開發完成后進行測試。

5 業務邏輯一致性

5.1 競爭條件

存在類似積分兌換業務等情況,需要判斷是否滿足條件,這類業務需要對請求做類似隊列的處理,或者對判斷條件是否滿足的依據數據的獲取做加鎖處理,只有因此類問題對經濟上造成損失的業務才需要檢查此項,如購買相應規格的服務,如果能突破人為設置規格的上限,公司是會承受損失的。

舉例來說,如積分兌換業務,假設目前賬號有500積分,應該可以兌換200積分的獎品二次,但很多情況下服務器處理是同時進行的,如果檢查條件時沒有加鎖或者隊列處理兌換業務,那么在該用戶并發大量兌換請求時,兌換的條件檢查同時都是該賬戶下有500積分,這樣就存在可以多兌換的問題。

5.2 篡改價格、數量(極值)

如果業務的表單設計中直接包含了價格的參數(price)、數量或者涉及到價格、數量(不推薦在表單中設計價格參數)可能會出現產品“0元購”、數量超出控制(最大與最?。﹩栴}。

在一個正常流程中攔截請求,嘗試將價格參數篡改成0、較低的值、負值等,后端檢測、控制輸入可能被突破。對于有訂購數量上限的,嘗試篡改請求中的代表訂購數量的參數,以檢測能否訂購成功。如果訂購次數有限制,則嘗試重放訂購請求或者繞過前端限制進行訂購。參考http參數污染的思路,有價格參數并作輸入檢查限制的情況下,自行增加一個相同的價格參數,嘗試通過此種方式突破參數的輸入檢查限制。在沒有price參數的情況下,可以參考http參數污染的思路,自行構造“price”等。不同規格計費參數,低規格產品訂購時更改為高規格實例參數,嘗試低價高購問題篡改。對一些線性計費產品,如個/月計費,將數量更改為0,查看是否能免費訂購。

5.3 任意用戶密碼更改

任意用戶密碼更改漏洞主要存在于“忘記密碼”與“更改密碼”模塊,如果Web功能邏輯不嚴謹,則會造成惡意者隨意更改他人密碼。

任意密碼更改一般要與驗證碼漏洞或者平行越權漏洞聯系起來。在第四章第二節《水平越權》中,其中的資源庫也可以指用戶的密碼,這樣情況一般出現在“更改密碼”的模塊中。如果身份信息未與鑒權信息進行綁定,而僅僅依靠資源ID指向,攻擊者只要知道用戶對應的資源ID(猜解、爆破)就能進行任意用戶的密碼更改。

“忘記密碼”中的邏輯缺陷一般要聯系驗證碼漏洞與跳過驗證碼步驟。在正常的“忘記密碼”過程中,系統一般都要求用戶輸入手機號進行驗證碼接收,在此過程中則會出現四種場景:

⑴ 驗證碼失效;

⑵ 驗證碼未綁定用戶;

⑶ 篡改接收手機號/郵箱;

⑷ 跳過驗證碼密碼步驟。

如果服務器未設置驗證超時等功能造成驗證碼功能失效,可導致攻擊者直接進行驗證碼暴力破解。驗證碼未綁定用戶的情況會導致攻擊者在使用自己的手機號/郵箱來進行驗證碼的,驗證成功后修改HTTP數據包將手機號/郵箱換成其他人,這就實現了修改他人密碼。在“找回密碼”時,系統會要求輸入用戶名,之后系統會根據用戶名發送驗證碼,在此期間使用軟件攔截數據包,將受害者的手機號/郵箱更改為自己的,就能實現非法修改驗證碼。如圖7所示,Web對用戶密碼的更改流程。

攻擊者先用自己的賬戶來進行一個完整 “找回密碼”流程,并記錄流程接口數據,如果系統校驗不嚴格,會導致攻擊者輸入受害者手機號發送驗證碼,之后直接丟棄驗證碼檢驗數據包跳到輸入新密碼修改密碼接口,以此來實現任意用戶密碼更改。

6 結束語

Web安全邏輯漏洞是開發者在系統開發時期沒有充分考慮到系統的安全邏輯性所導致的,在實際Web應用環境中普遍存在,而且很難被漏洞掃描探測出來,一旦被攻擊者利用,攻擊行為就很難被攔截且溯源也極為困難。本文通過HTTP數據包工作機制與流程,從驗證碼機制缺陷、密碼認證繞過、敏感信息泄露、越權漏洞、業務邏輯一致性這五個方面,且通過具體實例來闡述Web安全邏輯漏洞挖掘思路。接下來將繼續對邏輯漏洞安全識別與修補做深入研究,同時結合深度學習技術,為單位與企業的Web系統的安全開發提供有效的理論參考。

參考文獻(References):

[1] Douglas Jacobson.網絡安全基礎——網絡攻防、協議與安全[M].電子工業版社,2016.

[2] 謝其祥,李莎.基于沙盒技術及社會工程學角度分析和防范釣魚攻擊的研究[J].廣東通信技術,2022,42(9):46-51.

[3] 陳春玲,雷世榮,陳丹偉.分布式防火墻的原理、實現及應用[J].南京郵電學院學報,2002(4):5-10.

[4] 劉欣然.網絡攻擊分類技術綜述[J].通信學報,2004(7):30-36.

[5] 范展源,羅福強.JWT認證技術及其在Web中的應用[J].數字技術與應用,2016(2):114.

[6] 馬洪亮,王偉,韓臻.混淆惡意JavaScript代碼的檢測與反混淆方法研究[J].計算機學報,2017,40(7):1699-1713.

猜你喜歡
網絡安全
網絡安全知多少?
新形勢下的特種設備網絡安全防護探討
新量子通信線路保障網絡安全
網絡安全
網絡安全人才培養應“實戰化”
上網時如何注意網絡安全?
網絡安全與執法專業人才培養探索與思考
設立網絡安全專項基金 促進人才培養
網絡安全監測數據分析——2015年12月
網絡安全監測數據分析——2015年11月
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合