前言:跨站腳本(Cross-Site Scripting,XSS)是一種常常出如今Web應用程序中的計算機安全漏洞,是因爲Web應用程序對用戶的輸入過濾不足而產生的。攻擊者一般利用網站漏洞把而已的腳本代碼(一般包括HTML代碼和客戶端jjavascript腳本)注入到網頁之中,當其餘用戶瀏覽這些網頁時,就會執行其中的惡意代碼,對受害用戶可能採起Cookie資料竊取,會話劫持,釣魚欺騙等各類攻擊。
0x00:
在裝好DVWA後我便火燒眉毛的想試試,那咱們先從最簡單的xss開始。
0x01:首先在DVWA Security中將難度調節爲low(哈哈,先易後難),以後擇
Xss(Reflected)
及反射型xss開始咱們的測試。
先來試試黑盒測試,咱們輸入<script>alert(/xss/)</script>
發現提交後只是在下面顯示了個Hello,而咱們想要的彈窗卻沒出現。
F12查看源碼發現<pre>標籤,猜想是<pre>標籤將<>實體化了
從新輸入</pre><script>alert(/xss/)</script><pre>成功彈出彈窗。
再用白盒分析如下漏洞的成因:
上述代碼中沒有對name參數做任何過濾和檢查,存在明顯的xss漏洞。
0x01:medium模式
先輸入</pre>
<script>alert(/xss/)</script><pre>測試
經過輸出結果分析是對<script>標籤進行了過濾,
從新輸入
成功彈出窗口,存在xss漏洞
使用白盒分析漏洞緣由:
能夠看出經過$name = str_replace('<script>','',$_GET['name'])這句代碼替換<script>標籤爲''空字符。因此咱們可使用上述的雙寫繞過。
· 另外一種方法,大小寫混淆繞過:
輸入:
</pre><SCriPt>alert(/xss/)</ScRipt><pre>
通樣成功彈出
0X02:high模式
、服務器端核心代碼:
能夠看到high級別一樣使用了黑名單過濾輸入的方法,str_replace()
函數使用正則表達式的搜索和替換,這樣使得雙寫繞過和大小寫混淆不可行。
咱們能夠考慮
經過img、body等標籤的事件或者iframe等標籤的src注入惡意的js代碼。
輸入:
</pre><img src=1 onerror=alert(/xss/)><pre>
輸入:<a href='#' onclick=alert(/xss/)>test</a>
0X03:Impossible級別
服務器端核心代碼:
能夠看到,Impossible級別的代碼使用htmlspecialchars函數把預約義的字符&、」、 ’、<、>轉換爲 HTML 實體,防止瀏覽器將其做爲HTML元素。javascript