隨著Web2.0、網(wǎng)絡(luò)社交等一系列新型的互聯(lián)網(wǎng)產(chǎn)品的誕生,基于Web環(huán)境的互聯(lián)網(wǎng)應(yīng)用越來(lái)越廣泛,企業(yè)信息化的過(guò)程中,越來(lái)越多的應(yīng)用都架設(shè)在Web平臺(tái)上。Web業(yè)務(wù)的迅速發(fā)展吸引了黑客們的強(qiáng)烈關(guān)注,接踵而至的就是Web安全威脅的凸顯。黑客利用網(wǎng)站操作系統(tǒng)的漏洞和Web服務(wù)程序的SQL注入漏洞等得到Web服務(wù)器的控制權(quán)限,輕則篡改網(wǎng)頁(yè)內(nèi)容,重則竊取重要內(nèi)部數(shù)據(jù),更為嚴(yán)重的則是在網(wǎng)頁(yè)中植入惡意代碼,使得網(wǎng)站訪問(wèn)者受到侵害。這使得越來(lái)越多的用戶(hù)關(guān)注應(yīng)用層的安全問(wèn)題,Web應(yīng)用安全的關(guān)注度也逐漸升溫。
SQL注入:
XSS跨站腳本攻擊
CSRF跨站請(qǐng)求偽造
任意文件讀?。?/p>
任意代碼執(zhí)行:
越權(quán)訪問(wèn):
敏感信息泄露:
越權(quán)訪問(wèn)
不安全的會(huì)話(huà)管理漏洞
用戶(hù)名/口令暴力爆破:
弱口令漏洞:
撞庫(kù)攻擊:
注冊(cè)模塊設(shè)計(jì)缺陷:
短信接口設(shè)計(jì)缺陷:
URL重定向漏洞:
DDOS拒絕服務(wù)漏洞
不足的日志記錄和監(jiān)控:
業(yè)務(wù)邏輯漏洞:
網(wǎng)絡(luò)安全通信協(xié)議:
SQL注入(SQL Injection),是一個(gè)常見(jiàn)的發(fā)生于應(yīng)用程序和數(shù)據(jù)庫(kù)之間的web安全漏洞,由于在開(kāi)發(fā)過(guò)程中的設(shè)計(jì)不當(dāng)導(dǎo)致程序中忽略了檢查,沒(méi)有有效的過(guò)濾用戶(hù)的輸入,是攻擊者可以向服務(wù)器提交不正常的訪問(wèn)數(shù)據(jù)(即惡意的SQL命令代碼),程序在接收后錯(cuò)誤的將攻擊者的輸入作為代碼語(yǔ)句的一部分執(zhí)行,導(dǎo)致原始的查詢(xún)邏輯被改變,額外的執(zhí)行了攻擊者靜態(tài)構(gòu)造的惡意代碼,從而繞過(guò)驗(yàn)證機(jī)制和權(quán)限檢查,達(dá)到取得隱藏?cái)?shù)據(jù)或覆蓋關(guān)鍵的參值,甚至執(zhí)行數(shù)據(jù)庫(kù)主機(jī)操作系統(tǒng)命令的目的。
SQL注入危害
數(shù)據(jù)庫(kù)信息泄露:數(shù)據(jù)庫(kù)中存放的用戶(hù)的隱私信息的泄露
網(wǎng)頁(yè)篡改:通過(guò)操作數(shù)據(jù)庫(kù)對(duì)特定網(wǎng)頁(yè)進(jìn)行篡改
網(wǎng)站被掛馬,傳播惡意軟件:修改數(shù)據(jù)庫(kù)一些字段的值,嵌入網(wǎng)頁(yè)鏈接,進(jìn)行掛馬攻擊。
數(shù)據(jù)庫(kù)被惡意操作:數(shù)據(jù)庫(kù)服務(wù)器被攻擊,數(shù)據(jù)庫(kù)的系統(tǒng)管理員賬戶(hù)被篡改。
服務(wù)器被遠(yuǎn)程控制,被安裝后門(mén)。經(jīng)由數(shù)據(jù)庫(kù)服務(wù)器提供的操作系統(tǒng)支持,讓黑客得以修改或控制操作系統(tǒng)。
破壞硬盤(pán)數(shù)據(jù),癱瘓全系統(tǒng)。
例子:
應(yīng)對(duì)方案:
過(guò)濾特殊字符:?jiǎn)我?hào)、雙引號(hào)、斜杠、反斜杠、冒號(hào)、空字符等的字符
過(guò)濾的對(duì)象:用戶(hù)的輸入;提交的URL請(qǐng)求中的參數(shù)部分;從cookie中得到的數(shù)據(jù);部署方SQL注入系統(tǒng)或腳本。
嚴(yán)格限制web應(yīng)用的數(shù)據(jù)庫(kù)的操作權(quán)限,給用戶(hù)提供僅能滿(mǎn)足需求的最低權(quán)限,從而最大限度的減少注入攻擊對(duì)數(shù)據(jù)庫(kù)的危害。
對(duì)進(jìn)入數(shù)據(jù)的特殊字符(‘ “ \ <> & *)進(jìn)行轉(zhuǎn)義處理(或編碼轉(zhuǎn)換)
不要直接拼接SQL語(yǔ)句,所有的查詢(xún)語(yǔ)句建議使用數(shù)據(jù)庫(kù)提供的參數(shù)化查詢(xún)接口,使用參數(shù)化的語(yǔ)句而不是將用戶(hù)輸入的變量嵌入SQL語(yǔ)句中。
在應(yīng)用發(fā)布之前建議使用專(zhuān)業(yè)的SQL注入檢測(cè)工具進(jìn)行檢測(cè),及時(shí)修補(bǔ)被檢測(cè)出的SQL注入漏洞。
避免網(wǎng)站打印SQL錯(cuò)誤信息,比如類(lèi)型錯(cuò)誤、字段不匹配等,可對(duì)異常信息做封裝,給出友好提示,不直接打印堆棧信息到前端。
跨站腳本漏洞(Cross-site scripting , xss),是一種常見(jiàn)的web安全漏洞,由于web應(yīng)用未對(duì)用戶(hù)提交的數(shù)據(jù)做充分的檢查過(guò)濾,允許用戶(hù)在提交的數(shù)據(jù)中摻入HTML代碼(最主要的是”>”,”<”),并將未經(jīng)轉(zhuǎn)義的惡意代碼輸出到第三方用戶(hù)的瀏覽器解釋執(zhí)行,從而導(dǎo)致XSS漏洞。攻擊成功后,攻擊者可以得到更高的權(quán)限、私密網(wǎng)頁(yè)內(nèi)容、會(huì)話(huà)和cookie等內(nèi)容。
XSS類(lèi)型包括:
(1)非持久型跨站:即反射型跨站腳本漏洞,是目前最普遍的跨站類(lèi)型。跨站代碼一般存在于鏈接中,請(qǐng)求這樣的鏈接時(shí),跨站代碼經(jīng)過(guò)服務(wù)端反射回來(lái),這類(lèi)跨站的代碼不存儲(chǔ)到服務(wù)端(比如數(shù)據(jù)庫(kù)中)。
(2)持久型跨站:這是危害最直接的跨站類(lèi)型,跨站代碼存儲(chǔ)于服務(wù)端(比如數(shù)據(jù)庫(kù)中)。常見(jiàn)情況是某用戶(hù)在論壇發(fā)貼,如果論壇沒(méi)有過(guò)濾用戶(hù)輸入的Javascript代碼數(shù)據(jù),就會(huì)導(dǎo)致其他瀏覽此貼的用戶(hù)的瀏覽器會(huì)執(zhí)行發(fā)貼人所嵌入的Javascript代碼。
(3)DOM跨站(DOM XSS):是一種發(fā)生在客戶(hù)端DOM(Document Object Model文檔對(duì)象模型)中的跨站漏洞,很大原因是因?yàn)榭蛻?hù)端腳本處理邏輯導(dǎo)致的安全問(wèn)題。
應(yīng)對(duì)方案:
1、與SQL注入防護(hù)的建議一樣,假定所有輸入都是可疑的,必須對(duì)所有輸入中的script、iframe等字樣進(jìn)行嚴(yán)格的檢查。這里的輸入不僅僅是用戶(hù)可以直接交互的輸入接口,也包括HTTP請(qǐng)求中的Cookie中的變量,HTTP請(qǐng)求頭部中的變量等。
2、不僅要驗(yàn)證數(shù)據(jù)的類(lèi)型,還要驗(yàn)證其格式、長(zhǎng)度、范圍和內(nèi)容。
3、針對(duì)請(qǐng)求參數(shù)以及用戶(hù)可控?cái)?shù)據(jù)進(jìn)行防御,對(duì)輸出進(jìn)行編碼處理。
4、在服務(wù)端對(duì)每一個(gè)輸入進(jìn)行合法性驗(yàn)證,只允許輸入常見(jiàn)符號(hào),字母以及數(shù)字。
5、對(duì)Cookie添加HttpOnly標(biāo)識(shí)。
跨站請(qǐng)求偽造(Cross-site request forgery , CSRF),是一種常見(jiàn)的web安全漏洞,由于在web請(qǐng)求中重要操作的所有參數(shù)可被猜測(cè)到,攻擊者可通過(guò)一些技術(shù)手段欺騙用戶(hù)的瀏覽器去訪問(wèn)一個(gè)用戶(hù)曾經(jīng)認(rèn)證過(guò)的網(wǎng)站,遂使攻擊者可冒用用戶(hù)的身份,進(jìn)行惡意操作。
應(yīng)對(duì)方案:
1、在表單中添加一個(gè)隨機(jī)的數(shù)字或字母驗(yàn)證碼,通過(guò)強(qiáng)制用戶(hù)和應(yīng)用進(jìn)行交互,來(lái)有效地遏制CSRF攻擊。
2、如果檢查發(fā)現(xiàn)是非正常頁(yè)面提交的請(qǐng)求(根據(jù)Referer進(jìn)行判斷),則極有可能是CSRF攻擊。
3、在請(qǐng)求的參數(shù)里增加一個(gè)隨機(jī)的token參數(shù),且不可被猜測(cè)。
4、敏感的操作應(yīng)該使用POST,而不是GET,以form表單的形式提交,可以避免token泄露。
任意文件讀取漏洞(Unrestricted File Upload),是一種常見(jiàn)的web安全漏洞,因web程序提供的文件查看下載、附件下載等功能存在安全缺陷,導(dǎo)致通過(guò)修改該文件路徑就能夠查看和下載任意文件,這些文件包括:源代碼文件、系統(tǒng)文件(/etc/passwd , C:/boot.ini等)、配置文件(config.php , /WEB-INF/web.xml , web.config等),造成網(wǎng)站敏感信息泄露,嚴(yán)重危害網(wǎng)站安全。
應(yīng)對(duì)方案:
1、服務(wù)端過(guò)濾特殊字符。(…./、 ….\、 ….\)
2、判斷用戶(hù)輸入的參數(shù)的格式是否合法。
3、指定文件類(lèi)型白名單(如:jpg\gif\png\rar\zip\pdf\doc\xls\ppt等),禁止用戶(hù)讀取、下載白名單以外的文件。
4、指定下載路徑,禁止用戶(hù)讀取、下載指定目錄以外的文件。
任意代碼執(zhí)行漏洞(Unrestrcted Code Execution),是一種常見(jiàn)的web安全漏洞,由于web程序沒(méi)有針對(duì)執(zhí)行函數(shù)做過(guò)濾,當(dāng)web程序應(yīng)用在調(diào)用一些能將字符串轉(zhuǎn)化成命令的函數(shù)(如PHP中的eval(),system(),exec())時(shí),沒(méi)有考慮做一些安全限制,導(dǎo)致可以通過(guò)構(gòu)造特殊代碼,執(zhí)行操作系統(tǒng)命令,致使攻擊者獲取到網(wǎng)站服務(wù)器權(quán)限。
應(yīng)對(duì)方案:
1、如果因使用的框架或中間件造成遠(yuǎn)程代碼執(zhí)行漏洞,需及時(shí)升級(jí)框架和中間件。
2、針對(duì)代碼中可執(zhí)行的特殊函數(shù)入口進(jìn)行過(guò)濾,嘗試對(duì)所有提交的可能執(zhí)行命令的語(yǔ)句進(jìn)行嚴(yán)格的檢查或者對(duì)外部輸入進(jìn)行控制,系統(tǒng)命令執(zhí)行函數(shù),不允許傳遞外部參數(shù)。
3、所有的過(guò)濾步驟要在服務(wù)器進(jìn)行,不僅要驗(yàn)證數(shù)據(jù)的類(lèi)型,還要驗(yàn)證期格式、長(zhǎng)度、范圍和內(nèi)容。
任意文件上傳(Unrestricted File Upload),是一種常見(jiàn)的web安全漏洞,由于web應(yīng)用程序在實(shí)現(xiàn)文件上傳功能是對(duì)上傳的文件缺少必要的檢查,使得攻擊者可上傳任意文件。利用該漏洞,攻擊者可以直接上傳webshell(webShell 就是以asp\php\jsp或者cgi等網(wǎng)頁(yè)文件形式存在的一種命令執(zhí)行環(huán)境,也可以將其稱(chēng)之為一種網(wǎng)頁(yè)后門(mén))、病毒、惡意腳本等各種危險(xiǎn)文件,可能導(dǎo)致服務(wù)器權(quán)限被直接獲取,從而危及整個(gè)系統(tǒng)的安全運(yùn)行。
應(yīng)對(duì)方案:
1、對(duì)用戶(hù)上傳的文件后綴采用白名單進(jìn)行限制,且重命名文件名。
2、限定文件上傳目錄,且該目錄不允許解析動(dòng)態(tài)腳本文件。
在最近幾年,這是最常見(jiàn)的、最具影響力的攻擊。這個(gè)領(lǐng)域最常見(jiàn)的漏洞是不對(duì)敏感信息進(jìn)行加密。在數(shù)據(jù)加密過(guò)程中,常見(jiàn)的問(wèn)題是不安全的密鑰生成和管理以及使用弱加密算法、弱協(xié)議和弱密碼。特別是使用弱的哈希算法來(lái)保護(hù)密碼。
攻擊者不是直接攻擊密碼,而是在傳輸過(guò)程中或從客戶(hù)端(例如:瀏覽器)竊取密鑰、發(fā)起中間人攻擊,或從服務(wù)器端竊取明文數(shù)據(jù)。
應(yīng)對(duì)方案:
1.應(yīng)對(duì)敏感信息進(jìn)行強(qiáng)加密再傳輸?shù)牟僮?,禁止一切敏感信息的明文傳輸,如:密碼明文傳輸?shù)取?/p>
2.對(duì)于配置文件的明文存儲(chǔ),可以使用 jasypt 進(jìn)行密鑰加密存儲(chǔ),增強(qiáng)安全性。
越權(quán)訪問(wèn)(Broken Access Control , BAC),是一種常見(jiàn)的web安全漏洞,這類(lèi)漏洞是指應(yīng)用在檢查授權(quán)(Authorization)時(shí)存在紕漏,使得攻擊者可以利用一些方式繞過(guò)權(quán)限檢查,訪問(wèn)或者操作到原本無(wú)權(quán)訪問(wèn)的界面。在實(shí)際的代碼安全審查中,這類(lèi)漏洞往往很難通過(guò)工具進(jìn)行自動(dòng)化檢測(cè),因此在實(shí)際應(yīng)用中危害很大。
應(yīng)對(duì)方案:
1、將用戶(hù)身份標(biāo)識(shí)存在session中并驗(yàn)證,不能把用戶(hù)身份標(biāo)識(shí)以參數(shù)形式置于HTTP請(qǐng)求中,應(yīng)該放在session中,并且僅通過(guò)session驗(yàn)證用戶(hù)身份。
2、禁止從Cookie參數(shù)中去判斷用戶(hù)所屬用戶(hù)組,應(yīng)該通過(guò)讀取session會(huì)話(huà)來(lái)判斷用戶(hù)所屬用戶(hù)組。
3、文件下載時(shí),禁止采用可被猜測(cè)的連續(xù)ID為參數(shù)進(jìn)行文件下載,下載文件時(shí)也應(yīng)判斷當(dāng)前用戶(hù)是否有權(quán)限下載目標(biāo)文件。
4、非普通用戶(hù)操作頁(yè)面嚴(yán)格做好權(quán)限管理,增刪改查操作需要驗(yàn)證當(dāng)前用戶(hù)權(quán)限。
token值信息直接在GET請(qǐng)求的URL上,造成token值的直接暴露,容易被日志記錄、搜索引擎等緩存,影響客戶(hù)會(huì)話(huà)安全。
應(yīng)對(duì)方案:
禁止token以GET方式傳遞,可從header中獲取。
用戶(hù)名/口令爆破(Brute-force attack),是一種常見(jiàn)的web安全漏洞,由于用戶(hù)登錄模塊缺少必要的防護(hù)機(jī)制,使用網(wǎng)站的注冊(cè)或登錄接口,攻擊者通過(guò)系統(tǒng)地組合所有可能性(例如登錄時(shí)用到的賬戶(hù)名、密碼等),并以窮舉法嘗試所有可能性破解用戶(hù)的賬戶(hù)名、密碼等敏感信息。
應(yīng)對(duì)方案:
1、增強(qiáng)驗(yàn)證碼機(jī)制,為防止驗(yàn)證碼被破解,可以適當(dāng)怎加驗(yàn)證碼生成的強(qiáng)度,例如中文圖形驗(yàn)證碼。
2、用戶(hù)名或密碼輸入錯(cuò)誤均提示“用戶(hù)名或密碼錯(cuò)誤”,防止黑客獲取到注冊(cè)用戶(hù)的信息。
3、限制用戶(hù)登錄失敗次數(shù)。
4、限制一定時(shí)間內(nèi)IP登錄失敗次數(shù)。
5、限制一系列驗(yàn)證碼的使用次數(shù),用完即失效。
弱口令(weak password),沒(méi)有嚴(yán)格和準(zhǔn)確的定義,通常認(rèn)為容易被別人(他們有可能對(duì)你很了解)猜測(cè)到或被破解工具破解的口令均為弱口令,如:生日、名字、簡(jiǎn)單的順序數(shù)字or字符。
應(yīng)對(duì)方案:
增強(qiáng)口令復(fù)雜度,驗(yàn)證碼類(lèi)可增加生成強(qiáng)度;密碼類(lèi)可增加密碼的復(fù)雜度。
1、不使用空口令或系統(tǒng)缺省的口令,這些口令眾所周之,為典型的弱口令。
2、口令長(zhǎng)度不小于8個(gè)字符。
3、口令應(yīng)該為以下四類(lèi)字符的組合,大寫(xiě)字母(A-Z)、小寫(xiě)字母(a-z)、數(shù)字(0-9)和特殊字符。每類(lèi)字符至少包含一個(gè)。如果某類(lèi)字符只包含一個(gè),那么該字符不應(yīng)為首字符或尾字符。
撞庫(kù)攻擊(Information Leakage Thinking Library Collision),是一種常見(jiàn)的針對(duì)web應(yīng)用的攻擊方式,為了方便記憶很多用戶(hù)在不同網(wǎng)站使用的同一賬號(hào)和密碼,黑客通過(guò)收集網(wǎng)絡(luò)已泄露的拖庫(kù)信息,特別是注冊(cè)用戶(hù)和密碼信息,生成對(duì)應(yīng)的字典表,嘗試批量自動(dòng)登陸其它網(wǎng)站驗(yàn)證后,得到一系列可以登錄的真實(shí)賬戶(hù)。
應(yīng)對(duì)方案:
1、增強(qiáng)驗(yàn)證碼機(jī)制,為防止驗(yàn)證碼被破解,可以適當(dāng)增加驗(yàn)證碼生成的強(qiáng)度,例如中文圖形驗(yàn)證碼。
2、自動(dòng)識(shí)別異常IP,對(duì)于異常IP,整理一個(gè)非常嚴(yán)格的惡意IP庫(kù),甚至禁止這些IP訪問(wèn)網(wǎng)站。
3、用戶(hù)賬戶(hù)被撞開(kāi)后的保護(hù),對(duì)用戶(hù)行為進(jìn)行分析,如判斷用戶(hù)的登錄IP是否在常用地區(qū),如果不是則直接鎖定賬號(hào),讓用戶(hù)通過(guò)收集、郵箱等手段來(lái)解鎖。
注冊(cè)模塊設(shè)計(jì)缺陷(Registration module design flaws),是一種常見(jiàn)的web安全漏洞,網(wǎng)站注冊(cè)模塊的設(shè)計(jì)缺陷將導(dǎo)致一下幾點(diǎn)安全漏洞:
1、任意用戶(hù)密碼找回。
2、暴力枚舉網(wǎng)站已注冊(cè)用戶(hù)。
3、暴力破解用戶(hù)密碼。
4、萬(wàn)能密碼登錄。
5、SQL注入。
以上安全問(wèn)題會(huì)帶來(lái)用戶(hù)密碼被盜、個(gè)人信息泄露、網(wǎng)站數(shù)據(jù)庫(kù)泄露、網(wǎng)站被入侵等風(fēng)險(xiǎn)。
應(yīng)對(duì)方案:
1、如果使用郵件驗(yàn)證的方式找回密碼,重置密碼令牌需要設(shè)置為不可猜測(cè),且加密令牌時(shí)使用通過(guò)加密的方式,而不是自己構(gòu)造;設(shè)置重置密碼會(huì)話(huà)過(guò)期時(shí)間,在重置密碼時(shí)不要從請(qǐng)求中獲取需要重置的用戶(hù)名。
2、如果使用短信驗(yàn)證的方式找回密碼,驗(yàn)證短信最少應(yīng)為6位,且短信過(guò)期時(shí)間不能超過(guò)10分鐘,在發(fā)送短信頁(yè)面添加經(jīng)過(guò)混淆過(guò)的圖形驗(yàn)證碼,并在后端設(shè)置單位時(shí)間內(nèi)的短信發(fā)送頻率。
3、限制單位時(shí)間內(nèi)認(rèn)證錯(cuò)誤次數(shù)。
4、在用戶(hù)注冊(cè)頁(yè)面、登錄界面,添加可靠的機(jī)器人識(shí)別功能,例如圖形驗(yàn)證碼或短信驗(yàn)證碼。
短信接口設(shè)計(jì)缺陷(SMS interface design flaws),是一種常見(jiàn)的web安全漏洞,短信接口通常用于注冊(cè)驗(yàn)證、登錄驗(yàn)證及其他敏感操作的驗(yàn)證上,但由于設(shè)計(jì)不當(dāng),通常會(huì)導(dǎo)致以下安全問(wèn)題:
1、短時(shí)間內(nèi)發(fā)送大量的手機(jī)短信。
2、短信驗(yàn)證碼過(guò)短易被猜測(cè)。
3、短信驗(yàn)證碼在發(fā)送多次時(shí),多個(gè)驗(yàn)證碼同時(shí)有效。
4、短信驗(yàn)證碼在HTTP相應(yīng)包中返回客戶(hù)端。
應(yīng)對(duì)方案:
1、在發(fā)送短信接口設(shè)置機(jī)器人識(shí)別機(jī)制,例如經(jīng)過(guò)混淆的圖形驗(yàn)證碼,在驗(yàn)證通過(guò)后方可發(fā)送手機(jī)短信。
2、用來(lái)驗(yàn)證的驗(yàn)證碼短信最少應(yīng)為6位,過(guò)期時(shí)間內(nèi)只能有一個(gè)驗(yàn)證碼有效,且有效時(shí)間不應(yīng)超過(guò)10分鐘。
3、不要把短信驗(yàn)證碼返回到客戶(hù)端。
4、短信驗(yàn)證碼在認(rèn)證一次后應(yīng)立即失效,輸入錯(cuò)誤需再次獲取。
URL重定向漏洞(URL redirection vulnerability),是一種常見(jiàn)的web安全漏洞,由于網(wǎng)站URL重定向功能設(shè)計(jì)不當(dāng),沒(méi)有驗(yàn)證跳轉(zhuǎn)的目標(biāo)URL是否合法,用戶(hù)可通過(guò)此漏洞轉(zhuǎn)到任意網(wǎng)站,這會(huì)導(dǎo)致可通過(guò)該網(wǎng)站跳轉(zhuǎn)到存在木馬、病毒的網(wǎng)站或者釣魚(yú)網(wǎng)站。
應(yīng)對(duì)方案:
1、不應(yīng)從用戶(hù)請(qǐng)求或填寫(xiě)的內(nèi)容中獲取跳轉(zhuǎn)的目標(biāo)URL,應(yīng)在后端設(shè)定跳轉(zhuǎn)URL。
2、對(duì)需要跳轉(zhuǎn)的目標(biāo)URL進(jìn)行驗(yàn)證,如果跳轉(zhuǎn)的URL不是所允許的,則禁止跳轉(zhuǎn)。
3、進(jìn)行URL時(shí)提示用戶(hù)并顯示跳轉(zhuǎn)的目標(biāo)URL地址并詢(xún)問(wèn)是否跳轉(zhuǎn)。
拒絕服務(wù)攻擊(denial-of-service attack , DOS),亦稱(chēng)“洪水攻擊”,是一種網(wǎng)絡(luò)攻擊手段,其目的在于使目標(biāo)電腦的網(wǎng)絡(luò)或系統(tǒng)資源耗盡,使服務(wù)暫時(shí)中斷或停止,導(dǎo)致其正常用戶(hù)無(wú)法訪問(wèn)。
拒絕服務(wù)的攻擊也可能導(dǎo)致與目標(biāo)計(jì)算機(jī)同一網(wǎng)絡(luò)中的其它計(jì)算機(jī)被攻擊?;ヂ?lián)網(wǎng)和局域網(wǎng)之間的帶寬會(huì)被攻擊并導(dǎo)致大量消耗,不但影響目標(biāo)計(jì)算機(jī),同時(shí)也影響局域網(wǎng)中的其他計(jì)算機(jī)。如果攻擊的規(guī)模較大,整個(gè)地區(qū)的網(wǎng)絡(luò)連接都可能會(huì)受到影響。
一種服務(wù)需要面向大眾就需要提供用戶(hù)訪問(wèn)接口,這些接口恰恰就給了黑客有可乘之機(jī),如:可以利用 TCP/IP 協(xié)議握手缺陷消耗服務(wù)端的鏈接資源,可以利用 UDP 協(xié)議無(wú)狀態(tài)的機(jī)制偽造大量的 UDP 數(shù)據(jù)包阻塞通信信道…… 可以說(shuō),互聯(lián)網(wǎng)的世界自誕生之日起就不缺乏被 DDoS 利用的攻擊點(diǎn),從 TCP/IP 協(xié)議機(jī)制到 CC、DNS、NTP 反射類(lèi)攻擊,更有甚者利用各種應(yīng)用漏洞發(fā)起更高級(jí)更精確的攻擊。
1、資源消耗類(lèi)攻擊
資源消耗類(lèi)是比較典型的 DDoS攻擊,最具代表性的包括:Syn Flood、Ack Flood、UDP
Flood。這類(lèi)攻擊的目標(biāo)很簡(jiǎn)單,就是通過(guò)大量請(qǐng)求消耗正常的帶寬和協(xié)議棧處理資源的能力,從而達(dá)到服務(wù)端無(wú)法正常工作的目的。
Syn Flood:SYN- Flood 攻擊是當(dāng)前網(wǎng)絡(luò)上常見(jiàn)的 DDoS 攻擊,它就是利用了 TCP 協(xié)議實(shí)現(xiàn)上的一個(gè)缺陷,通過(guò)向網(wǎng)絡(luò)服務(wù)所在端口發(fā)送大量 的偽造源地址的攻擊報(bào)文,就可能造成目標(biāo)服務(wù)器中的半開(kāi)連接隊(duì)列被占滿(mǎn),從而阻止其他合法用戶(hù)進(jìn)行訪問(wèn)。這種攻擊早在 1996 年就被發(fā)現(xiàn),但至今仍然顯示 出強(qiáng)大的生命力。很多操作系統(tǒng),甚至防火墻、路由器都無(wú)法有效地防御這種攻擊,而且由于它可以方便地偽造源地址,追查起來(lái)非常困難。它的數(shù)據(jù)包特征通常 是,源發(fā)送了大量的 SYN 包,并且缺少三次握手的最后一步握手 ACK 回復(fù)。
Syn Flood原理:攻擊者首先偽造地址對(duì) 服務(wù)器發(fā)起 SYN 請(qǐng)求,服務(wù)器回應(yīng) (SYN+ACK) 包,而真實(shí)的 IP 會(huì)認(rèn)為,我沒(méi)有發(fā)送請(qǐng)求,不作回應(yīng)。服務(wù) 器沒(méi)有收到回應(yīng),這樣的話(huà),服務(wù)器不知 道 (SYN+ACK) 是否發(fā)送成功,默認(rèn)情況下會(huì)重試 5 次(tcp_syn_retries)。這樣的話(huà),對(duì)于服務(wù)器的內(nèi)存,帶寬都有很大的消耗。攻擊者 如果處于公網(wǎng),可以偽造 IP 的話(huà),對(duì)于服務(wù)器就很難根據(jù) IP 來(lái)判斷攻擊者,給防護(hù)帶來(lái)很大的困難。
2、服務(wù)消耗性攻擊
相比資源消耗類(lèi)攻擊,服務(wù)消耗類(lèi)攻擊不需要太大的流量,它主要是針對(duì)服務(wù)的特點(diǎn)進(jìn)行精確定點(diǎn)打擊,如 web 的 CC,數(shù)據(jù)服務(wù)的檢索,文件服務(wù)的下載等。這類(lèi)攻擊往往不是為了擁塞流量通道或協(xié)議處理通道,它們是讓服務(wù)端始終處理高消耗型的業(yè)務(wù)的忙碌狀態(tài),進(jìn)而無(wú)法對(duì)正常業(yè)務(wù)進(jìn)行響應(yīng)
web 的CC攻擊:當(dāng)一個(gè)網(wǎng)頁(yè)訪問(wèn)的人數(shù)特別多的時(shí)候,打開(kāi)網(wǎng)頁(yè)就慢了,CC 就是模擬多個(gè)用戶(hù),多少線程就是多少用戶(hù),不停地進(jìn)行訪問(wèn)那些需要大量數(shù)據(jù)操作,就是需要大量 CPU 時(shí)間的頁(yè)面,造成服務(wù)器資源的浪費(fèi),CPU 長(zhǎng)時(shí)間處于 100%,永遠(yuǎn)都有處理不完的連接直至就網(wǎng)絡(luò)擁塞,正常的訪問(wèn)被中止。
應(yīng)對(duì)方案:
拒絕服務(wù)攻擊的防御方式通常為入侵檢測(cè),流量過(guò)濾和多重驗(yàn)證,意在堵塞網(wǎng)絡(luò)帶寬的流量將被過(guò)濾,而正常的流量可正常通過(guò)。
1、網(wǎng)絡(luò)設(shè)備:防火墻可以設(shè)置規(guī)則,例如允許或拒絕特定通訊協(xié)議、端口或IP地址。當(dāng)攻擊從少數(shù)不正常的IP地址發(fā)出時(shí),可以簡(jiǎn)單的使用拒絕規(guī)則阻止一切從攻擊源IP發(fā)出的通信。
2、黑洞引導(dǎo)/流量清洗:黑洞引導(dǎo)指將所有受攻擊計(jì)算機(jī)的通信全部發(fā)送至一個(gè)“黑洞”(空接口或不存在的計(jì)算機(jī)地址)或者有足夠能力處理洪流的網(wǎng)絡(luò)運(yùn)營(yíng)商,以避免網(wǎng)絡(luò)受到較大影響。當(dāng)流量被送到DDoS防護(hù)清洗中心時(shí),通過(guò)采用抗DDoS軟件處理,將正常流量和惡意流量區(qū)分開(kāi)。這樣一來(lái)可保障站點(diǎn)能夠正常運(yùn)作,處理真實(shí)用戶(hù)訪問(wèn)網(wǎng)站帶來(lái)的合法流量。
3、web服務(wù)器:升級(jí)web服務(wù)器,避免出現(xiàn)拒絕服務(wù)漏洞,如HTTP.sys(MS15-034)。
對(duì)不足的日志記錄及監(jiān)控的利用幾乎是每一個(gè)重大安全事件的溫床。攻擊者依靠監(jiān)控的不足和響應(yīng)的不及時(shí)來(lái)達(dá)成他們的目標(biāo)而不被知曉。
根據(jù)行業(yè)調(diào)查的結(jié)果,此問(wèn)題被列入了Top10。判斷你是否有足夠監(jiān)控的一個(gè)策略是在滲透測(cè)試后檢查日志。測(cè)試者的活動(dòng)應(yīng)被充分的記錄下來(lái),能夠反映出他們?cè)斐闪耸裁礃拥挠绊憽?/p>
多數(shù)成功的攻擊往往從漏洞探測(cè)開(kāi)始。允許這種探測(cè)會(huì)將攻擊成功的可能性提高到近100%;據(jù)統(tǒng)計(jì),在2016年確定一起數(shù)據(jù)泄露事件平均需要花191天時(shí)間,這么長(zhǎng)時(shí)間里損害早已發(fā)生。
應(yīng)對(duì)方案:
建議應(yīng)用系統(tǒng)開(kāi)啟審計(jì)功能,審計(jì)覆蓋所有用戶(hù)審計(jì)日志至少包括用戶(hù)的注冊(cè)、登錄、關(guān)鍵業(yè)務(wù)操作等行為進(jìn)行日志記錄,內(nèi)容包括但不限于用戶(hù)姓名、手機(jī)號(hào)碼、注冊(cè)時(shí)間、注冊(cè)地址、登錄時(shí)間、登錄地址、操作用戶(hù)信息、操作時(shí)間、操作內(nèi)容及操作結(jié)果等;
業(yè)務(wù)邏輯問(wèn)題是一種設(shè)計(jì)缺陷,邏輯缺陷表現(xiàn)為設(shè)計(jì)者或開(kāi)發(fā)者在思考過(guò)程中做出的特殊假設(shè)存在明顯或隱含的錯(cuò)誤。攻擊者會(huì)特別注意目標(biāo)應(yīng)用程序采用的邏輯方式,設(shè)法了解設(shè)計(jì)者與開(kāi)發(fā)者做出的可能假設(shè),然后考慮如何攻破這些假設(shè)。攻擊者挖掘邏輯漏洞有兩個(gè)重點(diǎn):業(yè)務(wù)流程、http/https請(qǐng)求篡改。
業(yè)務(wù)邏輯漏洞經(jīng)常出現(xiàn)的場(chǎng)景為:賬戶(hù)(注冊(cè)/登錄/密碼找回)、交易、支付、個(gè)人信息修改。
應(yīng)對(duì)方案:
應(yīng)用系統(tǒng)在開(kāi)發(fā)之前,盡量避免設(shè)計(jì)的缺陷,將容易出現(xiàn)重要業(yè)務(wù)邏輯漏洞的場(chǎng)景多做思考與設(shè)計(jì),利用多場(chǎng)景的用例推敲是否存在漏洞。
系統(tǒng)在數(shù)據(jù)傳輸過(guò)程中不具有保護(hù)其完整性的措施,通常講的就是http的網(wǎng)絡(luò)通訊協(xié)議,在此協(xié)議下會(huì)產(chǎn)生傳輸數(shù)據(jù)以明文形式顯示,無(wú)法保護(hù)數(shù)據(jù)的完整性。
應(yīng)對(duì)方案:
建議使用HTTPS安全網(wǎng)絡(luò)通訊協(xié)議,通過(guò)SSL或TLS提供加密處理數(shù)據(jù)、驗(yàn)證對(duì)方身份以及數(shù)據(jù)完整性保護(hù)。
此外,再將幾個(gè)比較常見(jiàn)的安全規(guī)范,如下。
預(yù)警級(jí)別安全規(guī)范:
1.管理后臺(tái)泄漏漏洞
管理后臺(tái)的帳號(hào)和密碼設(shè)計(jì)過(guò)于簡(jiǎn)單,容易被猜測(cè)到,導(dǎo)致攻擊者>可以暴力破解帳號(hào)密碼。
應(yīng)對(duì)方案:
將管理后臺(tái)的服務(wù)綁定到內(nèi)網(wǎng)ip上,禁止開(kāi)放在外網(wǎng)。
如果該管理后臺(tái)必須提供給外網(wǎng)訪問(wèn),則未登錄頁(yè)面不要顯示過(guò)多內(nèi)容,防止敏感信息泄漏,登錄帳號(hào)需經(jīng)過(guò)認(rèn)證,且密碼設(shè)置規(guī)則盡量復(fù)雜,增加驗(yàn)證碼,以防止暴力破解。
2.錯(cuò)誤詳情泄漏漏洞
頁(yè)面含有CGI處理錯(cuò)誤的代碼級(jí)別的詳細(xì)信息,例如sql語(yǔ)句執(zhí)行錯(cuò)誤原因,php的錯(cuò)誤行數(shù)等。
檢測(cè)方法:修改參數(shù)為非法參數(shù),看頁(yè)面返回的錯(cuò)誤信息是否泄漏了過(guò)于詳細(xì)的代碼級(jí)別的信息。
應(yīng)對(duì)方案:
將錯(cuò)誤信息對(duì)用戶(hù)透明化,在CGI處理錯(cuò)誤后可以返回友好的提示語(yǔ)以及返回碼。但是不可以提示用戶(hù)出錯(cuò)的代碼級(jí)別的詳細(xì)原因。
3.資源控制
應(yīng)用系統(tǒng)未對(duì)單個(gè)賬戶(hù)的多重并發(fā)會(huì)話(huà)進(jìn)行限制,會(huì)出現(xiàn)同個(gè)賬戶(hù),多個(gè)操作人同時(shí)在操作。
應(yīng)對(duì)方案:
可根據(jù)業(yè)務(wù)系統(tǒng)的需求定制會(huì)話(huà)的限制數(shù)量,類(lèi)似:同個(gè)賬戶(hù)在不同地方登錄時(shí)提示賬戶(hù)已登錄,提供踢出操作,同時(shí)提示被踢出用戶(hù)。