安全隨筆之xss攻擊
XSS攻擊
什麼是xss攻擊
XSS攻擊通常指的是通過利用網頁開發時留下的漏洞,通過巧妙的方法注入惡意指令程式碼到網頁,使使用者載入並執行攻擊者惡意製造的網頁程式。這些惡意網頁程式通常是JavaScript,但實際上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻擊成功後,攻擊者可能得到包括但不限於更高的許可權(如執行一些操作)、私密網頁內容、會話和cookie等各種內容
xss攻擊的分類
從攻擊程式碼的工作方式可以分為三個型別: (1)持久型跨站:最直接的危害型別,跨站程式碼儲存在伺服器(資料庫)。 (2)非持久型跨站:反射型跨站指令碼漏洞,最普遍的型別。使用者訪問伺服器-跨站連結-返回跨站程式碼。 (3)DOM跨站(DOM XSS):DOM(document object model文件物件模型),客戶端指令碼處理邏輯導致的安全問題。 基於DOM的XSS漏洞是指受害者端的網頁尾本在修改本地頁面DOM環境時未進行合理的處置,而使得攻擊指令碼被執行。在整個攻擊過程中,伺服器響應的頁面並沒有發生變化,引起客戶端指令碼執行結果差異的原因是對本地DOM的惡意篡改利用。
DOM型與反射型(非持久型)區別
DOM型不經過伺服器處理;反射型,持久型都經過伺服器處理;持久型會把指令碼落在資料庫,造成更大危害;
利用dvwa演示xss攻擊彈窗cookie
進入dvwa首頁,設定DVWA Security 等級為low
1. 反射型演示
選中反射型XSS,頁面上輸入test,點選提交檢視頁面展示,發現頁面url變成 http://xxx.xxx.xxx.xxx/dvwa/vulnerabilities/xss_r/?name=test# 如圖:
可以猜測是依據url中給的引數做出了展示,那麼開始演示XSS攻擊,讓瀏覽器展示當前登入使用者的cookie;
第一步是準備js指令碼:
<script>alert(document.cookie)</script>
第二步將url中的test,換成我們的指令碼內容,重新整理頁面
第三步檢視是否彈出cookie
至此,low等級的xss攻擊完成
2. 持久型演示
注意:測完持久型xss攻擊,請reset db
選中持久型XSS
第一步是準備js指令碼:
<script>alert(document.cookie)</script>
第二步,將指令碼字元輸入到message或者name中
此時發現name框的指令碼內容不全,繼續第三步
第三步,在html中將name的input框的輸入長度改成足夠大,這裡我們改成50
第四步,將指令碼內容填入name的input框,點選提交;提交之後發現彈出了cookie
第五步,logout後重新登入,進入持久型XSS頁面,發現還會一直彈cookie,這是因為已經把指令碼寫在了資料庫中,每次開啟這個頁面都會觸發指令碼;所以持久型危害極大;
注意:測完持久型xss攻擊,請reset db
3. DOM型演示
選中DOM型XSS
第一步是準備js指令碼:
<script>alert(document.cookie)</script>
第二步,選擇english之後選擇select,檢視url,發現是 http://xxx.xxx.xxx.xxx/dvwa/vulnerabilities/xss_d/?default=English,如下圖
第三步,將english替換成指令碼,重新整理url,發現彈出了cookie如圖:
總結
上面的演示都是基於low等級,不同等級注入指令碼也不會一樣,也不是所有網頁都存在注入漏洞,主要是能看出注入的危害,如果執行的不是彈窗,而是將本機的cookie傳遞給不法分子,甚至在頁面寫上其他惡意指令碼,危害就會無限擴大。