UBB的跨站指令碼攻擊的漏洞

來源:互聯網
上載者:User
ubb|攻擊|指令碼         近日,由於發現一些網站仍然存在UBB的跨站指令碼攻擊的漏洞.跨站指令碼攻擊雖然很少會對伺服器造成一些什麼比較大的影響,但對於一個網站來說,存在這種漏洞實在是太不值得!小則,彈點什麼東東出來;中則改改首頁;重則竊取使用者的COOKIES資料,更甚者將會G掉瀏覽者的硬碟.一個網站被變成一個惡意網站,還有誰敢來?如果再加上該站的站長比較"盲"一些,豈不亂套了?
  
  小小的一段代碼就真的能使一個網站成這樣?好叫我們來具體的看看所謂的跨站指令碼攻擊到底會成為什麼樣的攻擊模式.進入一個含UBB功能的網站,比如留言板,論壇,或是含提交程式的網站.首先,講一下最簡單的指令碼攻擊:等HTML字元的過濾問題.
  
  登陸過一個CGI製作網站.以原來ASP的眼光看CGI的網站,感覺CGI對指令碼的過濾應該很好.於是做了最初的測試.在使用者一欄中填寫,提交使用者註冊後發現並沒提出非法字元的提示.註冊完成後,點擊資料也發現頁面變形了.如在其他幾個如國家,性別裡填寫也會出現同樣的問題,那頁面就沒法看了.於是換了一個網站,再次提交出現了非法字元提示,看來網站是已經過濾的<>等HTML的指令碼字元,那好,我們改用ASCII 碼替換<> 如& #60; & #62;代替提交後再來看,又出現了上面頁面變形的情況,看來非法過濾機制還不是很完善. 更有甚者,我竟發現一個網站內的姓名欄填寫時沒有字數大小設定,沒有過濾任何非法字元,如果我提交個什麼惡意代碼那還不成全了我?
  
  簡單的指令碼攻擊如等HTML格式的代碼一定要過濾好,上面的一些網站還沒牽扯到UBB就出問題了.那我們下面就開始重點講一下UBB過濾漏洞的問題.UBB是論壇中用來替換HTML編輯的一種格式符號,如[b ][/b ]可以替換成HTML中的< b>..然而就是這一個替換問題,就成了跨站指令碼攻擊的最佳積聚地.測試了一個ASP留言版以及一個整站的程式碼:
  
  初級問題: [url ]的過濾,在提交該代碼時可以構建一個onmouseover函數的惡意代碼,既然onmouseover可以生效,那還有什麼辦不到的?一些原碼程式在變換[url ][/url ]時,只是將[url ]s2[/ url]中的s2直接提交到< a href="s2" target=_blank>S2中.看到如此轉換我們可以使用相應的ASCII 碼中的& #34;來代替",我們多提交一個"然後在構建onmouseover函數進行操作,後果?你應該知道!:P
  
  [img ]的過濾,這真的算是個老大難的問題.很早以前就是[img]的指令碼攻擊流行一時啊.這次測試中,很多網站還是仍然存在這個漏洞.有點程式根本沒有進行過濾.尤其是一些免費留言板的提供網站很多都存在這樣的問題.下面我們主要將一下[IMG ]標籤的問題:
  
  很簡單的[img ]javascript :alert();[/ img]提交後轉換成的代碼為< img src="javascript :alert();">,好,到這裡我們就可以看到javascript :alert();被< img src="">標籤啟用了.表現就是彈出對話方塊.上面寫著你在()中要提交的東西.如documents.cookie 呵呵..大多數人都應該知道這東西是做什麼.更有甚者,使用document.write();函數,可以寫網頁.寫什麼?當然是惡意代碼,如[ img]javascript :document.write();[ /img].()中間加你要加的,寫你要寫的,想多危險就多危險.
  
  進階問題: 由於[img ]的初級問題騷擾很多網站就對一個敏感的字元開始過濾.如ja串連,do串連,wr串連,提交後自動分為j a,d o,w r.或是對字元進行過濾java,document,等等.而這些只能難倒一小部分人.我們仍然可以利用ASCII碼來代替.可能有人會對代替後的代碼仍然不能正常顯示而困惑.好,我們下面以一個完整的例子介紹:
  
  某網站UBB過濾程式碼片段如下:
  <%
  Function code_ssstrers)
  dim strer:strer=strers
  if strer="" or isnull(strer) then code_ss"":exit function
  
  strer=replace(strer,"<","<")
  strer=replace(strer,">",">")
  strer=replace(strer," "," ") '空格
  strer=replace(strer,CHR(9)," ") 'table
  strer=replace(strer,"'","'") '單引號
  strer=replace(strer,"""",""") '雙引號
  
  dim re,re_v
  re_v="[^\(\)\;\';""\[]*"
  're_v=".[^\[]*"
  Set re=new RegExp
  re.IgnoreCase =True
  re.Global=True
  
  re.Pattern="(javascript :)"
  strer=re.Replace(strer,"javascript:")
  re.Pattern="(javascript)"
  strer=re.Replace(strer,"javascript")
  re.Pattern="(jscript:)"
  strer=re.Replace(strer,"jscript :")
  re.Pattern="(js:)"
  strer=re.Replace(strer,"js:")
  re.Pattern="(value)"
  strer=re.Replace(strer,"value")
  re.Pattern="(about:)"
  strer=re.Replace(strer,"about:")
  re.Pattern="(file:)"
  strer=re.Replace(strer,"file&:")
  re.Pattern="(document.)"
  strer=re.Replace(strer,"document :")
  re.Pattern="(vbscript:)"
  strer=re.Replace(strer,"vbscript :")
  re.Pattern="(vbs:)"
  strer=re.Replace(strer,"vbs :")
  re.Pattern="(on(mouse|exit|error|click|key))"
  strer=re.Replace(strer,"on$2")
  
  能看懂ASP的朋友,就可以看出,以上程式碼片段對javascript,jscript:,js:,about;value,document.,onmouse以及onexit等語句進行了過濾和替換.並對一些特殊字元進行了替換.如".",";""(",")" [替換代碼為""中間的"..仔細觀察代碼後我們會發現其過濾機制並非想想象的那樣完美.提交:[ mg]& #176& #93& #118& #97& #115& #79rip& #106& #57documen& #115& #76write& #30& #29哈哈又被黑了& #29& #61& #29[/ mg] 類似代碼就可以實現更進階的指令碼攻擊.注:由於很多網站仍存在此問題,所以將代碼修改過,無攻擊性了.
  開啟你的FT2000,使用文本編輯,你可以找到任何特殊字元所屬的ASCII碼.如:分號;可以代替為&# 59,句點.可以代替為&# 46,以這樣的形式我們再次提交代碼.果然,上面整個的過濾機制幾乎完全失效了.根本沒起到什麼防禦作用.
  
  看了以上的攻擊方法,是不是覺得很鬱悶?如果才能避免上面的問題發生?
  
  1.如果你的網站程式含論壇,留言板,以及其他程式中含提交資料格式的,沒有很好過濾機制,請馬上下載升級程式或是停止使用.避免造成更多的問題.
  2.各提供免費論壇,免費申請留言板的站,請將UBB格式關閉.或找到更好的解析UBB.ASP程式頁.
  3.對一些會編寫ASP的朋友,我建議大家過濾一下字元:(全部字元將寫在[]中)如:
  ["|.|;|:|\|/|&|$|#|`|)|,|'|"|-|~|[|(||] 注:其中|為分割符
  
  4.對於某些網站建議去掉問題比較多的留言板,或是其他含提交的程式.如:原www.sangel.net使用的guestbook,一些不知名的程式體問題更是多多.建議換掉它.
  
  5.我本人也修改了一個國外的留言板,前台基本已經修改完畢.後台這幾天正在趕.修改後感覺在文本提交和輸入以及留言時都有了很好的過濾.本來打算全採用英文介面,但考慮到N多chinese 對英語不過關,我還是將部分程式漢化了.有興趣的朋友可以http://www.e3i5.com/guestbook/ 測試.我們歡迎善意的測試.
  
  以下是國內一些經過本人測試的網站的留言板有問題的地址,(請各位站長注意啦,及時Hotfix免得造成不必要的麻煩),測試的時間比較短一些,可能有一些網站沒有找到.可能存在著更嚴重的問題.
  
  以上就是這次指令碼攻擊測試的全部內容。綜觀全部網站,看上去安全性真是的不敢再想.問題多多.
  雖然只是舉手之勞就可以解決的問題,但稍不小心就會造成大問題。

相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。