0x01 等保測評項(xiàng)
GBT 22239-2019《信息安全技術(shù) 網(wǎng)絡(luò)安全等級保護(hù)基本要求》中,8.1.4.4安全計算環(huán)境—入侵防范項(xiàng)中要求包括:a)應(yīng)遵循最小安裝的原則,僅安裝需要的組件和應(yīng)用程序;b)應(yīng)關(guān)閉不需要的系統(tǒng)服務(wù)、默認(rèn)共享和高危端口;c)應(yīng)通過設(shè)定終端接入方式或網(wǎng)絡(luò)地址范圍對通過網(wǎng)絡(luò)進(jìn)行管理的管理終端進(jìn)行限制;d)應(yīng)提供數(shù)據(jù)有效性檢驗(yàn)功能,保證通過人機(jī)接口輸入或通過通信接口輸入的內(nèi)容符合系統(tǒng)設(shè)定要求;e)應(yīng)能發(fā)現(xiàn)可能存在的已知漏洞,并在經(jīng)過充分測試評估后,及時修補(bǔ)漏洞;f)應(yīng)能夠檢測到對重要節(jié)點(diǎn)進(jìn)行入侵的行為,并在發(fā)生嚴(yán)重入侵事件時提供報警。驗(yàn)證碼缺失/繞過對應(yīng)訪問控制項(xiàng)中要求e),所以安全控制點(diǎn)為入侵防范e。
GBT 28448-2019《信息安全技術(shù) 網(wǎng)絡(luò)安全等級保護(hù)測評要求》中,測評單元(L3-CES1-21) 該測評單元包括以下要求: a)測評指標(biāo):應(yīng)能發(fā)現(xiàn)可能存在的已知漏洞,并在經(jīng)過充分測試評估后,及時修補(bǔ)漏洞。;b)測評對象:終端和服務(wù)器等設(shè)備中的操作系統(tǒng)(包括宿主機(jī)和虛擬主機(jī)操作系統(tǒng))、網(wǎng)絡(luò)設(shè)備(包括虛擬網(wǎng)絡(luò)設(shè)備)、安全設(shè)備(包括虛擬安全設(shè)備)、移動終端、移動終端管理系統(tǒng)、移動終端管理客戶端、感知節(jié)點(diǎn)設(shè)備、網(wǎng)關(guān)節(jié)點(diǎn)設(shè)備、控制設(shè)備、業(yè)務(wù)應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、中間件和系統(tǒng)管理軟件等。c)測評實(shí)施包括以下內(nèi)容:1)應(yīng)通過漏洞掃描、滲透測試等方式核查是否不存在高危風(fēng)險漏洞;2)應(yīng)核查是否在經(jīng)過充分測試評估后及時修補(bǔ)漏洞;d)單元判定:如果1)和2)均為肯定,則符合本測評單元指標(biāo)要求,否則不符合或部分符合本測評單元指標(biāo)要求驗(yàn)證碼缺失/繞過屬于測評單元(L3-CES1-21)中測評實(shí)施的第1項(xiàng),故定測評單元為L3-CES1-21.1。
0x02 測試內(nèi)容
通過攔截調(diào)用驗(yàn)證碼處相關(guān)數(shù)據(jù)包,如登錄功能、密碼找回、留言提交等處,測試驗(yàn)證碼是否有效,是否可以進(jìn)行繞過或重復(fù)利用。
0x03 漏洞原理
驗(yàn)證碼是什么
驗(yàn)證碼是一種區(qū)分用戶是計算機(jī)還是人的公共自動程序。這個問題可以由計算機(jī)生成并評判,但是必須只有人類才能解答。由于計算機(jī)無法解答驗(yàn)證碼的問題,所以回答出問題的用戶就可以被認(rèn)為是人類。
驗(yàn)證碼有中文字、純數(shù)字、英文字母、點(diǎn)擊字符串、圖片圖形、數(shù)學(xué)運(yùn)算等等。
驗(yàn)證碼的作用
?進(jìn)行人機(jī)校驗(yàn);
?驗(yàn)證使用者身份,判斷當(dāng)前賬戶使用者是否是賬戶的擁有者;
?防止惡意的IP頻繁訪問;
?防止惡意操作導(dǎo)致用戶本身受損失;
?防止暴力破解;
?防止惡意灌水;
?防止刷票;
驗(yàn)證碼分類常見的驗(yàn)證碼有:短信驗(yàn)證碼、語音驗(yàn)證碼、圖文驗(yàn)證碼、數(shù)字驗(yàn)證碼等等。形式多樣核心內(nèi)容一致,根據(jù)形式的不同就有了分門別類的應(yīng)用。具體可看之前寫的文章《滲透遇見驗(yàn)證碼,跑路?or 拿下它?》。
根據(jù)作用可分為以下兩種:
?區(qū)分用戶是計算機(jī)還是人的公共全自動程序,比如Google登錄時的驗(yàn)證碼、12306圖片識別的點(diǎn)擊式驗(yàn)證碼等。
?識別身份的驗(yàn)證碼,用于識別用戶是否為賬號的所有者,比如短信驗(yàn)證碼、郵箱驗(yàn)證碼、電話驗(yàn)證碼等。
驗(yàn)證碼繞過
驗(yàn)證碼大致可通過以下兩種思路進(jìn)行繞過
1. 識別法:腳本+深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)的知識;
2. 邏輯繞過,開發(fā)人員寫驗(yàn)證碼校驗(yàn)代碼時產(chǎn)生邏輯錯誤。
無驗(yàn)證碼
應(yīng)用登錄功能未設(shè)置驗(yàn)證碼校驗(yàn)機(jī)制,且無登錄失敗次數(shù)過多鎖定策略,這種情況下可直接嘗試進(jìn)行暴力破解。
驗(yàn)證碼為空值
有驗(yàn)證碼機(jī)制,但是在請求包中將驗(yàn)證碼參數(shù)刪除,服務(wù)器端就不進(jìn)行驗(yàn)證碼校驗(yàn),會直接校驗(yàn)賬戶、密碼;或者雖然頁面中顯示有驗(yàn)證碼機(jī)制,但在不填寫驗(yàn)證碼直接輸入用戶名、密碼的情況下,可直接登錄,存在爆破風(fēng)險。
萬能驗(yàn)證碼
0000、1111、8888、000000、123456等,一般多出現(xiàn)于設(shè)備、硬件設(shè)備。
驗(yàn)證碼藏于Cookie中
一般情況下系統(tǒng)會將驗(yàn)證碼的值用Session存儲起來,再通過對比用戶提交的驗(yàn)證碼和Session中的驗(yàn)證,就可以知道用戶輸入的是否正確. 但由于Session 會占用服務(wù)器資源,有些程序員會將驗(yàn)證碼的值加密后存儲在Cookie中。針對這種情況,攻擊者可以通過抓取登錄數(shù)據(jù)包,分析包中的Cookie字段,查看其中有沒有相匹配的驗(yàn)證碼或者是經(jīng)過簡單加密后的驗(yàn)證碼。
驗(yàn)證碼隱藏于源碼中
記住驗(yàn)證碼,打開網(wǎng)站源碼,用Ctrl+F搜索,如果搜索到剛才輸入的驗(yàn)證碼,就說明驗(yàn)證碼被隱藏于源碼中,接下來就可以使用工具提取源碼中的驗(yàn)證碼并將其放入每次的請求包中,對用戶名、密碼進(jìn)行破解。
前端校驗(yàn)驗(yàn)證碼
前端對驗(yàn)證碼進(jìn)行校驗(yàn),相當(dāng)于沒有設(shè)置驗(yàn)證碼,可通過抓包查看是否有驗(yàn)證碼傳參,或禁用JS進(jìn)行繞過。
驗(yàn)證碼未進(jìn)行校驗(yàn)
代碼雖設(shè)置有驗(yàn)證碼模塊,但未對驗(yàn)證碼進(jìn)行校驗(yàn),隨機(jī)輸入就可驗(yàn)證成功;
驗(yàn)證碼可控
某些系統(tǒng)獲取驗(yàn)證碼的方式為通過參數(shù)的方式去加載,比如http://www.123.com/yanzhengma.php?code=**** 等,攻擊者就可以嘗試將參數(shù)code的值改為undefined,即設(shè)為控制;也可以通過便便攜腳本的方式獲取驗(yàn)證碼并傳入驗(yàn)證流程。
驗(yàn)證碼重復(fù)使用
應(yīng)用程序設(shè)置了驗(yàn)證碼校驗(yàn)機(jī)制,但是驗(yàn)證碼可重復(fù)使用,沒有過期限制,相當(dāng)于無驗(yàn)證機(jī)制。一般是在某一段時間內(nèi),無論登錄失敗多少次,只要不刷新頁面或者不刷新驗(yàn)證碼,就可以無限次的使用同一個驗(yàn)證碼來對一個或多個用戶帳號進(jìn)行暴力猜解。換句話說,攻擊者可以在同一個會話下,在獲得第一個驗(yàn)證碼后,后面不再主動觸發(fā)驗(yàn)證碼生成頁面,并且一直使用第一個驗(yàn)證碼就可循環(huán)進(jìn)行后面的表單操作,從而繞過了驗(yàn)證碼的校驗(yàn)作用,對登錄進(jìn)行暴力猜解。
驗(yàn)證碼有規(guī)律
驗(yàn)證碼有生成規(guī)則而非隨機(jī)驗(yàn)證碼,比如某些系統(tǒng)會設(shè)置驗(yàn)證碼為時間戳的后6位。
驗(yàn)證碼包含于返回包中
由于開發(fā)在寫代碼時不嚴(yán)謹(jǐn)導(dǎo)致通過抓包可在返回包中查看以明文或者簡單加密的驗(yàn)證碼,這種情況相當(dāng)于驗(yàn)證碼直接返回,攻擊者可利用此漏洞進(jìn)行任意賬戶注冊、任意用戶密碼重置、修改綁定信息等。
驗(yàn)證碼可識別
若驗(yàn)證碼過于簡單,就可以使用工具對圖案進(jìn)行識別,比如驗(yàn)證碼識別工具Pkav HTTP Fuzzer。
驗(yàn)證碼輸出至HTML頁面
應(yīng)用程序登錄功能、找回密碼等處設(shè)置了短信/郵件驗(yàn)證碼校驗(yàn)機(jī)制,但驗(yàn)證機(jī)制存在問題,發(fā)送的驗(yàn)證碼直接輸出到客戶端HTML頁面。
0x04 代碼示例
Pikachu漏洞練習(xí)平臺驗(yàn)證碼繞過(on server) 源碼vulurteforcef_server.php文件中,在用戶名、密碼和驗(yàn)證碼均不為空的情況下判斷輸入驗(yàn)證碼是否與生成后保存在session中的驗(yàn)證碼相同,但比較完后并沒有刪除該session,導(dǎo)致下一個數(shù)據(jù)包輸入該驗(yàn)證碼也會判斷正確,出現(xiàn)驗(yàn)證碼重復(fù)使用漏洞。
0x05 測試案例
測試案例1
驗(yàn)證碼有條件不刷新某些時候會有這種情況:用戶在登錄失敗后,系統(tǒng)會打開一個新的頁面或者出現(xiàn)彈窗,提示用戶登錄失敗,點(diǎn)擊“確定”后返回登錄界面,驗(yàn)證碼也會刷新。但是這種情況下,只要我們不關(guān)閉新窗口、彈窗,直接使用BurpSuite截取登錄請求包,先發(fā)送至Repeater模塊,多“Go”幾次,看看會不會返回“驗(yàn)證碼錯誤”的提示信息,如果依舊返回“密碼錯誤”則說明驗(yàn)證碼不進(jìn)行刷新。再將數(shù)據(jù)包發(fā)送到Intruder模塊,把密碼設(shè)為變量再進(jìn)行MD5編碼,就可直接爆破了。
不點(diǎn)擊【確定】
多Go幾次,判斷驗(yàn)證碼是否會刷新。
將密碼編碼,爆破。
從返回包中可以看到仍舊提示“密碼錯誤”,驗(yàn)證碼是不失效的。正常使用的時候,直接上弱口令字典跑就是,跟平常的爆破操作一樣。(為寫文章隨變寫了幾個弱口令進(jìn)行測試截圖)
測試案例2
驗(yàn)證碼識別抓包查看此系統(tǒng)未采用前端校驗(yàn)驗(yàn)證碼,多次刷新驗(yàn)證碼發(fā)現(xiàn)驗(yàn)證碼易識別,決定采用識別工具進(jìn)行識別爆破。
右鍵復(fù)制驗(yàn)證碼地址
使用Pkav工具進(jìn)行驗(yàn)證碼識別。
確認(rèn)可以正常識別驗(yàn)證碼后,對賬號、密碼進(jìn)行爆破。
0x06 風(fēng)險分析
?在資金提現(xiàn)、轉(zhuǎn)賬、充值、修改銀行卡、修改密碼等的重要操作,驗(yàn)證碼可以啟到防賬戶盜用、篡改賬戶、的作用;
?如果網(wǎng)站有提交表單的功能,并且需要由站點(diǎn)管理員審核才可通過,惡意用戶會產(chǎn)生大量的垃圾表單,影響網(wǎng)站訪問速度,加大工作量,且合法用戶的請求有可能會因此被拒絕服務(wù);
?惡意用戶可利用程序發(fā)送短信/郵件的功能,發(fā)送大量垃圾郵件/短信,造成短信/郵件轟炸,影響用戶體驗(yàn)及站點(diǎn)短信服務(wù)過度消費(fèi);
?通常在網(wǎng)站的用戶注冊、密碼找回、登錄等頁面處使用驗(yàn)證碼,但當(dāng)這些驗(yàn)證碼具有一定的規(guī)律性并且沒有做好對應(yīng)的防護(hù)措施時會導(dǎo)致攻擊者通過爆破等方式猜解/繞過驗(yàn)證碼機(jī)制,可導(dǎo)致任意用戶注冊、批量注冊無用賬戶、重置任意用戶密碼、獲取系統(tǒng)權(quán)限等危害。
?系統(tǒng)易遭受DDOS攻擊;
?機(jī)器人自動批量注冊;
?對特定的注冊用戶用特定程序爆破方式進(jìn)行不斷的登錄、“灌水”、“刷單”、短信/電子郵件轟炸等;
0x07 加固建議
1. 不要把驗(yàn)證方式置于前端,手機(jī)號和短信驗(yàn)證碼在服務(wù)端進(jìn)行唯一性綁定驗(yàn)證;
2. 在服務(wù)端限制短信驗(yàn)證碼發(fā)送周期,設(shè)置時效性,限制發(fā)送次數(shù);
3. 封禁的應(yīng)該是惡意請求的手機(jī)號而不是IP地址,對一天內(nèi)每一個手機(jī)號獲得的驗(yàn)證碼次數(shù)進(jìn)行限制;
4. 手機(jī)驗(yàn)證碼生成6位或者以上的數(shù)字+字母組合的驗(yàn)證碼,并且保證用后即失效;
5. 禁止用戶自定義短信內(nèi)容;
6. 在服務(wù)器進(jìn)行有效驗(yàn)證,手機(jī)號和驗(yàn)證碼在服務(wù)器進(jìn)行唯一性綁定驗(yàn)證等。
審核編輯 :李倩
-
服務(wù)器
+關(guān)注
關(guān)注
13文章
9759瀏覽量
87655 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3912瀏覽量
66024 -
網(wǎng)絡(luò)設(shè)備
+關(guān)注
關(guān)注
0文章
326瀏覽量
30392 -
數(shù)據(jù)包
+關(guān)注
關(guān)注
0文章
269瀏覽量
24955
原文標(biāo)題:0x07 加固建議
文章出處:【微信號:Tide安全團(tuán)隊(duì),微信公眾號:Tide安全團(tuán)隊(duì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
CDCEL949寄存器寫不進(jìn)去,讀出來全是0x07,為什么?
請問AFE5801的寄存器0x07[0]功能是什么?
ADS7841發(fā)送控制字節(jié)0x97的時候,ADOUT引腳不是一直保持低電平,而是會發(fā)送0x07呢?
1602液晶中代碼0x07整屏左移的用法,求助?。。?/a>
調(diào)試AD9854寫入0x04,0x05,0x06,0x07這四個地址的值只有在相同的情況下輸出波形才會好看
i2c地址范圍是0x00到0x07嗎
CPU地址信號處于0x000000~0x07FFFFFF之間時nGCS0信號有效怎么理解?
為什么例程中寫入的是LCD_WriteReg(0x07,0x0101)?
發(fā)射模塊返回的狀態(tài)寄存器STATUS值一直為0x07是為什么?
單片機(jī)實(shí)驗(yàn)2:數(shù)碼管動態(tài)顯示0-F

立體封裝模塊加固建議

關(guān)于立體封裝模塊加固的建議

評論