以下是整理的一些常見的安全滲透測試點
1.用工具fidder抓包攔截篡改服務器端返回的代碼,導致下級擁有對上級的訪問操作權限
以下是公司開發寫的用戶角色權限頁面跳轉
2.篡改傳輸的數據,積分兌換下訂單,可以花別人的積分兌換東西送貨到我想送的人和地址
3.任意修改用戶資料
某交易平台的用戶可以通過該系統的個人資料修改頁面修改個人的昵稱和頭像。
截取發送修改請求的數據包抓取進行分析。我們發現在提交的過程中,其實請求自帶了一個隱藏的參數investor.loginName,其實 investor.loginName為登錄的手機號碼(或用戶名),investor.Name為重置的用戶名,通過直接修改掉參數 investor.loginName為任意注冊的用戶名或者手機號碼,即可成功篡改重置該用戶的用戶名。
4.任意查詢用戶信息
在對金融交易平台測試的過程中,我們發現大部分平台並未對查詢功能進行優化,使用用戶的uid之類的賬號標志參數作為查詢的關鍵字,並且未對查詢范 圍進行控制,導致出現任意信息查詢的安全漏洞。該類型漏洞在手機客戶端較為常見,如在某交易平台手機商城就發現了任意查詢其他用戶信息的安全問題。
當點擊商城的個人資料修改處,系統會通過將當前用戶的phone_client_uuid提交到服務器進行查詢,調出個人資料的內容
但由於系統並未對該功能進行訪問控制,導致可通過遍歷uuid的方式查詢平台中任意用戶的資料,通過工具對phone_client_uuid的后5位進行爆破嘗試,如下圖:
通過對返回值的length進行篩選,發現成功爆破部分phone_client_uuid所對應的用戶信息。
代碼防護
針對平行權限的訪問控制缺失,我們建議使用基於用戶或者會話的間接對象引用進行防護,比方說,一個某個選項包含6個授權給當前用戶的資源,它可以使 用一串特殊的數字或者字符串來指示哪個是用戶選擇的值,而不是使用資源的數據庫關鍵字來表示,數字和字符串的生成可以結合賬號信息進行生成,使得攻擊者難 以猜測生成的方式。
針對垂直權限的訪問控制缺失,我們建議可以使用缺省拒絕所有的訪問機制,然后對於每個功能的訪問,可以明確授予特定角色的訪問權限,同時用戶在使用該功能時,系統應該對該用戶的權限與訪問控制機制進行校對。
5.任意重置用戶密碼
漏洞描述
用戶越權去修改其他用戶的信息,如密保電話、密保郵箱等,由於它敏感性所以我們將它歸納成一類進行探討。
案例
繞過短信驗證碼
基本所有的金融交易平台都有短信找回密碼的功能,但部分短信驗證的功能較為不完善導致可被利用重置任意用戶的賬號,同樣是某金融平台的實際案例:
在已知對方用戶名和手機號碼的情況下,通過站點的密碼找回功能可繞過短信驗證碼直接重置該賬號密碼。下圖為密碼重置頁面:
該漏洞出現主要的原因在於開發人員在第二步設置新密碼時服務端沒有對手機驗證碼進行二次校驗,提示:重要的功能都需要做服務器端驗證,導致當攻擊者可以利用修改返回值的方式直接跳轉到設置新密碼頁面,然后重置用戶的密碼。
6.短信驗證碼暴力破解
部分金融交易平台為了用戶登錄方便會設置短信驗證碼登錄功能,但並未對驗證碼的登錄錯誤次數進行限制,導致可利用驗證碼爆破的方式強行登錄賬號。在某證券交易平台就曾出現過該安全問題。
該平台使用6位數字隨機驗證碼進行登錄,但並未對登錄錯誤次數和驗證碼失效時間進行限制,導致可以暴力破解該驗證碼強制登錄賬號。如下圖:
同樣是通過返回值的length字段進行判斷是否登錄成功。6位字段的爆破需要較長的時間,但4位驗證碼的爆破時間最慢也僅需要約5分鍾左右。
代碼防護
針對案例一中的漏洞,我們建議在第二步修改密碼時服務端再次驗證手機驗證碼,部分平台所采用的做法是,第一步驗證碼提交成功后,將驗證碼隱藏在一個 “hidden”表單中,並在第二步修改密碼中進行提交,服務端再次驗證短信驗證碼,保證准確性,同時對驗證碼的錯誤次數進行限制,當驗證錯誤超過特定次 數,當前驗證碼無效。
針對案例二中的漏洞,我們同樣建議隨機驗證碼設置錯誤次數限制,當驗證錯誤超過特定次數,當前驗證碼即無效。
7.惡意注冊
漏洞描述
惡意注冊,是指攻擊者利用網站注冊功能的安全漏洞,注冊大量的垃圾賬號,導致系統增多大量無用數據。一般網站開發者為了防止惡意注冊的行為,在注冊 頁面均會在加入一些需要人工輸入的步驟,比方說短信驗證碼,郵箱驗證等。但是在對金融平台測試的過程中,同樣也發現了部分驗證功能可被繞過。
案例
注冊數據包重放繞過驗證碼
部分金融交易平台為了保證注冊用戶的真實性,往往都會要求驗證手機,並通過發送驗證碼的方式來保證注冊賬號並非僵屍賬號,但是部分平台的驗證碼可被多次重放,導致可注冊大量垃圾賬號,在某交易商城的注冊功能就存在該漏洞,下圖為注冊時需要給手機發送驗證碼的數據包:
短息碼驗證完后,直接注冊寫數據庫,通過修改phoneNum的值可以實現批量注冊賬號:
通過修改phoneNum的值為15527xxxx96、15527xxxx97可成功注冊這兩個賬號:
該漏洞出現的原因在於后台未校驗驗證碼的使用次數和時間,只校驗了其准確性,因此可被利用進行多次注冊。
代碼防護
目前遇到的大部分惡意注冊類的安全漏洞均為驗證碼可被多次使用造成,我們建議后台對驗證碼的使用進行限制,任何的驗證碼應為一次性,防止驗證碼被多次使用
8.惡意短信
漏洞描述
惡意短信是一種類似於DDoS的攻擊方式,他是利用網站的短信相關的功能,對用戶的手機進行長時間的短信轟炸,導致手機癱瘓。除了單純的短信轟炸之外,我們在測試過程中也發現,部分金融交易平台對所發送的短信內容也並沒有進行限制,導致可被利用進行短信欺詐。
案例
短信轟炸
在測試的過程中,我們發現眾多的金融交易平台僅在前端通過JS校驗時間來控制短信發送按鈕,但后台並未對發送做任何限制,導致可通過重放包的方式大 量發送惡意短信。如某交易平台的手機注冊處就出現過該類型漏洞。利用fiddler抓取數據包,並進行重放可以繞過前端的限制,大量發送惡意短信。
任意短信內容編輯
在某平台的修改綁定手機功能就曾出現過可編輯短信內容的問題。
點擊“獲取短信驗證碼”,並抓取數據包內容,如下圖。通過分析數據包,可以發現參數sendData/insrotxt的內容有客戶端控制,可以修改為攻擊者想要發送的內容
將內容修改“恭喜你獲得由xx銀行所提供的iphone6一部,請登錄http://www.xxx.com領取,驗證碼為236694”並發送該數據包,手機可收到修改后的短信內容,如下圖:
該類型漏洞對系統的影響不大,但若被攻擊者利用進行短信欺詐,將嚴重影響平台的聲譽,甚至可能會惹上法律糾紛。
代碼防護
針對惡意短信類的安全問題,我們建議可以通過以下兩種方式進行防護:
1、從服務端限制每個號碼的發送頻率和每天的發送次數,防止攻擊者利用短信接口進行惡意轟炸。
2、發送短信的內容應直接由系統內部進行定義,客戶端可通過數字或字符的方式,對所需要發送的內容進行選擇,如messagetype=1 為密碼找回,messtype=2為注冊,然后通過數字來索引要發送的內容。
9.增加抽獎機會
本來沒有抽獎的次數,點擊立即抽獎,fidder抓包,篡改狀態
將0改為1,去掉提示