看書過程中一些摘抄和不理解之處的記錄溶浴。
1屁柏、瀏覽器安全
惡意網(wǎng)址攔截:常見的惡意網(wǎng)址分為兩類:一類是掛馬網(wǎng)站,這些網(wǎng)站通常包含有惡意的腳本如JavaScript或Flash餐弱,通過利用瀏覽器的漏洞(包括一些插件焕檬、空控件漏洞)執(zhí)行shellcode姆坚,在用戶電腦中植入木馬;另一類是釣魚網(wǎng)站实愚,通過模仿知名網(wǎng)站的相似頁面來欺騙用戶兼呵。
2、跨站腳本攻擊(XSS)
1)跨站腳本攻擊:英文全稱是Cross Site Script腊敲,本來縮寫是CSS击喂,但是為了和層疊樣式表(Cascading Style Sheet,CSS)有所區(qū)別碰辅,所以在安全領(lǐng)域叫做“XSS”懂昂。
2)XSS根據(jù)效果的不同可以分為以下幾類:
??? 第一種類型:反射型XSS。反射型XSS只是簡單地把用戶輸入的數(shù)據(jù)“反射”給瀏覽器没宾。也就是說凌彬,黑客往往需要誘使用戶“點擊”一個惡意鏈接,才能攻擊成功循衰。
??? 第二種類型:存儲型XSS铲敛。存儲型XSS會把用戶輸入的數(shù)據(jù)“存儲”在服務(wù)器端。這種XSS具有很強的穩(wěn)定性会钝。比較常見的一個場景就是伐蒋,黑客寫下一篇包含有惡意JavaScript代碼的博客文章,文章發(fā)表后,所有訪問該博客文章的用戶先鱼,都會在他們的瀏覽器中執(zhí)行這段惡意的JavaScript代碼徒蟆。黑客把惡意的腳本保存到服務(wù)器端,所以這種XSS攻擊就叫做“存儲型XSS”型型。
? ? 第三種類型:DOM Based XSS段审。實際上,這種類型的XSS并非按照“數(shù)據(jù)是否保存在服務(wù)器端”來劃分闹蒜,DOM Based XSS從效果上來說也算是反射型XSS寺枉。單獨劃分出來,是因為DOM Based XSS的形成原因比較特別绷落。發(fā)現(xiàn)它的安全專家專門提出了這種類型的XSS姥闪。出于歷史原因,也就把它單獨作為一個分類了砌烁。通過修改頁面的DOM節(jié)點性成果的XSS筐喳,稱為DOM Based XSS。
3)初探XSS Payload
一個最常見的XSS Payload函喉,就是通過讀取瀏覽器的Cookie對象避归,從而發(fā)起“Cookie劫持”攻擊。Cookie中一般加密保存了當(dāng)前用戶的登錄憑證管呵。Cookie如果丟失梳毙,往往意味著用戶的登錄憑證丟失。換句話說捐下,攻擊者可以不通過密碼账锹,而直接登錄進(jìn)用戶的賬戶。
4)強大的XSS Payload
XSS攻擊后坷襟,攻擊者除了可以實施“Cookie劫持”外奸柬,還能夠通過模擬GET、POST請求操作用戶的瀏覽器婴程。這在某些隔離壞境中會非常有用廓奕,比如“Cookie劫持”失效時,或者目標(biāo)用戶的網(wǎng)絡(luò)不能訪問互聯(lián)網(wǎng)的情況排抬。
同時懂从,大部分攻擊者是不知道用戶的“Old Password”的授段。為了竊取密碼蹲蒲,攻擊者可以將XSS與“釣魚”相結(jié)合。實現(xiàn)思路很簡單侵贵,利用JavaScript在當(dāng)前頁面上“畫出”一個偽造的登錄框届搁,當(dāng)用戶在登錄框中輸入用戶名與密碼后,其密碼將被發(fā)送至黑客的服務(wù)器上。
在很多時候卡睦,攻擊者為了獲取更大的利益宴胧,往往需要準(zhǔn)確地收集用戶的個人信息。比如表锻,如果知道用戶使用的瀏覽器恕齐、操作系統(tǒng),攻擊者就有可能實施一次精準(zhǔn)的瀏覽器內(nèi)存攻擊瞬逊,最終給用戶電腦植入一個木馬显歧。XSS能夠幫助攻擊者快速達(dá)到收集信息的目的。最直接的是通過XSS讀取瀏覽器的UserAgent對象确镊,但是由于瀏覽器的UserAgent是可以偽造的士骤,所以還可以通過分辨不同瀏覽器之間的差異準(zhǔn)確地判斷出瀏覽器版本。
知道了用戶使用的瀏覽器蕾域、操作系統(tǒng)后拷肌,進(jìn)一步可以識別用戶安裝的軟件。在IE中旨巷,可以通過判斷ActiveX控件的classid是否存在巨缘,來推測用戶是否安裝了該軟件(這種方法很早就被用于“掛馬攻擊”)。瀏覽器的擴(kuò)展和插件也能被XSS Payload掃描出來采呐。
另外一個有趣的XSS Payload:通過CSS带猴,來發(fā)現(xiàn)一個用戶曾經(jīng)訪問過的網(wǎng)站。但是Firefox在2010年3月底決定修補這個問題懈万。
一般來說拴清,XSS 攻擊需要借助第三方軟件來完成。比如会通,客戶端安裝了Java環(huán)境口予,那么XSS就可以通過調(diào)用Java Applet的接口獲取客戶端的本地IP地址。
5)變廢為寶:Mission Impossible
從XSS漏洞利用的角度來看涕侈,存儲型XSS對攻擊者的用處比反射型XSS要大沪停。因為存儲型XSS在用戶訪問正常URL時會自動觸發(fā);而反射型XSS會修改一個正常的URL裳涛,一般要求攻擊者將XSS URL發(fā)送給用戶點擊木张,無形中提高了攻擊的門檻。而有的XSS漏洞端三,則被認(rèn)為只能夠攻擊自己舷礼,屬于“雞肋”漏洞。但隨著時間的推移郊闯,數(shù)個曾經(jīng)被認(rèn)為是無法利用的XSS漏洞妻献,都被人找到了利用方法蛛株。
6)流行的瀏覽器都內(nèi)置了一些對抗XSS的措施,比如Firefox的CSP育拨、Noscript擴(kuò)展谨履,IE8內(nèi)置的XSS Filter等。
7)區(qū)分安全的“富文本”和有攻擊性的XSS
3熬丧、跨站點請求偽造(CSRF)
1)瀏覽器的Cookie策略
瀏覽器所持有的Cookie分為兩種:一種是“Session Cookie”笋粟,又稱“臨時Cookie”;另一種是“Third-party Cookie”析蝴,也稱為“本地Cookie”矗钟。兩者的區(qū)別在于,Third-party Cookie是服務(wù)器在Set-Cookie時指定了Expire時間嫌变,只有到了Expire時間后Cookie才會失效吨艇,所以這種Cookie會保存在本地;而Session Cookie則沒有指定Expire時間腾啥,所以瀏覽器關(guān)閉后东涡,Session Cookie就失效了。在瀏覽網(wǎng)站的過程中倘待,若是一個網(wǎng)站設(shè)置了Session Cookie疮跑,那么在瀏覽器進(jìn)程的生命周期內(nèi),即使瀏覽器打開了Tab頁凸舵,Session Cookie也都是有效的祖娘。Session Cookie保存在瀏覽器進(jìn)程的內(nèi)存空間中;而Third-party Cookie則保存在本地啊奄。如果瀏覽器從一個域的頁面中渐苏,要加載另一個域的資源,由于安全原因菇夸,某些瀏覽器會阻止Third-party Cookie的發(fā)送琼富。
4、HTML5安全
過去在瀏覽器里能夠存儲信息的方法有以下幾種:Cookie庄新、Flash Shared Object鞠眉、IE UserData。
其中择诈,Cookie主要用于保存登錄憑證和少量信息械蹋,其最大長度的限制決定了不可能在Cookie中存儲太多信息。而Flash Shared Object和IE UserData則是Adobe與微軟自己的功能羞芍,并未成為一個通用化的標(biāo)準(zhǔn)哗戈。因此W3C委員會希望能在客戶端有一個較為強大和方便的本地存儲功能,這就是Web Storage涩金。
5谱醇、注入攻擊
注入攻擊是Web安全領(lǐng)域中一種最為常見的攻擊方式暇仲。XSS本質(zhì)上也是一種針對HTML的注入攻擊步做。
1)SQL注入
盲注:所謂“盲注”副渴,就是在服務(wù)器沒有錯誤回顯時完成的注入攻擊。服務(wù)器沒有錯誤回顯全度,對于攻擊者來說缺少了非常重要的“調(diào)試信息”煮剧,所以攻擊者必須找到一個方法來驗證注入的SQL語句是否得到執(zhí)行。
6将鸵、文件上傳漏洞
在大多數(shù)情況下勉盅,文件上傳漏洞一般都是指“上傳Web腳本能夠被服務(wù)器解析”的問題,也就是通常所說的webshell的問題顶掉。要完成這個攻擊草娜,要滿足如下幾個條件:首先,上傳的文件能夠被Web容器解釋執(zhí)行痒筒。所以文件上傳后所在的目錄是要Web容器所覆蓋到的路徑宰闰。其次,用戶能夠從Web上訪問這個文件簿透。如果文件上傳了移袍,但用戶無法通過Web訪問,或者無法使得Web容器解釋這個腳本老充,那么也不能稱之為漏洞葡盗。最后,用戶上傳的文件若被安全檢查啡浊、格式化觅够、圖片壓縮等功能改變了內(nèi)容,則也可能導(dǎo)致攻擊不成功巷嚣。
7蔚约、應(yīng)用層拒絕服務(wù)攻擊
應(yīng)用層DDOS:CC攻擊,“CC攻擊”的前身是一個叫fatboy的攻擊程序涂籽,當(dāng)時黑客為了挑戰(zhàn)綠盟的一款反DDOS設(shè)備開發(fā)了它苹祟。綠盟是中國著名的安全公司之一,它有一款叫“黑洞”的反DDOS設(shè)備评雌,能夠有效地清洗SYN Flood等有害流量树枫。而黑客則挑釁式地將fatboy所實現(xiàn)的攻擊方式命名為:Challenge Collapasar(簡稱CC),意指在黑洞的防御下景东,仍然能有效完成拒絕服務(wù)攻擊砂轻。
防御應(yīng)用層DDOS:
在一般情況下,服務(wù)器端應(yīng)用可以通過判斷HTTP頭中的User-Agent字段來識別客戶端斤吐。但從安全性來看這種方法并不可靠搔涝,因為HTTP頭中的User-Agent是可以被客戶端篡改的厨喂,所以不能信任。
一種比較可靠的方法是讓客戶端解析一段JavaScript庄呈,并給出正確的運行結(jié)果蜕煌。因為大部分的自動化腳本都是直接構(gòu)造HTTP包完成的,并非在一個瀏覽器環(huán)境中發(fā)出的請求诬留。但有的自動化腳本是內(nèi)嵌在瀏覽器中的“內(nèi)掛”斜纪,就無法檢測出來了。
除了人機識別外文兑,還可以在Web Server這一層做些防御盒刚,其好處是請求尚未到達(dá)后端的應(yīng)用程序里,因此可以起到一個保護(hù)的作用绿贞。
資源耗盡攻擊:凡是資源有“限制”的地方因块,都可能發(fā)生資源濫用,從而導(dǎo)致拒絕服務(wù)籍铁,也就是一種“資源耗盡攻擊”涡上。出于可用性和物理條件的限制,內(nèi)存寨辩、進(jìn)程數(shù)吓懈、存儲空間等資源都不可能無限制地增長,因此如果未對不可信任的資源使用者進(jìn)行配額的限制靡狞,就有可能造成拒絕服務(wù)耻警。內(nèi)存泄漏是程序員經(jīng)常需要解決的一種bug,而在安全領(lǐng)域中甸怕,內(nèi)存泄漏則被認(rèn)為是一種能夠造成拒絕服務(wù)攻擊的方式甘穿。
Server Limit DOS ? ? ?? Web Server 對HTTP包頭都有長度限制,以Apache舉例梢杭,默認(rèn)是8192字節(jié)温兼。也就是說,Apache所能接受的最大HTTP包頭大小為8192字節(jié)(這里指的是Request Header武契,如果是Request Body募判,則默認(rèn)的大小限制是2GB)。如果客戶端發(fā)送的HTTP包頭超過這個大小咒唆,服務(wù)器就會返回一個4xx錯誤届垫。加入攻擊者通過XSS攻擊,惡意地往客戶端寫入了一個超長的Cookie全释,則該客戶端在清空Cookie之前装处,將無法再訪問該Cookie所在域的任何頁面。這是因為Cookie也是放在HTTP包頭里發(fā)送的浸船,而Web Server默認(rèn)會認(rèn)為這是一個超長的非正常請求妄迁,從而導(dǎo)致“客戶端”的拒絕服務(wù)寝蹈。