無名小站的 XSS 安全漏洞

前言

Year.new(2006) 這篇幹剿無名小站的 XSS 安全漏洞,沒有講的很明白,加上我這陣子沒在實驗室遇到 (是的,我跟他是同一個指導教授),所以一直沒有跟他說這個在國外已經「開發」好一陣子的安全漏洞。

Javascript 是在使用者端 (Browser) 跑的程式,理論上來說,讓使用者輸入自己的 Javascript 並不會有什麼問題,但實際上自從 XMLHttpRequest() 被大量應用後 (一開始發展 所使用的核心技術之一),有些人就發現 XMLHttpRequest() 是可以拿來當作攻擊的工具。

舉例說明

舉個例子說明會比較清楚。以目前最大的 為例,「修改個人資料」的頁面是在 http://www.wretch.cc/user/modify.php?admin_user=1 這個位置,會以 POST 的方式送給 http://upload.wretch.cc/user/do_modify.php,那麼我就可以在文章裡面嵌入一段 Javascript:(修改自 Use the XMLHttpRequest Object to Post Data)

var objHTTP, strResult;
objHTTP = new ActiveXObject('Microsoft.XMLHTTP');
objHTTP.Open('POST',
  "http://upload.wretch.cc/user/do_modify.php",false);
objHTTP.setRequestHeader('Content-Type',
  'application/x-www-form-urlencoded');
objHTTP.send("依照 form 的內容填入一些東西");
strResult=objHTTP.responseText;

上面的程式碼是 IE Only 的程式碼,但是要弄 IE & 並存的程式碼其實只是加個 if 判斷句後改用 new XMLHttpRequest 而已...

原因

問題來了:為什麼這樣做有效?那我隨便用 丟個東西進去 server 不就炸了?

答案是:使用 XMLHttpRequest() 連線時,會送出使用者的 Cookie,於是 server 端會以這個 Cookie 的擁有人去做 Javascript 要做的事情!接下來就 !@#$%^...

再一個例子

你會說我只是隨便講講?其實這件事情在兩個月前已經在 MySpace.com 上發生過了,而且還寫成 worm 自動感染:Cross-Site Scripting Worm Floods MySpace ()。

Google 應對的方法

回過頭來提 Google 對 XSS 的應對 這篇所提到的例子。

假設有個人在他自己的網站上 (假設是 www.example.com) 放個 Javascript,用 XMLHttpRequest() 連 mail.google.com (Gmail) 的某些 function,幫使用者刪除所有的 mail。在平常的時候,會因為 example.com != google.com 而無法產生 XMLHttpRequest Object,但是在「頁庫存檔」的時候就會在同一個 Domain 下!於是 必須避免這種情況:硬把 www.google.com 換成 IP address,這樣就沒問題了。

你可以測試 http://www.google.com/search?q=cache:http://www.google.com/ 這個頁面,會發現 會故意換到 IP address。

的另外一個服務是 。你會發現 可以讓你隨便修改 Template 填入各種 code,於是你就可以對 *.blogspot.com 下面的 site 進行 XSS 攻擊:但實際上 的 Control panel 放在 blogger.com,於是根本不怕你利用 Template 惡搞。

結語

最後,Javascript 是邪惡的,平常逛網站請不要打開 Javascript:請安裝 以避免被 ox 掉 :p

This entry was posted in Blog, Browser, Computer, Murmuring, Network, Security, Software. Bookmark the permalink.

24 Responses to 無名小站的 XSS 安全漏洞

  1. Pingback: vgod’s blog » 邪惡的XSS

  2. CK says:

    請教在無名的 http://www.wretch.cc/blog/foo 下使用 XMLHttpRequest 如何能攻擊到 http://upload.wretch.cc/user/do_modify.php ?

    會帶 cookie 過去沒錯, 但 domain 不同不是嗎?

  3. gslin says:

    不太懂你的意思?剛剛再測了一下,的確 work 啊?XMLHttpRequest Object 建立起來了。

  4. CK says:

    Object 的確會建立起來, 但是可以 post 嗎?

    但我以為 http://www.wretch.cc != upload.wretch.cc
    Javascript console 應該會出現 Permission denied to call method XMLHttpRequest.open 才對

    ps. 新的 Ajax comment 好棒啊...

  5. gslin says:

    我晚點考完 algo 再測試看看 :p

  6. gslin says:

    啊,據某位布丁大長輩說,www.wretch.cc == upload.wretch.cc,所以現在這個不是問題... (逃)

  7. Pingback: starryalley's Blog

  8. Pingback: 今日連結 (20060106) [JeffHung.Blog]

  9. Pingback: 一個反對Blog的Blog

  10. Pingback: Philipz學習日誌

  11. Pingback: TenderLover » Blog Archive » “讓錯的程式看得出錯”筆記

  12. Pingback: Gea-Suan Lin's BLOG

  13. Pingback: Josk˙C@T。。私の誌 » LifeType 1.0.4 正式發佈。

  14. K says:

    XSS = = 係瞎咪

  15. Pingback: William’s Blog » Blog Archive » XSS 筆記

  16. Pingback: 艾克索夫實驗室

  17. Pingback: Blog.XDite.net » Web 2.0 時代的資安隱憂

  18. Pingback: HEMiDEMi - 共享書籤- 無名小站遇「駭」 個資流入中國

  19. Pingback: HEMiDEMi - 共享書籤- 無名小站遇「駭」 個資流入中國

  20. Pingback: 台灣論壇 - 閒話家常 - 無名小站遇「駭」 個資流入中國

  21. Pingback: delayer's 學習筆記 :: PIXNET BLOG ::

  22. ww says:

    alert(document.cookie)

  23. 阿特 says:

    我記得 cookie 可以設定成 cross-domain 可以讀寫的吧???
    所以不同 domain 只要 web master 有把 cookie 設定好 應該還是 POST?

  24. Pingback: [转载]XSS (Cross Site Scripting)笔记 - 查127 查询网资料库

Leave a Reply

Your email address will not be published. Required fields are marked *