學習目標:
復習好xss(DOM),xss(Reflect)型別,并在DVWA上進行測驗學習內容:
xss漏洞的基本原理和防御學習時間:
2020.9.11-21:00-23:00學習產出:
簡單復習一下xss漏洞原理:xss漏洞原理就是:利用HTML和javascript代碼盜取別人的cookie或者整個頁面的原始碼,
xss漏洞與mysql注入漏洞原理類似,但xss漏洞注入的是HTML,JavaScript和css,
舉個簡單的例子,用GET傳參
<?php
echo $_GET['a'];
?>
這個時候,在頁面上輸入?a=<script>alert(1)</script>
就會直接彈窗“1”出來,
DVWA xss(DOM) low級別:
先觀察Low級別的原始碼,發現

原始碼上直接說了是沒有任何保護的,那就直接懟上去就可以了,
即在網站輸入?default=English<script>alert(1)</script>

xss(DOM) Medium級別:
依然是先觀察原始碼,看看增加了什么花樣,

可以看到這里多了個stripos()函式,查詢資料后可知
Stripos()函式——查找字串在另一字串中第一次出現的位置(不區分大小寫)
根據原始碼一定要等于false,否則的話就會回傳default,那么我們可以先試用一下剛才的彈窗指令?default=English<script>alert(1)</script>
發現啥也沒有彈出來,也就是說script被過濾掉了,
那我們可以換一種思路,即用<img>漏洞
輸入?default=English<img src=1 one rror=alert(1)>
回車后,跟剛才的<script>不太一樣,雖然都沒有顯示,但是<script>后面直接什么都沒有了,

但是<img>輸入完后,在English后面還跟著輸入進去的彈窗指令,

但是也還是沒有彈出任何東西,
既然后面還跟著東西,也就是說輸入的指令是對的,只不過應該是被某些東西給擋下來了,那我們可以進去HTML代碼里面看看,

可以看到指令被寫到 option value里面去了,
那就得繞過value把指令拿出來,
于是,?default=English</option><img src=1 one rror=alert(1)>

結果還是在里面出不來,那就直接把select給過了,
?default=English</option></select><img src=1 one rror=alert(1)>

這樣就出現了彈窗了,
正常來說,xss漏洞寫進來,它是單獨一行的,應該不會寫到option函式里面去的,那這個DOM型medium級別的xss漏洞就提供了一種思路,
如果所寫的東西出現在HTML代碼里面,但是沒有彈窗,只是中間被什么東西給過濾了,這時候就繞過過濾的函式了,
high級別:
依然是先看原始碼

原始碼里面“#”是Ok 的
php的注釋符有“#”
HTML的注釋符并沒有“#”
那只要一個“#”就可以繞過了,
?default=English#<script>alert(1)</script>

impossible級別(xss(DOM)漏洞的保護)

意思是,不需要做任何事情,保護在客戶端處理,
xss本身在IE上是有保護的,window默認會過濾掉xss,只不過寫php的時候基于一些原因會把啟用xss篩選器給禁用,
xss(Reflected) low級別:

依然沒有任何防御,直接懟,
<script>alert(1)</script>

medium級別

出現了個str_replace()函式,
str_replace()函式以其他字符替換字串中的一些字符(區分大小寫)
因為區分大小寫,所以可以用大小寫繞過
<sCript>alert(1)</script>

或者可以用<sc<script>ript>alert(1)</script>

high級別

這里出現了個正則匹配preg_replace()
preg_replace 函式執行一個正則運算式的搜索和替換,
如:
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
其意思為搜索 subject 中匹配 pattern 的部分, 以 replacement 進行替換,
回傳到題目中來,其意思為無數次匹配script的大小寫,一旦發現就給注釋掉,
既然不給用script,那就改用img咯
即可以用<img src=1 one rror=alert(1)>

impossible(抵擋xss(Reflected)漏洞)級別:

這里出現了htmlspecialchars() 函式
把預定義的字符 “<” (小于)和 “>” (大于)轉換為 HTML 物體
直接把彈窗指令所需要的“<”和“>”都變沒了,那還怎么搞xss攻擊?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/29729.html
標籤:其他
