DVWA-XSS (Reflected)
目錄
- 簡介
- 安全級別:Low
- 安全級別:Medium
- 安全級別:Impossible
- 防護總結(jié)
簡介
XSS(cross-site scripting)
跨站腳本攻擊,通過web站點漏洞,向客戶端交付惡意腳本代碼,這些代碼可以被瀏覽器成功的執(zhí)行,從而實現(xiàn)對客戶端的攻擊;
XSS可以盜取客戶端cookie,將客戶端重定向到第三方網(wǎng)站;
客戶端腳本語言
彈窗警告、廣告;
JavaScript;
在瀏覽器中執(zhí)行;
XSS漏洞類型
存儲型XSS;(持久型)
惡意代碼被保存到目標(biāo)網(wǎng)站的服務(wù)器中,每次用戶訪問時都會執(zhí)行腳本代碼,這種攻擊具有較強的穩(wěn)定性和持久性;反射型XSS;(非持久型)
惡意代碼并沒有保存在目標(biāo)網(wǎng)站,通過引誘用戶點擊一個惡意鏈接來實施攻擊的;DOM型XSS
DOM型XSS是一種基于DOM樹的XSS,例如服務(wù)器端經(jīng)常使用document.boby.innerHtml等函數(shù)動態(tài)生成html頁面,如果這些函數(shù)在引用某些變量時沒有進行過濾或檢查,就會產(chǎn)生DOM型的XSS;DOM型XSS可能是存儲型,也有可能是反射型;危害
竊取管理員帳號或Cookie,入侵者可以冒充管理員的身份登錄后臺。使得入侵者具有惡意操縱后臺數(shù)據(jù)的能力,包括讀取、更改、添加、刪除一些信息。
竊取用戶的個人信息或者登錄帳號,對網(wǎng)站的用戶安全產(chǎn)生巨大的威脅。例如冒充用戶身份進行各種操作。
網(wǎng)站掛馬。先將惡意攻擊代碼嵌入到Web應(yīng)用程序之中。當(dāng)用戶瀏覽該掛馬頁面時,用戶的計算機會被植入木馬。
發(fā)送廣告或者垃圾信息。攻擊者可以利用XSS漏洞植入廣告,或者發(fā)送垃圾信息,嚴(yán)重影響到用戶的正常使用。
安全級別:Low
查看源碼
<?phpheader ("X-XSS-Protection: 0");// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Feedback for end userecho '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; }?>源碼分析
在源碼中,可以看到直接引用來 name參數(shù),并沒有對參數(shù)做任何過濾;例如:輸入a,則返回含有a的js頁面;
構(gòu)造彈窗
<script>alert('xss')</script>
重定向
訪問192.168.37.128/a.jpg
<iframe src='http://192.168.37.128/a.jpg' height='0' width='0'></iframe>獲取cookie
<script>alert(document.cookie)</script>監(jiān)聽
步驟:
1. 制作一個js腳本;2. 把js腳本放到www目錄下;3. 開啟阿帕奇服務(wù);4. 監(jiān)聽端口;5. 訪問js腳本;6. 獲取到j(luò)s腳本實現(xiàn)的結(jié)果;首先在Kali上寫a.js腳本,開啟Apache服務(wù),并監(jiān)聽指定的端口;
輸入
查看Kali監(jiān)聽到的cookie值;
安全級別:Medium
查看源碼
<?phpheader ("X-XSS-Protection: 0");// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Get input$name = str_replace( '<script>', '', $_GET[ 'name' ] );// Feedback for end userecho "<pre>Hello ${name}</pre>"; }?>源碼分析
將<script>過濾,可以使用事件類型標(biāo)簽繞過,也可使用嵌套構(gòu)造和大小寫轉(zhuǎn)換繞過
構(gòu)造彈窗
<img src=1 onerror=alert('xss') />
安全級別:High
查看源碼
源碼分析
正則過濾更加完善,不區(qū)分大小寫,且使用通配符匹配,導(dǎo)致嵌套構(gòu)造的方法也不能成功,但依舊可以使用事件類型標(biāo)簽或偽協(xié)議的方法
構(gòu)造彈窗
<img src=1 onerror=alert('xss') />安全級別:Impossible
查看源碼
<?php// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Check Anti-CSRF tokencheckToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// Get input$name = htmlspecialchars( $_GET[ 'name' ] );// Feedback for end userecho "<pre>Hello ${name}</pre>"; }// Generate Anti-CSRF token generateSessionToken();?>源碼分析
name變量通過htmlspecialchars()函數(shù)被HTML實體化后輸出在了標(biāo)簽中,目前來說沒有什么的姿勢可以繞過,如果這個輸出在一些標(biāo)簽內(nèi)的話,還是可以嘗試?yán)@過的
當(dāng)安全級別為Impossible時,使用htmlspecialchars函數(shù)把預(yù)定義的字符&、”、 ’、<、>轉(zhuǎn)換為 HTML 實體,防止瀏覽器將其作為HTML元素(特殊意義)
防護總結(jié)
轉(zhuǎn)義字符輸出
白名單驗證
HTML實體化
總結(jié)
以上是生活随笔為你收集整理的DVWA-XSS (Reflected)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【设计模式】-工厂模式->工厂方法模式(
- 下一篇: 内网渗透之隐藏通信隧道技术