① 什麼是XSS跨站腳本攻擊
什麼是XSS攻擊XSS又叫CSS (Cross Site Script) ,跨站腳本攻擊。它指的是惡意攻擊者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web裡面的html代碼會被執行,從而達到惡意攻擊用戶的特殊目的。XSS屬於被動式的攻擊,因為其被動且不好利用,所以許多人常忽略其危害性。而本文主要講的是利用XSS得到目標伺服器的shell。技術雖然是老技術,但是其思路希望對大家有幫助。 [編輯本段]如何尋找XSS漏洞就個人而言,我把XSS攻擊分成兩類,一類是來自內部的攻擊,主要指的是利用程序自身的漏洞,構造跨站語句,如:dvbbs的showerror.asp存在的跨站漏洞。另一類則是來來自外部的攻擊,主要指的自己構造XSS跨站漏洞網頁或者尋找非目標機以外的有跨站漏洞的網頁。如當我們要滲透一個站點,我們自己構造一個有跨站漏洞的網頁,然後構造跨站語句,通過結合其它技術,如社會工程學等,欺騙目標伺服器的管理員打開。
② 【論跨站腳本(XSS)攻擊的危害、成因及防範】跨站腳本攻擊
1 引言 在Web 2.0出現以前,跨站腳本(XSS)攻擊不是雀大那麼引人注目,但是在Web 2.0出現以後,配合流行的AJAX技術,XSS的危害性達到了十分嚴重的地步。比如,世界上第一個跨站腳本蠕蟲發生在MySpace網站,20小時內就傳染了一百萬個用戶,最後導致該網站癱瘓。因此我認為,XSS是在腳本環境下的溢出漏洞,其危害性絕不亞於傳統的緩沖區溢出漏洞。
2 XSS攻擊的定義
跨站腳本英文名稱是(Cross Site Script),為了與層疊樣式表(Cascading Style Sheets)區分,故命名為XSS。
XSS攻者鍵擊是指入侵者在遠程WEB頁面的HTML代碼中插入具有惡意目的的數據,用戶認為該頁面是可信賴的,但是當瀏覽器下載該頁面時,嵌入其中的腳本將被解釋執行。
3 跨站腳本漏洞的成因
3.1XSS成因概括
XSS其實就是Html的注入問題,攻擊者的輸入沒有經過嚴格的控制進入了資料庫最
終顯示給來訪的用戶,導致可以在來訪用戶的瀏覽器里以瀏覽用戶的身份執行Html代碼,數據流程如下:攻擊者的Html輸入―>web程序―>進入資料庫―>web程序―>用頃嫌豎戶瀏覽器。
3.2常規跨站漏洞
我們來看一段接收評論的代碼:
可以看到,從客戶端輸入的所有變數沒有經過任何過濾就直接進入了資料庫。攻擊者可以在表單中輸入:,點擊提交後,那麼其他用戶在瀏覽該頁面時就會不知不覺打開一個預先掛有木馬的頁面https://www.省略/muma.html,如果沒打相應的補丁,就會中馬。當然XSS的攻擊方式還有很多,比如通過跨站將上傳的圖片備份直接得到WebShell、結合AJAX技術通過蠕蟲攻擊等,因為這不是本文的重點,在這里就不一一列舉了。
3.3 UBB跨站漏洞
在很多論壇里發帖時,點擊圖片模樣的按鈕,在編輯區域就會出現[IMG][/IMG]的字樣,這是採用了一種UBB編碼的方式,如果攻擊者輸入[IMG] javascript:alert(」XSS」) [/IMG],它會默認將其轉換為,通過這種方式誘發的跨站漏洞稱為UBB跨站漏洞。
4 防範方法
4.1針對常規跨站漏洞
在常規的跨站漏洞中,正是因為攻擊者可以不受限制地引入「>」,導致了他可以操縱一個html標記,從而誘發了XSS攻擊。因此首先就要過濾掉「>」:
Replace(str,」」,」>」)
4.2針對UBB跨站漏洞
UBB跨站漏洞的防範相對來說比較復雜,首先攻擊者必須引入javascript或vbscript代碼來達到攻擊的目的,所以首先要過濾中javascript後面的冒號,將其用中文的冒號替代:
Replace(str,」:」,」:」)
但是HTML支持ASCII這樣的編碼,攻擊者又可以通過重新達到目的(58是冒號的十進制ASCII碼),所以必須過濾&符號:
Replace(str,」&」,」&」)
以上雖然已經過濾了來自標簽屬性的威脅,攻擊者還是可以通過觸發一個錯誤事件來達到目的。所以還需過濾掉以下字元:
Replace(str,」 」,」 」)//過濾空格
Replace(str,」=」,」=」)//過濾等號
Replace(str,」」」」,」"」)//過濾雙引號
5 結束語
通過以上分析我們看到,XSS是一種危害較大、較難防範,並且更加隱蔽的攻擊方式。其實只要明白其原理,再加上勤加思考防範的對策,就可以根治XSS漏洞。
參考文獻
[1]葉子青. ASP網路開發入門與實踐.人民郵電出版社,2006.
[2]韓國峰,柯華坤,王磊. ASP網站開發典型模塊與實例精講.電子工業出版社,2006.
③ 【web安全】xss跨站腳本攻擊有哪些
xss攻擊可以分成兩種類型:
1.非持久型攻擊
2.持久型攻擊
非持久型xss攻擊:顧名思義,非持久型xss攻擊是一次性的,僅對當次的頁面訪問產生影響。非持久型xss攻擊要求用戶訪問一個被攻擊者篡改後的鏈接,用戶訪問該鏈接時,被植入的攻擊腳本被用戶游覽器執行,從而達到攻擊目的。
持久型xss攻擊:持久型xss,會把攻擊者的數據存儲在伺服器端,攻擊行為將伴隨著攻擊數據一直存在。
也可以分成三類:
反射型:經過後端,不經過資料庫
存儲型:經過後端,經過資料庫
DOM:不經過後端,DOM—based XSS漏洞是基於文檔對象模型Document Objeet Model,DOM)的一種漏洞,dom - xss是通過url傳入參數去控制觸發的。
④ 什麼是xss攻擊
一、什麼是跨站腳本攻擊
跨站腳本攻擊(Cross Site Scripting)縮寫為CSS,但這會與層疊樣式表(Cascading Style Sheets,CSS)的縮寫混淆。通常將跨站腳本攻擊縮寫為XSS。
跨站腳本攻擊(XSS),是最普遍的Web應用安全漏洞。這類漏洞能夠使得攻擊者嵌入惡意腳本代碼到正常用戶會訪問到的頁面中,當正常用戶訪問該頁面時,則可導致嵌入的惡意腳本代碼的執行,從而達到惡意攻擊用戶的目的。
二、跨站腳本攻擊的種類
從攻擊代碼的工作方式可以分為三個類型:
1、持久型跨站:最直接的危害類型,跨站代碼存儲在伺服器(資料庫)。
2、非持久型跨站:反射型跨站腳本漏洞,最普遍的類型。用戶訪問伺服器-跨站鏈接-返回跨站代碼。
3、DOM跨站(DOM XSS):DOM(document object model文檔對象模型),客戶端腳本處理邏輯導致的安全問題。
三、跨站腳本攻擊的手段和目的
常用的XSS攻擊手段和目的有:
1、盜用cookie,獲取敏感信息。
2、利用植入Flash,通過crossdomain許可權設置進一步獲取更高許可權;或者利用Java等得到類似的操作。
3、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻擊)用戶的身份執行一些管理動作,或執行一些一般的如發微博、加好友、發私信等操作。
4、利用可被攻擊的域受到其他域信任的特點,以受信任來源的身份請求一些平時不允許的操作,如進行不當的投票活動。
5、在訪問量極大的一些頁面上的XSS可以攻擊一些小型網站,實現DDoS攻擊的效果。
四、跨站腳本攻擊的防禦
XSS攻擊主要是由程序漏洞造成的,要完全防止XSS安全漏洞主要依靠程序員較高的編程能力和安全意識,當然安全的軟體開發流程及其他一些編程安全原則也可以大大減少XSS安全漏洞的發生。這些防範XSS漏洞原則包括:
1、不信任用戶提交的任何內容,對所有用戶提交內容進行可靠的輸入驗證,包括對URL、查詢關鍵字、HTTP頭、REFER、POST數據等,僅接受指定長度范圍內、採用適當格式、採用所預期的字元的內容提交,對其他的一律過濾。盡量採用POST而非GET提交表單;對「<」,「>」,「;」,「」」等字元做過濾;任何內容輸出到頁面之前都必須加以en-code,避免不小心把htmltag顯示出來。
2、實現Session 標記(session tokens)、CAPTCHA(驗證碼)系統或者HTTP引用頭檢查,以防功能被第三方網站所執行,對於用戶提交信息的中的img等link,檢查是否有重定向回本站、不是真的圖片等可疑操作。
3、cookie 防盜。避免直接在cookie中泄露用戶隱私,例如email、密碼,等等;通過使cookie和系統IP綁定來降低cookie泄露後的危險。這樣攻擊者得到的cookie沒有實際價值,很難拿來直接進行重放攻擊。
4、確認接收的內容被妥善地規范化,僅包含最小的、安全的Tag(沒有JavaScript),去掉任何對遠程內容的引用(尤其是樣式表和JavaScript),使用HTTPonly的cookie。
⑤ 跨站腳本攻擊是什麼意思
XSS,跨站腳本攻擊,Cross-Site
Scripting,為了和前端的CSS避免重名,簡稱為XSS,是指通過技術手段,向正常用戶請求的HTML頁面中插入惡意腳本,執行。
這種攻擊主要是用於信息竊取和破壞等目的。在防範XSS上,主要就是通過對用戶輸入的數據做過濾或者或者轉義,可以使用框架提供的工具類HTML
Util,另外前端在瀏覽器展示數據的時候,要使用安全的API展示數據。比如使用inner text而不是inner HTML。
⑥ 什麼是跨站攻擊
跨站攻擊,即Cross Site Script Execution(通常簡寫為XSS)是指攻擊者利用網站程序對用戶輸入過濾不足,輸入可以顯示在頁面上對其他用戶造成影響的HTML代碼,從而盜取用戶資料、利用用戶身份進行某種動作或者對訪問者進行病毒侵害的一種攻擊方式。
跨站腳本攻擊分類
1、持久型XSS,又稱存儲型XSS[1] 。
2、非持久型XSS,又稱反射型XSS。[2]
3、DOM-XSS,DOM(文檔對象模型)。
持久型的XSS較第二、第三種XSS攻擊的危害較大。
兩種方式
其一由於HTML語言允許使用腳本進行簡單交互,入侵者便通過技術手段在某個頁面里插入一個惡意HTML代碼——例如記錄論壇保存的用戶信息(Cookie),由 於Cookie保存了完整的用戶名和密碼資料,用戶就會遭受安全損失。
其二XST攻擊描述:攻擊者將惡意代碼嵌入一台已經被控制的主機上的web文件,當訪問者瀏覽時惡意代碼在瀏覽器中執行,然後訪問者的cookie、http基本驗證以及ntlm驗證信息將被發送到已經被控制的主機,同時傳送Trace請求給目標主機,導致cookie欺騙或者是中間人攻擊。
攻擊條件
XST:
1、需要目標web伺服器允許Trace參數;
2、需要一個用來插入XST代碼的地方;
3、目標站點存在跨域漏洞。
⑦ 如何進行跨站腳本攻擊
你好~
XSS漏洞產生的原因:
跨站點腳本的主要原因是程序猿對用戶的信任。開發人員輕松地認為用戶永遠不會試圖執行什麼出格的事情,所以他們創建應用程序,卻沒有使用任何額外的代碼來過濾用戶輸入以阻止任何惡意活動。另一個原因是,這種攻擊有許多變體,用製造出一種行之有效的XSS過濾器是一件比較困難的事情。
但是這只是相對的,對用戶輸入數據的」編碼」和」過濾」在任何時候都是很重要的,我們必須採取一些針對性的手段對其進行防禦。
如何創造一個良好的XSS過濾器來阻止大多數XSS攻擊代碼
1 .需要重點」編碼」和」過濾」的對象
The URL
HTTP referrer objects
GET parameters from a form
POST parameters from a form
Window.location
Document.referrer
document.location
document.URL
document.URLUnencoded
cookie data
headers data
database data
防禦XSS有一個原則:
以當前的應用系統為中心,所有的進入應用系統的數據都看成是輸入數據(包括從FORM表單或者從資料庫獲取到的數據),所有從當前應用系統流出的數據都看作是輸出(包括輸出到用戶瀏覽器或向資料庫寫入數據)
對輸入的數據進行」過濾」,對輸出數據進行」編碼」。這里的」編碼」也要注意,必須針對數據具體的上下文語境進行針對性的編碼。例如數據是輸出到HTML中的那就要進行HtmlEncode,如果數據是輸出到javascript代碼中進行拼接的,那就要進行javascriptEncode。
如果不搞清楚數據具體輸出的語境,就有可能因為HtmlParser()和javascriptParser()兩種解析引擎的執行先後問題導致看似嚴密的」編碼」形同虛設。
⑧ 跨站腳本攻擊的XSS防禦規則
下列規則旨在防止所有發生在應用程序的XSS攻擊,雖然這些規則不允許任意向HTML文檔放入不可信數據,不過基本上也涵蓋了絕大多數常見的情況。你不需要採用所有規則,很多企業可能會發現第一條和第二條就已經足以滿足需求了。請根據自己的需求選擇規則。 – 不要在允許位置插入不可信數據
第一條規則就是拒絕所有數據,不要將不可信數據放入HTML文檔,除非是下列定義的插槽。這樣做的理由是在理列有解碼規則的HTML中有很多奇怪的context,讓事情變得很復雜,因此沒有理由將不可信數據放在這些context中。
<script>...NEVERPUTUNTRUSTEDDATAHERE...</script>directlyinascript<!--...NEVERPUTUNTRUSTEDDATAHERE...-->insideanHTMLcomment<div...NEVERPUTUNTRUSTEDDATAHERE...=test/>inanattributename<...NEVERPUTUNTRUSTEDDATAHERE...href=/test/>inatagname
更重要的是,不要接受來自不可信任來源的JavaScript代碼然後運行,例如,名為「callback」的參數就包含JavaScript代碼段,沒有解碼能夠解決。 – 在向HTML元素內容插入不可信數據前對HTML解碼
這條規則適用於當你想把不可信數據直接插入HTML正文某處時,這包括內部正常標簽(div、p、b、td等)。大多數網站框架都有HTML解碼的方法且能夠躲開下列字元。但是,這對於其他HTML context是遠遠不夠的,你需要部署其他規則。
<body>...... </body><div>......</div>以及其他的HTML常用元素
使用HTML實體解碼躲開下列字元以避免切換到任何執行內容,如腳本、樣式或者事件處理程序。在這種規格中推薦使用十六進制實體,除了XML中5個重要字元(&、<、 >、 、 ')外,還加入了斜線符,以幫助結束HTML實體。
&-->&<--><>-->>-->'-- >''isnotrecommended/-- >/ – 在向HTML常見屬性插入不可信數據前進行屬性解碼
這條規則是將不可信數據轉化為典型屬性值(如寬度、名稱、值等),這不能用於復雜屬性(如href、src、style或者其他事件處理程序)。這是及其重要的規則,事件處理器屬性(為HTML JavaScript Data Values)必須遵守該規則。
<divattr=......>content</div>insideUNquotedattribute<divattr='......'>content</div>insidesinglequotedattribute<divattr=......>content</div>insidedoublequotedattribute
除了字母數字字元外,使用小於256的ASCII值&#xHH格式(或者命名的實體)對所有數據進行解碼以防止切換屬性。這條規則應用廣泛的原因是因為開發者常常讓屬性保持未引用,正確引用的屬性只能使用相應的引用進行解碼。未引用屬性可以被很多字元破壞,包括[space] % * + , - / ; < = > ^ 和 |。 – 在向HTML JavaScript Data Values插入不可信數據前,進行JavaScript解碼
這條規則涉及在不同HTML元素上制定的JavaScript事件處理器。向這些事件處理器放置不可信數據的唯一安全位置就是「data value」。在這些小代碼塊放置不可信數據是相當危險的,因為很容易切換到執行環境,因此請小心使用。
<script>alert('......')</script>insideaquotedstring<script>x=......</script>onesideofanexpression<divonmouseover=......</div>insideUNquotedeventhandler<divonmouseover='......'</div>insidequotedeventhandler<divonmouseover=......</div>insidequotedeventhandler
除了字母數字字元外,使用小於256的ASCII值xHH格式 對所有數據進行解碼以防止將數據值切換至腳本內容或者另一屬性。不要使用任何解碼捷徑(如 )因為引用字元可能被先運行的HTML屬性解析器相匹配。如果事件處理器被引用,則需要相應的引用來解碼。這條規則的廣泛應用是因為開發者經常讓事件處理器保持未引用。正確引用屬性只能使用相應的引用來解碼,未引用屬性可以使用任何字元(包括[space] % * + , - / ; < = > ^ 和|)解碼。同時,由於HTML解析器比JavaScript解析器先運行,關閉標簽能夠關閉腳本塊,即使腳本塊位於引用字元串中。 – 在向HTML 樣式屬性值插入不可信數據前,進行CSS解碼
當你想將不可信數據放入樣式表或者樣式標簽時,可以用此規則。CSS是很強大的,可以用於許多攻擊。因此,只能在屬性值中使用不可信數據而不能在其他樣式數據中使用。不能將不可信數據放入復雜的屬性(如url,、behavior、和custom (-moz-binding))。同樣,不能將不可信數據放入允許JavaScript的IE的expression屬性值。
<style>selector{property:......;}</style>propertyvalue<spanstyle=property:......;>text</style>propertyvalue
除了字母數字字元外,使用小於256的ASCII值HH格式對所有數據進行解碼。不要使用任何解碼捷徑(如 )因為引用字元可能被先運行的HTML屬性解析器相匹配,防止將數據值切換至腳本內容或者另一屬性。同時防止切換至expression或者其他允許腳本的屬性值。如果屬性被引用,將需要相應的引用進行解碼,所有的屬性都應該被引用。未引用屬性可以使用任何字元(包括[space] % * + , - / ; < = > ^ 和|)解碼。同時,由於HTML解析器比JavaScript解析器先運行,</script>標簽能夠關閉腳本塊,即使腳本塊位於引用字元串中。 - 在向HTML URL屬性插入不可信數據前,進行URL解碼
當你想將不可信數據放入鏈接到其他位置的link中時需要運用此規則。這包括href和src屬性。還有很多其他位置屬性,不過我們建議不要在這些屬性中使用不可信數據。需要注意的是在javascript中使用不可信數據的問題,不過可以使用上述的HTML JavaScript Data Value規則。
<ahref=http://......>link</a>anormallink<imgsrc='http://......'/>animagesource<scriptsrc=http://....../>ascriptsource
除了字母數字字元外,使用小於256的ASCII值%HH 解碼格式對所有數據進行解碼。在數據中保護不可信數據:URL不能夠被允許,因為沒有好方法來通過解碼來切換URL以避免攻擊。所有的屬性都應該被引用。未引用屬性可以使用任何字元(包括[space] % * + , - / ; < = > ^ 和|)解碼。 請注意實體編碼在這方面是沒用的。