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