前端攻擊測試

前端攻擊成因

  在web網頁的腳本中,有些部分的顯示內容會依據外界輸入值而發生變化,而如果這些聲稱html的程序中存在問題,就會滋生名爲跨站腳本的安全隱患

XSS跨站腳本攻擊:

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

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

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

2、攻擊者能夠獲取用戶的權限,來惡意使用web應用的功能。

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

  接下來以實際的例子來看

釣魚攻擊

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


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


  怎麼構造釣魚?使用標籤iframe.可以看到百度已經在這裏嵌入了


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

盜取cookie

  這裏需要用到一個函數document.cookie同樣是個警告提示。可以看出它的PHPSESSID已經被顯示了出來,但這種顯示是不可能達到攻擊效果的


Xss漏洞

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

  將存在隱患的網站將用戶引發至一個惡意的網站,也就是說我們剛纔獲取cookie的信息不是讓它alter告警方式展示給用戶,而是通過腳本程序將我們函數獲取的cookie信息,發送至遠程的惡意網站,遠程的這個惡意網站是專門用來接收當前的cookie信息的,當被攻擊者觸發這個漏洞以後,它當前用戶的cookie信息就會被髮送到遠端的惡意網站。攻擊者登錄惡意網站,查看到cookie信息後可以對這個用戶的控制權限進行冒名頂替。

  實例:

  還是dvwa的演示環境

發射型跨站

  獲取用戶的cookie信息

  輸入1,顯示hello 1


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

  輸入2 發現同樣hello 2.我們的輸出會在前面加上hello,然後再當前頁面直接輸出


  假設我們輸入相應的js腳本,它是不是也會在當前頁面直接輸出並且執行呢

  我們可以看出,當前的腳本已經被執行,而且js腳本也被觸發,alter,也就是警告彈出了相應的提示框


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

  同樣document.cookie這個函數。可以看到這裏是低安全級別PHPSESSID同樣也獲取到了,當被攻擊者拿到這個值以後,就可以直接對這個登錄用戶的網站或應用進行直接訪問。而且,訪問後攻擊者所獲取的權限將和當前登錄用戶的權限一模一樣。假設被攻擊者是一個網站的後臺管理員,網站如果存在xss漏洞的話,作爲攻擊者,我可以將我構造的代碼,發送給網站管理員,欺騙他進行訪問,當然這個欺騙方式可以是發郵件,以釣魚的形式,當被攻擊者訪問這個惡意鏈接以後,他的網站後臺的cookie信息就有可能被獲取。爲什麼說有可能呢?因爲如果說我們構造的攻擊語句或者存在xss漏洞的位值是網站的前臺的話,那網站管理員有可能是在沒有登錄的情況下,那我們這個情況下就獲取不到cookie信息,但是網站管理員已經處於登錄的狀態,那他在訪問了這個惡意鏈接以後,我們就可以獲取到網站後臺管理的cookie信息。這樣的話攻擊者拿到了這個cookie信息,就可以以網站管理員的身份對網站後臺進行操作


存儲型跨站

  這個惡意代碼可能被存儲起來了,通常情況下,是被存儲在數據庫裏面

  比如現在發佈一個內容 發佈的內容顯示出來了,也就是說這個暑假是從數據庫裏獲取的。


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

  我們發現name字段對長度有限制,我們這裏暫時繞不過去,這裏不做過多介紹


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


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

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



實例:

  假設我們的網站有一個留言板消息,類似於輸入用戶名,輸入留言內容,當留言以後,可能有的網站是輸入留言提交就顯示了留言內容。有的網站可能進行了處理信息,就是怕留言會發布一些惡意或是非法的信息。有可能是發佈留言以後,先是後臺管理員登錄後臺以後這個留言信息纔會顯示出來,那這個時候你的留言信息肯定是會被管理員看到的。因爲管理員要登錄後臺進行審覈,審覈通過以後纔會對互聯網或網絡上其他用戶進行發佈。那這個時候,管理員登錄後臺進行審覈的時候,就會觸發這個漏洞,而恰恰這個時候,管理員又處於登錄狀態,那管理員的cookie信息,也就是後臺的cookie信息就會被髮送到攻擊者的惡意網站。

Cookie是幹什麼的?

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

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

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

  大致介紹下:

  蠕蟲是一個網絡病毒,它可以複製自身然後傳播。對於xss的蠕蟲我們怎麼進行攻擊呢?比如微博存在xss漏洞,攻擊者構造一個xss的蠕蟲以後,構造的惡意信息是讓更多的人來關注我。現在發佈這個微博後,當有人訪問這個微博以後,他就觸發了這個漏洞,那他自己的微博就會去關注攻擊者的賬號,關注以後,這個惡意信息也會保存在被攻擊者的信息裏面,在被攻擊者的微博再被另一個人訪問以後,那另一個人就又成了被攻擊者,第一個被攻擊者就成了攻擊者,最終形成了一個大規模的蠕蟲病毒,這個就是xss的蠕蟲。


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章