業務邏輯漏洞探索之敏感資訊洩露
本文中提供的例子均來自網路已公開測試的例子,僅供參考。
近期,萬豪酒店被爆近5億客人的資訊或洩露。近年來,使用者隱私洩露事件時有發生,也不得不給我們敲響警鐘。
敏感資訊時業務系統中的保密性要求較高的資料,通常包括系統敏感資訊和引用敏感資訊。系統敏感資訊指的是業務系統本身的基礎環境資訊,比如系統資訊,中介軟體版本之類的,一旦洩露可能可以協助攻擊者提供更多的攻擊途徑和方法;應用敏感資訊指的是應用中儲存的重要業務資料,比如使用者註冊時提供的一些資訊,身份證、姓名、電話號碼等,洩露後可能會對應用的使用者帶來危害,比方說這次的萬豪酒店敏感資訊洩露事件。
我們可以分為以下幾種場景進行測試:
1.敏感資訊傳輸
在業務流程中,許多敏感資訊需要從客戶端提交到服務端,如果沒有采取合理的加密措施,在提交到服務端的過程中可能被第三方擷取,從而產生資訊洩露風險。
舉個栗子:
a).某系統修改密碼的時候,發現通過JSON進行傳輸的過程中,可以看到明文的新舊密碼。
2.敏感資訊顯示
通常情況下應用敏感資訊在客戶端顯示時需要進行脫敏,密碼等部分使用者資訊是不應該在客戶端顯示的,如果程式設計時在這部分沒有進行很好的處理,就會產生敏感資訊洩露漏洞。
舉個栗子:
a). 某系統登入頁面存在缺陷,導致敏感資訊洩露。
b). 檢視原始碼,可看見登入密碼。
c). 使用admin/gohigh1234可使用管理員許可權登入,可檢視各種資訊。
3.客戶端程式碼註釋
客戶端程式碼註釋有可能洩露系統敏感資訊,對一些核心程式碼進行技術註釋也有可能會幫助攻擊者解讀程式碼,為攻擊者提供便利,通常要求客戶端程式碼不能包含註釋,尤其是不能包含核心程式碼的技術註釋。
舉個栗子:
a). 某系統智慧門禁管理系統存在邏輯漏洞導致上萬使用者敏感資訊洩露。
b). 檢視原始碼發現有一段註釋程式碼,發現存在使用者名稱和登入密碼及請求路徑。
c). 登入後發現有大量的客戶敏感資訊,包含身份證、業主卡號等等。
4.錯誤處理測試
不安全的錯誤處理方法可能洩露系統或應用的敏感資訊,手工測試的過程中應留意各類錯誤資訊,如果發現錯誤資訊中包含系統或應用敏感資訊,則進行記錄。
舉個栗子:
某平臺sqlserver沒有對錯誤進行正確的處理,將詳細的錯誤資訊展示出來,暴露出資料庫列名。
5.小總結
以上就是鬥哥對於敏感資訊洩露的一點小總結,越來越頻發的使用者資訊洩露事件也讓我們不得不反思,如何在大資料時代,保護我們的敏感資訊。以下是鬥哥對於敏感資訊洩露防護的建議:
1.應根據業務特點定義出系統儲存的敏感資訊。
2.敏感資訊在儲存、傳輸、顯示時應進行安全處理,可採用的處理方式為加密或脫敏。
3.敏感資訊不應使用GET方式提交到伺服器。
4.使用者密碼為最高級別的敏感資訊,在儲存、傳輸、顯示時都必須加密。
5.需要選擇可靠的加密演算法,優先選擇不對稱加密演算法,不得使用BASE64等編碼方式進行“加密”
6.對於一些系統預設報錯頁面應重新進行設計自定義報錯頁面,以免暴露系統敏感資訊。