[安] 有人談到新浪部落板主留言的登入檢查漏洞
在網路暴料專家 Blog.XDite.net 上看到一篇舊文:
〈新浪部落格版主留言的嚴重漏洞〉
如 XDite 所言, 這確實是極簡單的一個漏洞, 有心人只要能猜到 name="doid" 這個 hidden type 欄位的值也就能侵入板主回應了。預防之策也極簡單, 「新浪部落」系統在收到 form 的傳回值時先檢查板主的登入狀態(session)與登入位址來驗證身分, 就可以避免被篡改了, 但它卻沒做這個檢查。
登入檢查只是極基本的安全動作, 任何服務網站都該做的, 不過會忽視掉的網站實在不少呢, 例如書籤網站 MyShare 就沒做好, 所以我常不登出智邦 MyShare, 過了幾天仍然可以憑它留在我電腦裏的 cookie 繼續操作, 連真正的登入動作都省了, 而使用 cross-site scripting (CSS)的技術是可以竊取網頁訪客的 cookie 的, 這對於在回應/留言裏沒過濾掉 (Java)script 碼的網站就會有極大的風險, 不久前製作 PC-cillin 防毒軟體的趨勢科技網站 DB 就被殖入 CSS 碼。看來, 我也該測測同屬「智邦生活館」的 URL webmail 是不是也有這麼「便利」的漏洞……, 還有人提出 HEMiDEMi 以前也有類似的情況(沒再確認);而像 doid 這樣的猜值問題, 在其他部落格服務供應商(BSP)也曾出現。「新浪部落」還有 escape sequence 沒過濾清楚的毛病, 像是以原始碼模式貼文後內文的倒斜線字元(backslash: \)不會在前台顯示出來, 但仍存於 DB 中的原始碼裏。稍有程式設計經驗的人就會想到連用兩個倒斜線(\\, 在原始碼裏這裏用了四個倒斜線), 就能正常顯示出一個倒斜線。光就此點來看, 讓人懷疑被以 SQL Injection 或 escape-sequence-embedded attack 侵入的可能性不小。 :p
不過, 這有時也有「方便」之效。像有些網站, 對所輸入文章中 HTML 碼的過濾處理不夠完善(新浪又榜上有名 :p), 有可能導致 DB 裏不小心存入明文(clear text)的小於(<)字元, 當讀出成網頁內容時, 瀏覽器的頁面就亂掉了。或者在使用英文網站時, 所輸入的中文字裏的隱含字元也有可能讓網頁亂掉而無法正常操作。若不想費時與網站管理員來往問答, 這時就可以自行用手動送出 form 參數的方式, 把 DB 裏會混淆網頁 HTML 碼辨識的字元給處理掉了。這時自己具有合法的使用身分, 但仍代表著漏洞存在的可能性。
這些漏洞因為很簡單, 常會在不經意中發現 :p。XDite 大約是位很年輕的人, 她比較熱心提供訊息, 而敝人已是見怪不怪了, 懶得貼出來。(反正從前幾次在新浪官方 blog「部落編輯台」上提出疑問, 從來沒人理會 :~ 。)網路漏洞何其多, 就和省自來水公司的管線漏水一樣, 再普遍不過。即使是商業網站, 或許受制於時程壓力, 在混的人也不少呢;而學校教育也可能有毛病, 我們實在不能相信, 前文所提及的簡單安全原則會沒教導過, 有的資訊相關科系並沒讓學生學到什麼是「認真」與工作品質。