1. 程式人生 > >【安全測試】Web應用安全之XSS跨站指令碼攻擊漏洞

【安全測試】Web應用安全之XSS跨站指令碼攻擊漏洞

前言

以前都只是在各類文件中見到過XSS,也進行過相關的學習,但是都是一知半解,過了一段時間就忘了。

前幾天我們收到了了一份標題為《XX賬號暱稱引數中存在儲存XSS漏洞》的報告文件,來源是一個叫漏洞盒子的機構,看它的官方介紹,是一個網際網路安全測試眾測平臺。

第一次在實際工作中遇到相關的問題,所以決定再系統的學習一下,此篇為學習記錄。

XSS概念及分類

XSS 全稱(Cross Site Scripting),直譯過來就是跨站指令碼攻擊,是Web程式中最常見的漏洞。

有點類似於SQL注入,可以簡單理解為“HTML注入”,把使用者輸入的資料當做指令碼執行,進而達到想要的目的。而這種目的通常是惡意的,比如獲取使用者的Cookie,導航到惡意網站,攜帶木馬等。

XSS攻擊可以根據攻擊發生的實時性分為以下幾類:

反射型XSS(非永續性XSS)

簡單說可充當執行指令碼的惡意資料,由使用者從“外部”輸入,通過提交輸入的方式“嵌入”到網頁url中。

簡單舉例:
針對存在XSS攻擊的某個網頁輸入框中輸入“惡意資料”,並提交,通常,這類提交操作對應著一個get請求,當我們把這個請求傳送給其他使用者,並讓使用者在web瀏覽器中開啟請求,這時就會把惡意資料當作指令碼再次執行,比如傳送cookie等資訊到指定的郵箱等。

儲存型XSS(持久型XSS)

類似反射型XSS,不同的是,其“惡意資料”本身就是包含在網頁原始碼中、或者自動從伺服器內部讀取並“嵌入”網頁中。

簡單舉例:


黑客在某個論壇寫了一篇文章,並在文章中寫入了用會充當指令碼執行的資料,比如一段惡意javascript程式碼,這樣所有瀏覽該文章的使用者,都會自動在其瀏覽器中執行這段惡意程式碼。

非永續性XSS漏洞一般威脅的是使用者個體,持久型XSS所威脅的物件可能是是大量的使用者.

如何測試XSS漏洞

站在一個測試的角度,我們要怎麼來對XSS漏洞進行測試呢?

方法一:

檢視程式碼,查詢關鍵的變數, 客戶端將資料傳送給Web 服務端一般通過三種方式 Querystring, Form表單,以及cookie. 例如在ASP的程式中,通過Request物件獲取客戶端的變數

<%
strUserCode =  Request.QueryString(“code”);
strUser =  Request.Form(“USER”);
strID =    Request.Cookies(“ID”);
%>

假如變數沒有經過htmlEncode處理, 那麼這個變數就存在一個XSS漏洞

方法二: 

準備測試指令碼:

"/><script>alert(document.cookie)</script><!--
<script>alert(document.cookie)</script><!--
"onclick="alert(document.cookie)

在網頁中的Textbox或者其他能輸入資料的地方,輸入這些測試指令碼,看能不能彈出對話方塊,能彈出的話說明存在XSS漏洞

XSS漏洞修復

原則:不相信客戶輸入的資料

XSS之所以會發生, 是因為使用者輸入的資料變成了程式碼。所以我們需要對使用者輸入的資料進行HTML Encode處理。 將其中的"中括號"、“單引號”、“引號”之類的特殊字元進行編碼。

攻擊程式碼不一定在<script></script>,所以要做好以下措施:

將重要的cookie標記為http only,  這樣的話Javascript中的document.cookie語句就不能獲取到cookie了.  

只允許使用者輸入我們期望的資料。
> 例如:年齡的textbox中,只允許使用者輸入數字。   而數字之外的字元都過濾掉。

對資料進行Html Encode 處理
過濾或移除特殊的Html標籤,  
> 例如: <script>, <iframe> ,  &lt; for <, &gt; for >, &quot for

過濾JavaScript 事件的標籤。  
> 例如 "onclick=", "onfocus" 等等。

處理建議

1、輸入過濾:在使用者輸入的引數進行過濾,過濾掉’<’,’>’等符號,或者script,input,onerror等標籤。
2、輸出過濾:將使用者輸入內容作為頁面內容的時候必須經過檢測與過濾。使用HTMLEncode將以下特殊字元進行轉碼

參考資料:

相關推薦

安全測試Web應用安全XSS指令碼攻擊漏洞相關

閱讀目錄 歡迎轉載,也請註明出處 :http://www.cnblogs.com/Detector/p/8811216.html 謝謝!前言 以前都只是在各類文件中見到過XSS,也進行過相關的學習,但是都是一知半解,過了一段時間就忘了。 前幾天我們收到了了一份標題為《XX賬號暱稱引數中存在儲存XSS漏洞

安全測試Web應用安全XSS指令碼攻擊漏洞

前言 以前都只是在各類文件中見到過XSS,也進行過相關的學習,但是都是一知半解,過了一段時間就忘了。 前幾天我們收到了了一份標題為《XX賬號暱稱引數中存在儲存XSS漏洞》的報告文件,來源是一個叫漏洞盒子的機構,看它的官方介紹,是一個網際網路安全測試眾測平臺。 第一次在實際工作中遇到相關的問題,所以決定再系統的

PHP漏洞全解(四)-xss指令碼攻擊

轉自:https://www.cnblogs.com/pingliangren/p/5586977.html XSS(Cross Site Scripting),意為跨網站指令碼攻擊,為了和樣式表css(Cascading Style  Sheet)區別,縮寫為XSS 跨站指令碼主

web攻防指令碼攻擊漏洞

摘要:XSS跨站指令碼攻擊一直都被認為是客戶端Web安全中最主流的攻擊方式。因為Web環境的複雜性以及XSS跨站指令碼攻擊的多變性,使得該型別攻擊很難徹底解決。那麼,XSS跨站指令碼攻擊具體攻擊行為是什麼,又該如何進行有效的防範呢?本文對此進行了有針對性的具體例項分析。

JAVA WEB中處理防SQL注入|防XSS指令碼攻擊(咋個辦呢 zgbn)

JAVA WEB中處理防SQL注入|防XSS跨站指令碼 在java web專案中,必然會涉及到從客戶端向服務端提交資料,那麼由於服務端對資料的處理等動作,會因為字串拼接和使用的特殊性,存在一些漏洞被人利用。 這篇文章,主要介紹一下在java web專案中,程

八、springweb應用安全設計

> 內容 > - Spring Security > - 使用Servlet規範中的Filter保護Web應用 > - 基於資料庫和LDAP進行認證 > 關鍵詞 ## 8.1 理解Spring Security模組 > Spring Security:是為基於Spr

J2EE十三個規範Web應用JSP和Servlet

【學習概要】     本篇部落格開始將會開始總結J2EE十三個規範的內容,在學習完十三個規範之後,巨集觀梳理了一遍,將其進行歸類和聯絡,十三個規範是什麼是必須要知道的。下面我們就從Web應用層開始。

讀書筆記WEB應用:1、日誌配置

  log4j.properties 使用 一.引數意義說明 輸出級別的種類 ERROR、WARN、INFO、DEBUG ERROR 為嚴重錯誤 主要是程式的錯誤 WARN 為一般警告,比如session丟失 INFO 為一般要顯示的資訊,比如登入登出 DEBUG 為程式的除錯資訊

web安全(1)-- XSS指令碼攻擊

XSS攻擊,通常指黑客通過“html注入” 篡改了網頁,插入了惡意的指令碼,從而在使用者瀏覽網頁的時候,控制使用者瀏覽器的一種攻擊。其原理是攻擊者向有XSS漏洞的網站中輸入(傳入)一段惡意的HTML程式碼,當其它使用者瀏覽該網站時,這段HTML程式碼會自動執行,從而達到攻擊的目的。如,盜取使用者Co

《白帽子講Web安全》3-指令碼攻擊XSS

第3章 跨站指令碼攻擊(XSS) 3.1 XSS簡介 Cross Site Script,跨站指令碼攻擊,簡稱XSS。 XSS攻擊,通常是指黑客通過“HTML注入”篡改了網頁,插入了惡意的指令碼,從而在客使用者瀏覽網頁時,控制使用者瀏覽器的一種攻擊。

程式碼審計EasySNS_V1.6 前臺XSS指令碼漏洞分析

  0x00 環境準備 EasySNS官網:http://www.imzaker.com/ 網站原始碼版本:EasySNS極簡社群V1.60 程式原始碼下載:http://es.imzaker.com/index.php/Topic/gview/id/92.html 預設後臺地址:http

程式碼審計YUNUCMS_v1.0.6 前臺反射型XSS指令碼漏洞分析

  0x00 環境準備 QYKCMS官網:http://www.yunucms.com 網站原始碼版本:YUNUCMSv1.0.6 程式原始碼下載:http://www.yunucms.com/Download/index.html 測試網站首頁:   0x01 程式碼分析

XSS技巧拓展————4、淺談指令碼攻擊與防禦

跨站指令碼簡稱xss(cross-site scripting),利用方式主要是藉助網站本身設計不嚴謹,導致執行使用者提交的惡意js指令碼,對網站自身造成危害。xss漏洞是web滲透測試中最常見而又使用最靈活的一個漏洞,近期在拜讀了《白帽子講web安全》、《Web實戰篇》、《XSS跨站指令碼

DVWADOM XSS(DOM型指令碼攻擊)

LOW 原始碼: <?php # No protections, anything goes ?> 從原始碼可以看出,這裡low級別的程式碼沒有任何的保護性措施! 頁面本意是叫我們選擇預設的語言,但是對default引數沒有進行任何的過濾 所以我們

張小白的滲透路(四)——XSS指令碼漏洞詳解

XSS簡介 XSS又叫CSS(Cross Site Script),即跨站指令碼攻擊。是指攻擊者在網頁中嵌入客戶端指令碼,通常是JavaScript編寫的惡意程式碼,當用戶使用瀏覽器瀏覽被嵌入惡意程式碼

常見Web應用安全問題---4、Directory traversal

控制 code 註冊 input site 硬盤管理 下載 num ron Web應用程序的安全性問題依其存在的形勢劃分,種類繁多,這裏不準備介紹所有的,只介紹常見的一些。 常見Web應用安全問題安全性問題的列表:   1、跨站腳本攻擊(CSS or

03.WebXSS安全測試

XSS 全稱(Cross Site Scripting) 跨站指令碼攻擊, 是Web程式中最常見的漏洞。指攻擊者在網頁中嵌入客戶端指令碼(例如JavaScript), 當用戶瀏覽此網頁時,指令碼就會在使用者的瀏覽器上執行,從而達到攻擊者的目的. 比如獲取使用者

循序漸進學.Net Core Web Api開發系列15應用安全

系列目錄 一、概述 本篇介紹Web系統的應用安全,主要涉及使用者的身份認證和訪問許可權問題。 大部分web應用習慣採用Session來儲存使用者認證資訊,對於WebApi而言,呼叫者不一定是Web瀏覽器,可能是Android、iOS客戶端,可能是微信小程式,也可能是客戶端程式等等,這些客戶端

循序漸進學.Net Core Web Api開發系列16應用安全續-加密與解密

系列目錄 一、概述 應用安全除了使用者許可權認證外,還要考慮到資料安全,傳輸安全、系統漏洞等方面。本篇文章重點討論資料儲存安全和傳輸安全,主要技術手段就是加密和解密。 二、基本概念 資訊在傳輸和儲存的過程中有洩密的風險,加密的目的就是解決這些風險。 1、資訊儲存在資料庫中,如果資料庫

專項測試京東“安全測試

                                          &nb