在 Web 應(yīng)用中怎顾,從瀏覽器那接收到的 HTTP 請求的全部內(nèi)容捉撮,都可以在客戶端自由地變更彤断、篡改野舶。所以 Web 應(yīng)用可能會(huì)接收到與預(yù)期數(shù)據(jù)不相同的內(nèi)容。
在 HTTP 請求報(bào)文內(nèi)加載攻擊代碼宰衙,就能發(fā)起對 Web 應(yīng)用的攻擊平道。 通過 URL查詢字段或表單、HTTP 首部供炼、Cookie 等途徑把攻擊代碼傳入一屋,若這時(shí) Web 應(yīng)用存在安全漏洞窘疮,那內(nèi)部信息就會(huì)遭到竊取,或被攻擊者拿到管理權(quán)限陆淀。
針對 Web 應(yīng)用的攻擊模式有以下兩種:
主動(dòng)攻擊:主動(dòng)攻擊(active attack)是指攻擊者通過直接訪問 Web 應(yīng)用考余, 把攻擊代碼傳入的攻擊模式。由于該模式是直接針對服務(wù)器上的資源進(jìn)行攻擊轧苫,因此攻擊者需要能夠訪問到那些資源楚堤。主動(dòng)攻擊模式里具有代表性的攻擊是 SQL注入攻擊和 OS 命令注入攻擊。
-
被動(dòng)攻擊:被動(dòng)攻擊(passive attack)是指利用圈套策略執(zhí)行攻擊代碼的攻擊模式含懊。在被動(dòng)攻擊過程中身冬,攻擊者不直接對目標(biāo) Web 應(yīng)用訪問發(fā)起攻擊。被動(dòng)攻擊通常的攻擊步驟如下:
- 攻擊者布置好陷阱岔乔,誘使用戶觸發(fā)陷阱酥筝。
- 瀏覽器會(huì)把含有攻擊代碼的 HTTP 請求發(fā)送給作為攻擊目標(biāo)的 Web 應(yīng)用,運(yùn)行攻擊代碼雏门。
- 執(zhí)行完攻擊代碼嘿歌,存在安全漏洞的 Web 應(yīng)用會(huì)成為攻擊者的跳板,可能導(dǎo)致用戶所持的 Cookie 等個(gè)人信息被竊取茁影, 登錄狀態(tài)中的用戶權(quán)限遭惡意濫用等后果宙帝。
被動(dòng)攻擊模式中具有代表性的攻擊是跨站腳本攻擊和跨站點(diǎn)請求偽造。
跨站腳本攻擊
跨站腳本攻擊(Cross-Site Scripting募闲,XSS)是指通過存在安全漏洞的 Web 網(wǎng)站注冊用戶的瀏覽器內(nèi)運(yùn)行非法的 HTML 標(biāo)簽或 JavaScript 進(jìn)行的一種攻擊步脓。動(dòng)態(tài)創(chuàng)建的 HTML 部分有可能隱藏著安全漏洞。就這樣浩螺,攻擊者編寫腳本設(shè)下陷阱靴患,用戶在自己的瀏覽器上運(yùn)行時(shí),一不小心就會(huì)受到被動(dòng)攻擊要出。
XSS 是攻擊者利用預(yù)先設(shè)置的陷阱觸發(fā)的被動(dòng)攻擊鸳君。可能造成的結(jié)果包括:
- 利用虛假輸入表單騙取用戶個(gè)人信息厨幻;
- 利用腳本竊取用戶的 Cookie 值相嵌,被害者在不知情的情況下,幫助攻擊者發(fā)送惡意請求;
- 顯示偽造的文章或圖片况脆。
SQL 注入攻擊
SQL 注入(SQL Injection)是指針對 Web 應(yīng)用使用的數(shù)據(jù)庫,通過運(yùn)行非法的 SQL 而產(chǎn)生的攻擊批糟。該安全隱患有可能引發(fā)極大的威脅格了,有時(shí)會(huì)直接導(dǎo)致個(gè)人信息及機(jī)密信息的泄露。
Web 應(yīng)用通常都會(huì)用到數(shù)據(jù)庫徽鼎,當(dāng)需要對數(shù)據(jù)庫表內(nèi)的數(shù)據(jù)進(jìn)行 檢索或添加盛末、刪除等操作時(shí)弹惦,會(huì)使用 SQL 語句連接數(shù)據(jù)庫進(jìn)行特定的操作。如果在調(diào)用 SQL 語句的方式上存在疏漏悄但,就有可能執(zhí)行被惡意注入(Injection)非法 SQL 語句棠隐。
SQL 注入攻擊有可能會(huì)造成以下等影響:
- 非法查看或篡改數(shù)據(jù)庫內(nèi)的數(shù)據(jù);
- 規(guī)避認(rèn)證檐嚣;
- 執(zhí)行和數(shù)據(jù)庫服務(wù)器業(yè)務(wù)關(guān)聯(lián)的程序等助泽;
OS 命令注入攻擊
OS 命令注入攻擊(OS Command Injection)是指通過 Web 應(yīng)用,執(zhí)行非法的操作系統(tǒng)命令達(dá)到攻擊的目的嚎京。只要在能調(diào)用 Shell 函數(shù)的地方就有存在被攻擊的風(fēng)險(xiǎn)嗡贺。OS 命令注入攻擊可以向 Shell 發(fā)送命令,讓 Windows 或 Linux 操作系統(tǒng)的命令行啟動(dòng)程序鞍帝。也就是說诫睬,通過 OS 注入攻擊可執(zhí)行 OS 上安裝著的各種程序。
HTTP 首部注入攻擊
HTTP 首部注入攻擊(HTTP Header Injection)是指攻擊者通過在響應(yīng)首部字段內(nèi)插入換行帕涌,添加任意響應(yīng)首部或主體的一種攻擊摄凡。屬于被動(dòng)攻擊模式。向首部主體內(nèi)添加內(nèi)容的攻擊稱為 HTTP 響應(yīng)截?cái)喙簦℉TTP Response Splitting Attack)蚓曼。
HTTP 首部注入攻擊有可能會(huì)造成以下一些影響:
- 設(shè)置任何 Cookie 信息亲澡;
- 重定向至任意 URL;
- 顯示任意的主體(HTTP 響應(yīng)截?cái)喙簦?/li>
如下所示:
101%0D%0ASet-Cookie:+SID=123456789
郵件首部注入攻擊
郵件首部注入(Mail Header Injection)是指 Web 應(yīng)用中的郵件發(fā)送功能辟躏,攻擊者通過向郵件首部 To 或 Subject 內(nèi)任意添加非法內(nèi)容發(fā)起的攻擊谷扣。利用存在安全漏洞的 Web 網(wǎng)站,可對任意郵件地址發(fā)送廣告郵件或病毒郵件捎琐。
目錄遍歷攻擊
目錄遍歷(Directory Traversal)攻擊是指對本無意公開的文件目錄会涎, 通過非法截?cái)嗥淠夸浡窂胶螅_(dá)成訪問目的的一種攻擊瑞凑。這種攻擊有時(shí)也稱為路徑遍歷(Path Traversal)攻擊末秃。
通過 Web 應(yīng)用對文件處理操作時(shí),在由外部指定文件名的處理存在疏漏的情況下籽御,用戶可使用 .../ 等相對路徑定位到 /etc/passed 等絕對路徑上练慕,因此服務(wù)器上任意的文件或文件目錄皆有可能被訪問到。這樣一來技掏,就有可能非法瀏覽铃将、篡改或刪除 Web 服務(wù)器上的文件。
固然存在輸出值轉(zhuǎn)義的問題哑梳,但更應(yīng)該關(guān)閉指定對任意文件名的訪問權(quán)限劲阎。
遠(yuǎn)程文件包含漏洞
遠(yuǎn)程文件包含漏洞(Remote File Inclusion)是指當(dāng)部分腳本內(nèi)容需要從其他文件讀入時(shí),攻擊者利用指定外部服務(wù)器的 URL 充當(dāng)依賴文件鸠真,讓腳本讀取之后悯仙,就可運(yùn)行任意腳本的一種攻擊龄毡。
這主要是 PHP 存在的安全漏洞,對 PHP 的 include 或 require 來說锡垄, 這是一種可通過設(shè)定沦零,指定外部服務(wù)器的 URL 作為文件名的功能。 但是货岭,該功能太危險(xiǎn)路操,PHP5.2.0 之后默認(rèn)設(shè)定此功能無效。
強(qiáng)制瀏覽安全漏洞
強(qiáng)制瀏覽(Forced Browsing)安全漏洞是指茴她,從安置在 Web 服務(wù)器的公開目錄下的文件中寻拂,瀏覽那些原本非自愿公開的文件。強(qiáng)制瀏覽安全漏洞類似于目目錄遍歷攻擊丈牢,可能造成的影響包括:
- 泄露顧客的個(gè)人信息等重要情報(bào)祭钉;
- 泄露原本需要具有訪問權(quán)限的用戶才可查閱的信息內(nèi)容;
- 泄露未外連到外界的文件己沛;
不正確的錯(cuò)誤消息處理
不正確的錯(cuò)誤消息處理(Error Handling Vulnerability)的安全漏洞是指慌核,Web 應(yīng)用的錯(cuò)誤信息內(nèi)包含對攻擊者有用的信息。與 Web 應(yīng)用有關(guān)的主要錯(cuò)誤信息包括:
- Web 應(yīng)用拋出的錯(cuò)誤消息申尼;
- 數(shù)據(jù)庫等系統(tǒng)拋出的錯(cuò)誤消息垮卓;
Web 應(yīng)用不必在用戶的瀏覽畫面上展現(xiàn)詳細(xì)的錯(cuò)誤消息。對攻擊者來說师幕,詳細(xì)的錯(cuò)誤消息有可能給他們下一次攻擊以提示粟按。
開放重定向
開放重定向(Open Redirect)是一種對指定的任意 URL 作重定向跳轉(zhuǎn)的功能。而于此功能相關(guān)聯(lián)的安全漏洞是指霹粥,假如指定的重定向 URL 到某個(gè)具有惡意的 Web 網(wǎng)站灭将,那么用戶就會(huì)被誘導(dǎo)至那個(gè) Web 網(wǎng)站。
如下所示:
http://example.com/?redirect=http://hacker.com
會(huì)話劫持
會(huì)話劫持(Session Hijack)是指攻擊者通過某種手段拿到了用戶的會(huì)話 ID后控,并非法使用此會(huì)話 ID 偽裝成用戶庙曙,達(dá)到攻擊的目的。
具備認(rèn)證功能的 Web 應(yīng)用浩淘,使用會(huì)話 ID 的會(huì)話管理機(jī)制捌朴,作為管理認(rèn)證狀態(tài)的主流方式。會(huì)話 ID 中記錄客戶端的 Cookie 等信息张抄,服務(wù)器端將會(huì)話 ID 與認(rèn)證狀態(tài)進(jìn)行一對一匹配管理砂蔽。獲得會(huì)話 ID 的途徑包括:
- 通過非正規(guī)的生成方法推測會(huì)話 ID;
- 通過竊聽或 XSS 攻擊盜取會(huì)話 ID署惯;
- 通過會(huì)話固定攻擊(Session Fixation)強(qiáng)行獲取會(huì)話 ID察皇;
會(huì)話固定攻擊
會(huì)話固定攻擊(Session Fixation)會(huì)強(qiáng)制用戶使用攻擊者指定的會(huì)話 ID,等待用戶拿著這個(gè)會(huì)話 ID 前去認(rèn)證時(shí)泽台,觸發(fā)陷阱什荣,記錄會(huì)話 ID 在服務(wù)器上的狀態(tài),之后再利用這個(gè)會(huì)話 ID 偽裝為此用戶進(jìn)行攻擊怀酷。會(huì)話固定攻擊屬于被動(dòng)攻擊稻爬。
跨站點(diǎn)請求偽造
跨站點(diǎn)請求偽造(Cross-Site Request Forgeries,CSRF)攻擊是指攻擊者通過設(shè)置好的陷阱蜕依,強(qiáng)制對已完成認(rèn)證的用戶進(jìn)行預(yù)期外的個(gè)人信息或設(shè)定信息等某些狀態(tài)更新桅锄,屬于被動(dòng)攻擊。
跨站點(diǎn)請求偽造有可能會(huì)造成以下等影響:
- 利用已通過認(rèn)證的用戶權(quán)限更新設(shè)定信息等样眠;
- 利用已通過認(rèn)證的用戶權(quán)限購買商品友瘤;
- 利用已通過認(rèn)證的用戶權(quán)限在留言板上發(fā)表言論;
密碼破解
密碼破解攻擊(Password Cracking)即算出密碼檐束,突破認(rèn)證辫秧。攻擊不僅限于 Web 應(yīng)用,還包括其他的系統(tǒng)(如 FTP 或 SSH 等)被丧。密碼破解有以下兩種手段:
- 通過網(wǎng)絡(luò)的密碼試錯(cuò)盟戏;
- 對已加密密碼的破解(指攻擊者入侵系統(tǒng),已獲得加密或散列處理的密碼數(shù)據(jù)的情況)甥桂;
除去突破認(rèn)證的攻擊手段柿究,還有 SQL注入攻擊逃避認(rèn)證,跨站腳本攻擊竊取密碼信息等方法黄选。
-
通過網(wǎng)絡(luò)的密碼試錯(cuò)主要有以下兩種方式:
- 窮舉法:窮舉法(Brute-force Attack蝇摸,又稱暴力破解法)是指對所有密鑰集合構(gòu)成的密鑰空間(Keyspace)進(jìn)行窮舉。即用所有可行的候選密碼對目標(biāo)的密碼系統(tǒng)試錯(cuò)办陷,用以突破驗(yàn)證的一種攻擊貌夕。
- 字典攻擊:字典攻擊是指利用事先收集好的候選密碼(經(jīng)過各種組合方式后存入字典),枚舉字典中的密碼懂诗,嘗試通過認(rèn)證的一種攻擊手法蜂嗽。
字典攻擊中有一種利用其他 Web 網(wǎng)站已泄露的 ID 及密碼列表進(jìn)行的攻擊。很多用戶習(xí)慣隨意地在多個(gè) Web 網(wǎng)站使用同一套 ID 及密碼殃恒,因此攻擊會(huì)有相當(dāng)高的成功幾率植旧。
-
對已加密密碼的破解主要有以下幾種方式:
- 通過窮舉法·字典攻擊進(jìn)行類推:針對密碼使用散列函數(shù)進(jìn)行加密處理的情況,采用和窮舉法或字典攻擊相同的手法离唐,嘗試調(diào)用相同的散列函數(shù)加密候選密碼病附,然后把計(jì)算出的散列值與目標(biāo)散列值匹配,類推出密碼亥鬓。
- 彩虹表:彩虹表(Rainbow Table)是由明文密碼及與之對應(yīng)的散列值構(gòu)成的一張數(shù)據(jù)庫表完沪,是一種通過事先制作龐大的彩虹表,可在窮舉法 ? 字典攻擊等實(shí)際破解過程中縮短消耗時(shí)間的技巧。從彩虹表內(nèi)搜索散列值就可以推導(dǎo)出對應(yīng)的明文密碼覆积。
- 拿到密鑰:使用共享密鑰加密方式對密碼數(shù)據(jù)進(jìn)行加密處理的情況下听皿,如果能通過某種手段拿到加密使用的密鑰,也就可以對密碼數(shù)據(jù)解密了宽档。
- 加密算法的漏洞:考慮到加密算法本身可能存在的漏洞尉姨,利用該漏洞嘗試解密也是一種可行的方法。但是要找到那些已廣泛使用的加密算法的漏洞吗冤,又談何容易又厉,因此困難極大,不易成功椎瘟。
點(diǎn)擊劫持
點(diǎn)擊劫持(Clickjacking)是指利用透明的按鈕或鏈接做成陷阱覆致,覆蓋在 Web 頁面之上。然后誘使用戶在不知情的情況下肺蔚,點(diǎn)擊那個(gè)鏈接訪問內(nèi)容的一種攻擊手段煌妈。這種行為又稱為界面?zhèn)窝b(UI Redressing)。
Dos 攻擊
DoS 攻擊(Denial of Service attack)是一種讓運(yùn)行中的服務(wù)呈停止?fàn)顟B(tài)的攻擊婆排。有時(shí)也叫做服務(wù)停止攻擊或拒絕服務(wù)攻擊声旺。DoS 攻擊的對象不僅限于 Web 網(wǎng)站,還包括網(wǎng)絡(luò)設(shè)備及服務(wù)器等段只。
主要有以下兩種 DoS 攻擊方式:
- 集中利用訪問請求造成資源過載腮猖,資源用盡的同時(shí)郭脂,實(shí)際上服務(wù)也就呈停止?fàn)顟B(tài)感昼。
- 通過攻擊安全漏洞使服務(wù)停止。
其中塌鸯,集中利用訪問請求的 DoS 攻擊炕婶,單純來講就是發(fā)送大量的合法請求姐赡。服務(wù)器很難分辨何為正常請求,何為攻擊請求柠掂,因此很難防 止 DoS 攻擊项滑。
多臺計(jì)算機(jī)發(fā)起的 DoS 攻擊稱為 DDoS 攻擊(Distributed Denial of Service attack)。DDoS 攻擊通常利用那些感染病毒的計(jì)算機(jī)作為攻擊者的攻擊跳板涯贞。
后門攻擊
后門程序(Backdoor)是指開發(fā)設(shè)置的隱藏入口枪狂,可不按正常步驟使用受限功能。利用后門程序就能夠使用原本受限制的功能宋渔。
通常的后門程序分為以下 3 種類型:
- 開發(fā)階段作為 Debug 調(diào)用的后門程序州疾;
- 開發(fā)者為了自身利益植入的后門程序;
- 攻擊者通過某種方法設(shè)置的后門程序皇拣;
可通過監(jiān)視進(jìn)程和通信的狀態(tài)發(fā)現(xiàn)被植入的后門程序严蓖。但設(shè)定在 Web 應(yīng)用中的后門程序,由于和正常使用時(shí)區(qū)別不大,通常很難發(fā)現(xiàn)颗胡。