Web服務(wù)端漏洞類型
本文介紹常見的Web服務(wù)端安全漏洞。
SQL注入攻擊
SQL注入攻擊(SQL Injection),簡稱注入攻擊、SQL注入,被廣泛用于非法獲取網(wǎng)站控制權(quán),是發(fā)生在應(yīng)用程序的數(shù)據(jù)庫層上的安全漏洞。由于在設(shè)計(jì)程序時,忽略了對輸入字符串中夾帶的SQL指令的檢查,被數(shù)據(jù)庫誤認(rèn)為是正常的SQL指令而運(yùn)行,進(jìn)而使數(shù)據(jù)庫受到攻擊,可能導(dǎo)致數(shù)據(jù)被竊取、更改、刪除,甚至執(zhí)行系統(tǒng)命令,以及進(jìn)一步導(dǎo)致網(wǎng)站被嵌入惡意代碼、被植入后門程序等危害。
常見發(fā)生位置
URL參數(shù)提交,主要為GET請求參數(shù)。
表單提交,主要是POST請求,也包括GET請求。
Cookie參數(shù)提交。
HTTP請求頭部的一些可修改的值,例如Referer、Host等。
一些邊緣的輸入點(diǎn),例如MP3文件、圖片文件的一些文件信息等。
防御措施
使用預(yù)編譯語句:一般情況下,防御SQL注入的最佳方式是使用預(yù)編譯語句綁定變量。該方式對現(xiàn)有代碼的改動量較大。
使用存儲過程:使用安全的存儲過程可在一定程度上對抗SQL注入,但要注意采用此方法無法保證100%安全。
嚴(yán)格檢查用戶數(shù)據(jù):對用戶傳入的數(shù)據(jù)類型及內(nèi)容進(jìn)行嚴(yán)格的檢查。
檢查數(shù)據(jù)類型:例如,利用ID查詢時判斷是否為整型,輸入郵箱時判斷郵箱格式,輸入時間、日期等必須嚴(yán)格按照時間、日期格式等。
檢查數(shù)據(jù)內(nèi)容:例如,嚴(yán)格檢測用戶提交數(shù)據(jù)中是否包含敏感字符或字符串,是否匹配某種注入規(guī)則,嚴(yán)格轉(zhuǎn)義特殊字符等。
此方法雖然便于實(shí)施,但容易產(chǎn)生誤報和漏報,且容易被繞過。
其他:使用安全的編碼函數(shù)、統(tǒng)一各數(shù)據(jù)層編碼格式(例如統(tǒng)一使用UTF-8格式等)、嚴(yán)格限制數(shù)據(jù)庫用戶權(quán)限、定期進(jìn)行代碼黑盒白盒掃描、避免將錯誤信息顯示到頁面等。
文件上傳
文件上傳漏洞是指由于程序代碼未對用戶提交的文件進(jìn)行嚴(yán)格的分析和檢查,導(dǎo)致攻擊者可以上傳可執(zhí)行的代碼文件,從而獲取Web應(yīng)用的控制權(quán)限(GetShell)。
常見發(fā)生位置
所有使用到上傳功能的位置。
用戶可自定義的頭像、背景圖片等。
富文本編輯器中的文件上傳功能。
防御措施
將上傳目錄權(quán)限設(shè)置為不可執(zhí)行。
嚴(yán)格判斷文件類型,使用白名單而不是黑名單(注意大小寫問題)。需要注意與Web Server相關(guān)的漏洞所造成的問題,例如Apache、IIS、Nginx 等Web服務(wù)器的文件解析漏洞。
使用隨機(jī)數(shù)改寫上傳后的文件名和文件路徑。
單獨(dú)設(shè)置文件服務(wù)器及域名。
權(quán)限漏洞
訪問控制是指用戶對系統(tǒng)所有訪問的權(quán)限控制,通常包括水平權(quán)限和垂直權(quán)限。訪問控制問題是所有業(yè)務(wù)系統(tǒng)都可能產(chǎn)生的邏輯類漏洞,很難通過日常的安全工具掃描或防護(hù),通常會造成大量用戶數(shù)據(jù)泄露事件。
水平越權(quán):同一權(quán)限(角色)級別的用戶之間所產(chǎn)生的問題,例如A用戶可以未授權(quán)訪問B用戶的數(shù)據(jù)等。
垂直越權(quán):不同權(quán)限(角色)級別的用戶之間所產(chǎn)生的問題,例如普通用戶可未授權(quán)進(jìn)行管理操作,未登錄用戶可以訪問需授權(quán)應(yīng)用等。
常見發(fā)生位置
所有涉及到與用戶相關(guān)數(shù)據(jù)的位置,例如用戶資料、地址、訂單等。
所有涉及到登錄及權(quán)限控制的位置,例如后臺登錄、當(dāng)前用戶權(quán)限校驗(yàn)等。
防御措施
對于所有涉及到用戶數(shù)據(jù)的操作,嚴(yán)格判斷當(dāng)前用戶的身份。
對于所有需要權(quán)限控制的位置,嚴(yán)格校驗(yàn)用戶權(quán)限級別。
暴力破解
暴力破解是指攻擊者通過遍歷或字典的方式,向目標(biāo)發(fā)起大量請求,通過判斷返回?cái)?shù)據(jù)包的特征來找出正確的驗(yàn)證信息,從而繞過驗(yàn)證機(jī)制。隨著互聯(lián)網(wǎng)眾多網(wǎng)站的數(shù)據(jù)庫被泄露,攻擊者選擇的樣本可以更具針對性,暴力破解的成功率也在不斷上升。
常見發(fā)生位置
用戶登錄處的賬號密碼暴力破解。
人機(jī)驗(yàn)證機(jī)制容易繞過,例如使用較易識別的驗(yàn)證碼。
找回密碼或二次身份驗(yàn)證等可能用到的手機(jī)短信驗(yàn)證碼。
防御措施
強(qiáng)制使用強(qiáng)密碼,并定期修改。
限制密碼錯誤嘗試次數(shù)。
使用強(qiáng)人機(jī)驗(yàn)證機(jī)制。
限制一定時間內(nèi)的高頻訪問次數(shù)。
拒絕服務(wù)攻擊
拒絕服務(wù)攻擊(DoS,Denial of Service)是利用合理的請求造成資源過載,從而導(dǎo)致服務(wù)不可用的一種攻擊方式。分為針對Web應(yīng)用層的攻擊及針對客戶端或App的攻擊。
常見發(fā)生位置
Web層拒絕服務(wù)攻擊常見于會大量消耗資源的位置,例如查找功能等。
客戶端或App拒絕服務(wù)攻擊常見于異常輸入數(shù)據(jù)造成的程序崩潰。
防御措施
針對Web層拒絕服務(wù)攻擊:
限制每個客戶端的請求頻率。
使用驗(yàn)證碼過濾自動攻擊者。
優(yōu)化應(yīng)用代碼的性能、網(wǎng)絡(luò)架構(gòu)等。
針對客戶端或App拒絕服務(wù)攻擊:
刪除不必要的組件。
對用戶輸入數(shù)據(jù)進(jìn)行過濾和檢查。
敏感信息泄露
敏感信息泄露是指包括用戶信息、企業(yè)員工信息、內(nèi)部資料等不應(yīng)當(dāng)被外部訪問到的數(shù)據(jù)通過網(wǎng)站、接口、外部存儲等途徑被未授權(quán)泄露到外部的漏洞。信息泄露漏洞會導(dǎo)致大量用戶或企業(yè)信息被惡意利用,進(jìn)行詐騙、賬戶竊取等,給用戶和企業(yè)帶來嚴(yán)重的不良影響。并且信息一旦被泄露,影響會很難消除。
常見發(fā)生位置
獲取用戶、企業(yè)信息等數(shù)據(jù)的網(wǎng)站或客戶端接口。
企業(yè)可訪問到的外部存儲,例如網(wǎng)盤、郵箱等。
其他一切可能泄露數(shù)據(jù)的途徑。
防御措施
對數(shù)據(jù)接口進(jìn)行嚴(yán)格的權(quán)限檢查和訪問限制。劃分企業(yè)安全邊界,限制內(nèi)部數(shù)據(jù)外流,例如禁止訪問外部存儲應(yīng)用等,提高員工數(shù)據(jù)安全意識。
業(yè)務(wù)邏輯漏洞
業(yè)務(wù)邏輯漏洞是指由于業(yè)務(wù)在設(shè)計(jì)時考慮不全所產(chǎn)生的流程或邏輯上的漏洞。例如:
用戶找回密碼缺陷,攻擊者可重置任意用戶密碼。
短信炸彈漏洞,攻擊者可無限制利用接口發(fā)送短信,惡意消耗企業(yè)短信資費(fèi),騷擾用戶等。
由于業(yè)務(wù)邏輯漏洞跟業(yè)務(wù)問題貼合緊密,常規(guī)的安全設(shè)備無法有效檢測出,還需要人工根據(jù)業(yè)務(wù)場景及特點(diǎn)進(jìn)行分析檢測。
常見發(fā)生位置
所有涉及到用戶交互的位置。
防御措施
針對業(yè)務(wù)場景進(jìn)行全面的檢測。
安全配置缺陷
安全配置缺陷包括文件遍歷、源碼泄露、配置文件泄露等。
文件遍歷:可以瀏覽服務(wù)器Web目錄下的文件列表,可能會泄露重要文件。
源碼泄露:可以查到的Web程序的源代碼。
配置文件泄露:Web服務(wù)器及程序代碼的配置文件泄露等。
防御措施
檢查所有可能存在安全配置問題的點(diǎn),在滿足業(yè)務(wù)需求的情況下,最大化安全配置。