程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP技巧 >> 跨站Script攻擊(一)

跨站Script攻擊(一)

編輯:ASP技巧

跨站Script攻擊(一)


  每當我們想到黑客的時候,黑客往往是這樣一幅畫像:一個孤獨的人,悄悄進入別人的服務器中,進行破壞或者竊取別人的秘
密資料。也許他會更改我們的主頁,甚者會竊取客戶的信用卡號和密碼。另外,黑客還會攻擊訪問我們網站的客戶。與此同時,我
們的服務器也成了他的幫凶。微軟稱這種攻擊為“跨站script”攻擊。而這種攻擊大多數都發生在網站動態產生網頁的時侯,但黑
客的目標並不是你的網站,而是浏覽網站的客戶。

跨站script攻擊的說明

  在一本名為<<ADVISORY CA--2000-02>>的雜志中,CERT警告大家:如果服務器對客戶的輸入不進行有效驗證,黑客就會輸入
一些惡意的HTML代碼,當這些Html代碼輸入是用於SCRIPT程序,他們就能利用它來進行破壞,如插入一些令人厭惡的圖片或聲音
等,同時,也能干擾了客戶正確浏覽網頁。

  我們知道,有些朋友曾經被誘導到一些可疑的免費網站,他們得到的僅僅是10到20個小的窗口,這些窗口常常伴隨著由Java
或 Javascript生成的失效安鈕,這被稱為鼠標陷阱。關閉這些窗口是徒勞的,每當我們關閉一個窗口,又會有10幾個窗口彈出。
這種情況常常發生在管理員沒在的時侯發生。鼠標事件是黑客利用跨站SCRIPT方法攻客戶的典型范例。

  惡意的標簽和SCRIPT不單純的惡作劇,他們甚至可以竊取資料和搗毀系統。一個聰明的甚至是不夠聰明的黑客都能夠使用
SCRIPT干擾或者改變服務器數據的輸入。利用SCRIPT代碼也能攻擊客戶系統,讓你的硬盤盡損。而且你要知道,在你一邊使用服務
器的時候,黑客的SCRIPT也正在你服務器裡安全的地方運行著的呀!如果客戶對你的服務器非常信認,同樣他們也會信任那些惡意
的SCRIPT代碼。甚至這個代碼是以〈SCRIPT〉或者〈OBJECT〉的形式來自黑客的服務器。

  即使使用了防火牆(SSL)也不能防止跨站SCRIPT的攻擊。那是因為如果生成惡意SCRIPT代碼的設備也使用了SSL,我們服務
器的SSL是不能辨別出這些代碼來的。我們難道就這樣把客戶曾經那麼信任的網站拱手讓給黑客嗎?而且有這種破壞的存在,會讓你
網站名譽盡損的。

一、跨站SCRIPT攻擊示例:

  根據CERT的資料,動態輸入大致有這幾種形式:URL參數,表格元素,COOKISE以及數據請求。讓我們來分析一下,這個只有兩
個頁面的網站,網站名為:MYNICESITE.COM。第一頁使用一張表格或COOKIE來獲取用戶名:

<%@ Language=VBScript %>

<% If Request.CookIEs("userName") <> "" Then

Dim strRedirectUrl

strRedirectUrl = "page2.ASP?userName="

strRedirectUrl = strRedirectUrl & Response.CookIEs("userName")

Response.Redirect(strRedirectUrl)

Else %>

<Html>

<HEAD>

<TITLE>MyNiceSite.com Home Page</TITLE>

</HEAD>

<BODY>

<H2>MyNiceSite.com</H2>

<FORM method="post" action="page2.ASP">

Enter your MyNiceSite.com username:

<INPUT type="text" name="userName">

<INPUT type="submit" name="submit" value="submit">

</FORM>

</BODY>

</Html>

<% End If %>

第二頁返回用戶名以示歡迎:

<%@ Language=VBScript %>

<% Dim strUserName

If Request.QueryString("userName")<> "" Then

strUserName = Request.QueryString("userName")

Else

Response.CookIEs("userName") = Request.Form("userName")

strUserName = Request.Form("userName")

End If %>

<Html>

<HEAD></HEAD>

<BODY>

<H3 align="center">Hello: <%= strUserName %> </H3>

</BODY>

</Html>
  當你正常常輸入文字時,一切都很正常。如果你輸入Script代碼:<SCRIPT>alert('Hello.';</script>,JavaScript警告標
簽就會彈出來:
  在你下一次訪問時,這個警示標簽同樣會出現;這是因為這個Script代碼在你第一次訪問的時後就已經留在cookIE中了。這是
一個簡單的跨站攻擊的范例。

  如果你認為這是一個特殊情況,你也不妨到網上別的地方看看,親自試一下。我曾經對一些大型的政府網站、教育網站以及商
業網站進行過測試,他們當中的確有部分出現了以上所說的情況,我甚至發現了我經常使用信用卡的網站也居然對輸入不進行任何
過濾,想想真是可怕。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved