天天看點

安全漏洞中的倚天劍——XSS跨站腳本攻擊one、概念two、原理three、類型four、危害five、XSS攻擊流程Six、防禦措施

安全漏洞中的倚天劍——XSS跨站腳本攻擊one、概念two、原理three、類型four、危害five、XSS攻擊流程Six、防禦措施

one、概念

XSS跨站腳本攻擊(Cross-Site Scripting)就是網站将使用者輸入的内容輸出到頁面上,在這個過程中可能有惡意代碼被浏覽器執行,XSS屬于被動式的攻擊,因為其被動且不好利用,是以許多人常呼略其危害性。

XSS通常情況可以有兩種解釋就是它可以是一種攻擊方式,或者是一種漏洞。

XSS其實叫CSS,但是由于和另一種網頁技術——層疊樣式表(Cascading Style Sheets)的縮寫一樣,為了防止混淆,是以把原本的CSS簡稱為XSS。

這一漏洞攻擊在各種WEB應用安全漏洞中,一直被OWASP(Open Web Application Security Project)組織評為十大應用安全中的其中之一。

XSS一般攻擊的是前端(比如盜取其他使用者cookie),而不是後端,是以XSS一般需要結合其他漏洞進行挂馬。(個人了解)

two、原理

XSS的原理是由于Web應用程式對使用者輸入過濾不足,這時候攻擊者就可以通過這些不足在網頁上面注入一些比如盜取cookie,轉賬等等的JavaScript腳本惡意代碼,當使用者浏覽這些網頁時就會執行其中的惡意代碼,進而就完成一個的完整的XSS攻擊流程。

跨站腳本,就是使用者稀裡糊塗地執行了攻擊者放在網頁上的惡意腳本,歸根結底就是服務端過于信任用戶端送出的資料。

在這裡由于XSS有分類,是以對XSS原理的解釋隻是一個比較泛的解釋,具體的原理還得需要具體的XSS類型去分析,即在下面博文中。

three、類型

上面說了,XSS隻是一個比較泛的概念,具體的攻擊漏洞,還得具體分析,一般XSS漏洞有反射型,存儲型、DOM型(DOM—based型)。

1、反射型XSS

安全漏洞中的倚天劍——XSS跨站腳本攻擊one、概念two、原理three、類型four、危害five、XSS攻擊流程Six、防禦措施

感覺看上面的圖比較難了解,zzzzzz

反射型XSS又叫非持久型XSS,是使用者點選到攻擊者設定好的惡意網站(一般這種是POST請求才使用)或者是使用者通路到攻擊者設定好的URL(即可以使用GET請求),在網頁傳回的内容中出現攻擊者設定的XSS腳本代碼,并被浏覽器解析執行。反射的意思就是XSS攻擊腳本被Web伺服器反射回來給浏覽器解析執行。

在這裡我們會發現,反射型XSS由于請求方式不同攻擊手法也不同,但原理大同小異,就是都是讓客戶去觸發到這個漏洞點上,傳回伺服器反射給浏覽器并被浏覽器解析,這之間伺服器他就相當于一個傳遞者,将惡意代碼傳遞個使用者,這一過程看上去就像反射鏡反射一樣,攻擊者将一束光線射給反射鏡,反射鏡又将這束光反射給使用者。

注意:這裡是浏覽器解析了腳本,而不是伺服器

2、存儲型XSS

安全漏洞中的倚天劍——XSS跨站腳本攻擊one、概念two、原理three、類型four、危害five、XSS攻擊流程Six、防禦措施

存儲型XSS也叫持久性XSS,是攻擊者将惡意腳本代碼存儲到Web伺服器中并被解析,客戶當通路到這網頁時将受到攻擊。在這裡一定要注意反射型與存儲型差別:連結在這裡。

這時我們就會發現不管是什麼方式請求,

注意:這裡是伺服器解析了腳本,而不是浏覽器

3、DOM型XSS

安全漏洞中的倚天劍——XSS跨站腳本攻擊one、概念two、原理three、類型four、危害five、XSS攻擊流程Six、防禦措施

首先我們需要明白什麼是DOM?

DOM(Document Object Model),是一種文檔對象模型,DOM通常用于代表在HTML、XHTML和XML中的對象,使用DOM可以允許程式和腳本動态地通路和更新文檔的内容、結構和樣式,本質就是一種樹狀的模型。

DOM型XSS是基于DOM文檔對象模型的一種漏洞,是以受用戶端浏覽器的腳本代碼所影響,而不是想前面兩種會與伺服器互動(不是解析,是互動)。

DOM型XSS由于是取決于輸出位置,并不取決于輸出環境,是以也可以說DOM型XSS既有可能是反射型的,也有可能是存儲型的,就是說它的輸出點是在DOM位置上。

這個類型有點抽象,說實話自己在了解到這個類型XSS時也是懵逼的很,看了這篇博文,大概懂了個一二:連結

就是說DOM型XSS隻在浏覽器上有惡意代碼才算。

如果對三種類型的XSS還有不了解或者區分不開的讀者可以檢視這個連結:連結在此

four、危害

個人覺得XSS與SQL注入是漏洞安全中兩個必不可少的話題,就像倚天劍和屠龍刀一樣,其危害可想而知。

以下是說可能涉及到的危害:

  • 1、盜取各類使用者帳号
  • 2、控制網站伺服器資料
  • 3、盜竊所屬網站公司的商業價值資料
  • 4、非法轉賬
  • 5、傳播XSS跨站腳本蠕蟲
  • 6、結合其他漏洞進行綜合漏洞攻擊
  • 7、提升攻擊者權限
  • 8、控制受害者機器向其他網站發起攻擊
  • 9、網站挂馬

five、XSS攻擊流程

攻擊流程:

我們來假設一個情景:現在有一個網站,它可能有XSS漏洞,那麼攻擊流程可以如下:

1、先在文本框或者URL裡判斷這個輸入位是在HTML屬性裡面還是在屬性外面,如果是屬性裡面,那麼我們就需要對其進行閉合猜測,即:>、’>、">等等,并且可以利用未閉合的特點加入事件引發彈窗等現象,如果是在外面,那麼進入下一步

2、我們可以使用<script>alert(/xss/)</script>語句及其變種進行初步測試,如果有結果,那麼我們就進入第四步,如果沒有結果,那麼我們就進入下一步

3、使用特殊的方式方法對XSS防禦進行繞過,當繞過成功時進入下一步

4、對網站進行進一步滲透,并結合其他漏洞進行綜合滲透

5、整理資料,書寫漏洞報告

測試XSS:

  • 檢測XSS一般分兩種:手工檢查、全自動檢測
  • 手工檢查

    一般使用盲打的方式,就是不知道背景代碼,靠自己的經驗去猜測,或者使用一些比較敏感的符号

    '<>"/()

    反正見到輸入框或者是URL參數就是加代碼。
  • 全自動檢測

    檢測工具:Appscan、AWVS、BurpSuite。。。

一些常見的腳本代碼函數:

<script>alert(/xss/)</script>		alert()方法用于顯示帶有指定消息和确認按鈕的警告框
"><script>alert(/xss/)</script>		對頁面屬性的閉合操作
document.cookie					顯示目前頁面的cookie
window.location.hostname		傳回Web主機的域名
window.location.pathname 		傳回目前頁面的路徑和檔案名
window.location.port			傳回Web主機的端口(80或443)
window.location.protocol 		傳回所使用的Web協定(http:或https:)
window.location.href   			傳回目前顯示的文檔的完整URL 
onload                  一張頁面或一幅圖像完成加載
onsubmit              	确認按鈕被點選觸發
onmousemove				滑鼠移動到相應位置觸發
onerror                 在加載文檔或圖像時發生錯誤
           

xss-labs-master靶機攻略

攻略位址:連結在此

Six、防禦措施

  • 1、對任何使用者的輸入與輸出都采取不信任
  • 2、對特殊符号及特殊語句進行的嚴格過濾
  • 3、設定黑名單與白名單
  • 4、在開發時開發人員嚴格設定WEB安全編碼規範
  • 5、對cookie進行特殊防禦
  • 6、對進行網頁編碼實體化
  • 7、對Session标記、驗證碼或者HTTP頭的檢查

防禦措施說白了,就是對任何使用者都采取不信任。

後語:我們不是網絡上面的破壞者,而是網絡世界的維護者,我們是白帽子,也是紅帽子!