web前端攻擊詳解

前端攻擊成因

在web網(wǎng)頁的腳本中,有些部分的顯示內(nèi)容會依據(jù)外界輸入值而發(fā)生變化,而如果這些聲稱html的程序中存在問題,就會滋生名為跨站腳本的安全隱患

XSS跨站腳本攻擊:

英文全稱cross-site-scripting,為了區(qū)別于cascading style sheets層疊樣式表(CSS),因此縮寫為XSS。

Web應(yīng)用程序中,如果存在XSS漏洞,就會有以下風險:

1、用戶的瀏覽器中運行攻擊者的惡意腳本,從而導致庫kit信息被竊取,攻擊者就會假冒用戶的信息進行登錄。

2、攻擊者能夠獲取用戶的權(quán)限,來惡意使用web應(yīng)用的功能。

3、可以向用戶使用偽造的數(shù)據(jù)表單,通過釣魚的方式來竊取用戶的個人信息。也就是我們這里講到的主要的釣魚攻擊和盜取cookie

接下來以實際的例子來看

釣魚攻擊

提交單引號,顯示有語法錯誤


通過url的輸入,我們能在頁面中顯示出來,那我們是否可以構(gòu)造一個js腳本,我們來看一下效果。能夠彈出一個警告框,說明跨站腳本攻擊漏洞存在

怎么構(gòu)造釣魚?使用標簽iframe.可以看到百度已經(jīng)在這里嵌入了

假如這是一個銀行網(wǎng)銀登錄的網(wǎng)站,存在這樣的漏洞,那我們作為攻擊者,我可以構(gòu)造一個類似的頁面,把它原有的登錄框覆蓋掉。我可以把這個鏈接發(fā)給被攻擊者,以郵件或者其他的方式,這里需要用到的技術(shù)是社會工程學,誘使被攻擊者訪問這個鏈接,最終欺騙他來登錄,而攻擊者就可以輕易的拿到被攻擊者的賬號和密碼信息。也有人問,發(fā)過去的這個鏈接帶有這樣的標志或參數(shù),被攻擊者一眼就能看出來。在這里,我們可以對這段代碼進行編碼,不管是url的編碼還是其他方式的編碼,也就是說,被攻擊者一眼看不出來這個異常,所以就會被誘使去訪問這個鏈接,最終造成影響。這個是釣魚攻擊。

盜取cookie

這里需要用到一個函數(shù)document.cookie同樣是個警告提示??梢钥闯鏊腜HPSESSID已經(jīng)被顯示了出來,但這種顯示是不可能達到攻擊效果的

Xss漏洞

Web應(yīng)用的網(wǎng)頁上顯示外界傳入的參數(shù)場所不在少數(shù),只要有一處存在xss漏洞,網(wǎng)站的用戶就有被冒名頂替的風險。也就是我們的cookie信息被獲取,我們就存在有被冒名頂替的風險。另外,web應(yīng)用中要防護的xss漏洞有很多,然而網(wǎng)站運營方或者是站長卻普遍對此漏洞疏忽大意,對實質(zhì)防護的措施不夠重視,但是,現(xiàn)實生活中xss攻擊卻是存在的,而且xss的受害者也是與日俱增。因此,在web應(yīng)用中,采用防范xss的策略是必不可少的

將存在隱患的網(wǎng)站將用戶引發(fā)至一個惡意的網(wǎng)站,也就是說我們剛才獲取cookie的信息不是讓它alter告警方式展示給用戶,而是通過腳本程序?qū)⑽覀兒瘮?shù)獲取的cookie信息,發(fā)送至遠程的惡意網(wǎng)站,遠程的這個惡意網(wǎng)站是專門用來接收當前的cookie信息的,當被攻擊者觸發(fā)這個漏洞以后,它當前用戶的cookie信息就會被發(fā)送到遠端的惡意網(wǎng)站。攻擊者登錄惡意網(wǎng)站,查看到cookie信息后可以對這個用戶的控制權(quán)限進行冒名頂替。

實例:

還是dvwa的演示環(huán)境

發(fā)射型跨站

獲取用戶的cookie信息

輸入1,顯示hello 1

驗證是否會在當前輸入前面加入hello

輸入2發(fā)現(xiàn)同樣hello 2.我們的輸出會在前面加上hello,然后再當前頁面直接輸出

假設(shè)我們輸入相應(yīng)的js腳本,它是不是也會在當前頁面直接輸出并且執(zhí)行呢

我們可以看出,當前的腳本已經(jīng)被執(zhí)行,而且js腳本也被觸發(fā),alter,也就是警告彈出了相應(yīng)的提示框

那我們怎么來換取當前用戶的cookie信息呢?

同樣document.cookie這個函數(shù)??梢钥吹竭@里是低安全級別PHPSESSID同樣也獲取到了,當被攻擊者拿到這個值以后,就可以直接對這個登錄用戶的網(wǎng)站或應(yīng)用進行直接訪問。而且,訪問后攻擊者所獲取的權(quán)限將和當前登錄用戶的權(quán)限一模一樣。假設(shè)被攻擊者是一個網(wǎng)站的后臺管理員,網(wǎng)站如果存在xss漏洞的話,作為攻擊者,我可以將我構(gòu)造的代碼,發(fā)送給網(wǎng)站管理員,欺騙他進行訪問,當然這個欺騙方式可以是發(fā)郵件,以釣魚的形式,當被攻擊者訪問這個惡意鏈接以后,他的網(wǎng)站后臺的cookie信息就有可能被獲取。為什么說有可能呢?因為如果說我們構(gòu)造的攻擊語句或者存在xss漏洞的位值是網(wǎng)站的前臺的話,那網(wǎng)站管理員有可能是在沒有登錄的情況下,那我們這個情況下就獲取不到cookie信息,但是網(wǎng)站管理員已經(jīng)處于登錄的狀態(tài),那他在訪問了這個惡意鏈接以后,我們就可以獲取到網(wǎng)站后臺管理的cookie信息。這樣的話攻擊者拿到了這個cookie信息,就可以以網(wǎng)站管理員的身份對網(wǎng)站后臺進行操作

存儲型跨站

這個惡意代碼可能被存儲起來了,通常情況下,是被存儲在數(shù)據(jù)庫里面

比如現(xiàn)在發(fā)布一個內(nèi)容發(fā)布的內(nèi)容顯示出來了,也就是說這個暑假是從數(shù)據(jù)庫里獲取的。

那既然我們的輸入會被顯示到數(shù)據(jù)庫,而且還會被顯示到正常的頁面上。那我們猜想,是不是可以構(gòu)造一個跨站腳本語句,提交以后讓它寫進數(shù)據(jù)庫,再展現(xiàn)到當前的頁面上呢?

我們發(fā)現(xiàn)name字段對長度有限制,我們這里暫時繞不過去,這里不做過多介紹

我們來看message字段是否可以構(gòu)造我們的腳本,同樣以驗證的方式進行驗證,提交以后這個框能顯示出來。刷新以后,同樣能顯示出來,說明數(shù)據(jù)是被存儲到了數(shù)據(jù)庫里面

存儲型相對于反射型有更大的威脅,因為反射型作為攻擊者是需要把構(gòu)造好的url鏈接發(fā)送給被攻擊者,而且還要以各種手段去誘使被攻擊者點擊。而存儲型就不存在這個問題,如果說網(wǎng)站存在存儲型xss漏洞,那我們就可以直接將我們的語句寫進數(shù)據(jù)庫里,這時候我們不需要給被攻擊者發(fā)送任意有惡意的鏈接,只要他登錄這個網(wǎng)站,或者訪問這個網(wǎng)站,那這個惡意腳本就會執(zhí)行。

我們再來看一下獲取cookie信息,可以看到cookie信息被獲取,同樣的,如果是這個網(wǎng)站后臺的xss漏洞,那我在無法獲取管理員賬號和密碼的時候。我可以將獲取cookie信息的xss代碼,寫入到數(shù)據(jù)庫里,當管理員訪問后臺的時候,這個cookie信息就會被發(fā)送到攻擊者遠端的惡意網(wǎng)站進行接收

實例:

假設(shè)我們的網(wǎng)站有一個留言板消息,類似于輸入用戶名,輸入留言內(nèi)容,當留言以后,可能有的網(wǎng)站是輸入留言提交就顯示了留言內(nèi)容。有的網(wǎng)站可能進行了處理信息,就是怕留言會發(fā)布一些惡意或是非法的信息。有可能是發(fā)布留言以后,先是后臺管理員登錄后臺以后這個留言信息才會顯示出來,那這個時候你的留言信息肯定是會被管理員看到的。因為管理員要登錄后臺進行審核,審核通過以后才會對互聯(lián)網(wǎng)或網(wǎng)絡(luò)上其他用戶進行發(fā)布。那這個時候,管理員登錄后臺進行審核的時候,就會觸發(fā)這個漏洞,而恰恰這個時候,管理員又處于登錄狀態(tài),那管理員的cookie信息,也就是后臺的cookie信息就會被發(fā)送到攻擊者的惡意網(wǎng)站。

Cookie是干什么的?

Cookie是保存在客戶端本地對訪問網(wǎng)站的信息的保存,比如用戶登錄認證,賬號密碼,或者訪問的頁面,都會保存在cookie里面,以便后期訪問的快速響應(yīng)。了解到這以后,我們可以很清楚的看出一個問題,就是用戶登錄的賬號密碼信息肯定是在cookie里面,那這時候我們獲取到Cookie信息就非常有價值了。

Xss更具威脅的另一種攻擊方式——xss的蠕蟲(這里沒有做介紹)

在上面的例子上,攻擊者利用JavaScript等讀取到了用戶的cookie信息,但實際上,利用JavaScript的攻擊遠遠不止這些。

大致介紹下:

蠕蟲是一個網(wǎng)絡(luò)病毒,它可以復制自身然后傳播。對于xss的蠕蟲我們怎么進行攻擊呢?比如微博存在xss漏洞,攻擊者構(gòu)造一個xss的蠕蟲以后,構(gòu)造的惡意信息是讓更多的人來關(guān)注我?,F(xiàn)在發(fā)布這個微博后,當有人訪問這個微博以后,他就觸發(fā)了這個漏洞,那他自己的微博就會去關(guān)注攻擊者的賬號,關(guān)注以后,這個惡意信息也會保存在被攻擊者的信息里面,在被攻擊者的微博再被另一個人訪問以后,那另一個人就又成了被攻擊者,第一個被攻擊者就成了攻擊者,最終形成了一個大規(guī)模的蠕蟲病毒,這個就是xss的蠕蟲。


原文鏈接:http://www.maiziedu.com/wiki/websafety/frontend/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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