2013年11月23日

我如何進入痞客邦Facebook留言框管理介面 並成為管理員__FB AppID 的安全漏洞

A+
在上一篇「Facebook留言板安裝懶人包」的留言 #3,Rong Hua LI 表示「痞客邦在所有會員Blog的head標籤後面加入官方APP ID(101730233200171)...無法取得留言板管理權限?感覺是無解的問題...」。首先必須為上一篇的內容致歉,當初的程式未針對「留言管理」的功能做測試,直到對痞客邦進行測試才發現「留言管理」這功能的原理,因而另外在上一篇貼出了公告及補充。

本篇的內容為,在測試痞客邦留言管理的過程中,發現了 FB 留言框安全上的大漏洞,竟然可以輕易地成為痞客邦 FB 留言框的管理員。因此先下個小結論:「FB 留言框的 AppID 目前是不安全的」,而解決方案的程式將在下一篇釋出,讓每則留言能以 email 通知,說不定這方式會比官方的「留言管理功能」更方便。




一、FB 留言管理功能的原理


FB 留言框在安全性上的設計為,將管理者 ID 與 App ID 字串置在 META 標籤之內,再將 META 標籤擺放於範本中的 HEAD 標籤之內以供系統辨識。

Facebook留言板安裝懶人包」的程式碼誤以為將 META 標籤 "動態寫入" HEAD 標籤之中即可,而這也是痞客邦、Xuite 等無法修改範本的部落格,唯一能做到的方式。

結果經過實測才發現,FB 讀取 META 標籤內 ID 資料的方式,是直接抓取 "網頁原始碼" 這樣的方式,這代表不會抓到任何 "動態寫入" 的內容。因此這一點是 FB 對於安全性的展現,不會抓取到任何造假的 "動態寫入的 ID 資訊"。

但也因為如此,瞭解原理後便間接得到這個殘酷的結論:任何無法修改範本的部落格,無法把含 ID 資訊的 META 標籤放入 HEAD 標籤之中,將無法取得 FB 留言管理的權限



二、模擬痞客邦情境的過程


由於痞客邦本身有提供 FB 留言板的 APP,但又沒有開放管理權限給所有使用者,這代表所有的使用者都是共用痞客邦的 FB App ID。而痞客邦的 App ID 資訊,正是存放在每個使用者的範本之中──101730233200171,這串數字只要檢視網頁原始碼就能看到。

在尋找解決方案的過程,曾試著在 Blogger 建立痞客邦的情境,來模擬各種狀況。我將痞客邦的 App ID 寫入自己的範本之中,就像下圖這樣──




接著利用語法動態將痞客邦的 App ID 改變為自己的 App ID,然後想辦法讓 FB 留言框上方出現「公開的回覆」、「版主檢視」、「設定」等這些選項,也就是留言管理的介面,如下圖一般──



接著對著上圖紅框的「設定」另開視窗,赫然出現以下畫面──



注意到了嗎,畫面中紅框的應用程式 ID 正是痞客邦的 App ID,而我竟然進入了其後台管理畫面!

由於這算是安全上的漏洞,為了不讓有心人做壞事,以上的流程我刻意不說明詳細。當然程式有一定基礎的人應該是做得到以上出現的畫面,而相信程式厲害的高手通常會有自己的原則,所以知道有這樣的事就好了!

另外,有心想補救痞客邦或 FB 漏洞的讀者就請通報相關單位吧,因為我既沒用痞客邦、也很少用 FB。



三、我成為痞客邦 FB 留言框管理員


接續上一個圖,我很輕易地就可以把自己的身份改為痞客邦 FB 留言框的版主,如下圖──




再按下「審核應用程式的評論」,會另開視窗──



這下不得了,痞客邦也成為我 FB app 的其中一員,我將可以管理所有痞客邦用戶的留言,公開的回覆有近三萬筆,非公開的回覆有將近四萬筆哩!無論是要隱藏、封鎖用戶,各種權限都有。不過我當然沒這麼無聊啦~這些人我都不認識。


然而麻煩的是,以後所有痞客邦的留言都會通知我,也就是隨時我的 FB 都會有留言通知──




所以,截完圖我就將自己的版主身份移除了,以上流程只是為了展示這個安全性漏洞罷了!



四、所有 FB App ID 都不安全


別以為痞客邦才會有這樣的安全性漏洞,這件事跟自己無關。如果網站有安裝 FB 留言框,那麼就有可能遭到本文展示手法的攻擊。

如「二、模擬痞客邦情境的過程」所提,只要你的網站有 FB 留言框,那麼一經檢視網頁原始碼,App ID 便唾手可得,接著本文所有提到痞客邦 App ID 之處,代入你的 App ID,就換成你的 FB 留言管理權限換人當了,一些非公開的留言也都會被看到!



五、總結


以我個人而言,FB app ID 被知道其實沒什麼影響,因為這個帳號不常用,沒什麼留言需要管理。不過 FB 使用者太多了,相信需要隱私考量的比例是不少。

因此,最後能夠給的建議為,如果有隱私考量的讀者,也許暫時先把含有 App ID 的那一行程式碼去除、或改為空字串,這並不影響 FB 留言框的執行,就是會少了留言管理的功能。

而在無法管理留言的情況下,無法收到留言通知也是麻煩事。下一篇會提供解決方案,讓每則留言能即時以 email 通知,包含留言的文章網址、留言者、留言內容等訊息,如此將不會錯失任何的留言資訊。

2 則留言:

  1. 我目前看的幾篇文章再加上回頭看之前的文章排序又正常了~~~

    回覆刪除
  2. <2078580209812513732>(以上內容請勿刪除,從括號之後開始留言)大概找到是什麼語法出的問題,整個網站一篇篇叫出來改,是個大工程啊...><"

    回覆刪除

張貼留言注意事項:

◎ 勾選「通知我」可收到後續回覆的mail!
提問請附網址、詳細描述狀況,如提供的資訊不足,則無法回覆。
◎ 請在相關文章留言,與文章無關的主題請至「Blogger 中文論壇」。
◎ 若詢問 CSS 、非官方範本問題、或貴站為商業網站 ,請參考「本站諮詢頁面」→「1. 諮詢服務」
◎ 若留言要輸入語法,"<"、">"這兩個符號請用其他符號代替,否則語法會消失!
◎ 若發現留言不見了,通常是因為 "複製貼上" 的內容常被系統判定為垃圾留言,請不用擔心,我會定期將留言恢復。
◎ 本站「已關閉自刪留言功能」。