歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

我們可以控制你看到的內容:主流IPTV遠程代碼執行漏洞分析

來源:本站整理 作者:佚名 時間:2019-06-13 TAG: 我要投稿

大約在一年前,Check Point研究團隊發現烏克蘭電視流媒體平臺存在嚴重漏洞,一旦被利用,可能會使服務提供商面臨嚴重風險。具體而言,攻擊者可能會獲取整個客戶數據庫中的個人信息和財務詳細信息,并且攻擊者還可以將其選擇的任何內容以流式傳輸到其客戶網絡的屏幕上。
盡管不確定存在此漏洞的確切數量,但Check Point研究團隊發現有超過1000家提供此項服務的提供商,其全球客戶的數量可能會非常高。由于此漏洞已經被修復,目前我們可以披露漏洞的具體細節。
漏洞背景
Infomir是烏克蘭的IPTV(互聯網協議電視)、OTT(互聯網應用服務)和VOD(視頻點播)設備的制造商。這些機頂盒(STB)基本上都是以流式傳播,一端連接到電視服務提供商,另一側連接到電視上。每一臺機頂盒(STB)都與名為Ministra(以前的名稱是Stalker)的專用平臺通信,并從其中接收數據。
為了接收電視網絡,STB連接到Ministra,服務提供商使用Ministra平臺管理他們的客戶。如果攻擊者未經授權訪問此平臺,他們可能會暴露服務提供商客戶群的財務詳細信息,或者更改發送給服務提供商客戶的內容。
盡管不清楚有多少人可能受到此漏洞的影響,但由于涉及三個獨立的實體(IPTV產品制造商Infomir、Ministra平臺的服務提供商、使用家庭服務的最終用戶),Check Point研究團隊發現大約有1000多家服務提供商購買了Ministra并將其提供給客戶。遺憾的是,我們不清楚這些經銷商中有多少客戶,但從我們最初的掃描結果來看,全球有超過1000家經銷商,因此這些經銷商的數量可能非常高。
在本報告中,我們討論了STB管理平臺Ministra中發現的主要漏洞,這些漏洞可以使得攻擊者完全控制服務器。
負責任的漏洞披露原則:Check Point研究團隊在一年前向Infomir報告了此漏洞,并在修復補丁后發布了補丁。鑒于可能有服務提供商尚未實施此補丁,我們還向CTA論壇報告了此問題,安全供應商已經采取行動更新其產品,以防范此類攻擊。
由于一些經銷商可能沒有修復他們的服務,因此仍有遭受攻擊的風險,我們建議客戶聯系他們的電視流媒體服務提供商,確保他們已經實施針對此Ministra漏洞的保護。
Check Point入侵防御產品(IPS)針對Infomir經銷商提供了針對此威脅的保護:
“Infomir Ministra SQL注入遠程代碼執行”
下圖展示了可用Ministra實例的密度,很可能代表服務提供商的密度:

服務提供商數量排名前10的國家(該信息僅來源于部分渠道,通過多種方法收集):
· 美國(199)
· 荷蘭(137)
· 俄羅斯(120)
· 法國(117)
· 加拿大(105)
· 保加利亞(85)
· 烏克蘭(72)
· 德國(65)
· 波蘭(25)
· 塞爾維亞(22)
攻擊面分析
Ministra是Infomir的Web管理平臺,用于控制STB設備。該平臺基于PHP,與大多數基于Web的平臺一樣,它具有一個需要身份驗證的管理界面。但是,我們能夠繞過身份驗證機制,并利用一些管理類AJAX API函數。這樣一來,將導致SQL注入,與PHP對象注入漏洞相結合,從而有效地允許我們在服務器上執行遠程代碼。
身份驗證繞過漏洞分析
位于路徑“admin/src/Controller”的某些管理面板控制器包含用于Ajax使用的功能。我們從“VideoClubController”中看到名為“video_categories_list_json”的函數如下:

如果“X-Requested-With”標頭與“XMLHttpRequest”的內容一起發送,則“$this->isAjax”屬性將設置為True。
如我們所見,此方法明確用于Ajax使用,因此僅針對于這種場景檢查身份驗證。但是,我們嘗試通過不發送此標頭來繞過身份驗證檢查,結果引發了一些意想不到的行為。
未經身份驗證的SQL注入
由于我們可以繞過某些函數的身份驗證(上述行為模式也可以在其他函數中找到),這就擴展了我們的攻擊面。其中一個位于“VideoClubController”的“video_schedule_list_json”函數如下:

如我們所見,變量“$param”被分配了“$this->data”(GET數組數據)或“$this->postData”(POST數組數據),然后傳遞給“prepareDataTableParams”函數。

該函數的第一部分檢查應該對哪些列進行排序。函數會循環遍歷“order”數組參數,并使用“order”參數中的列值,從“coloums”數組中獲取列數據。然后,為“$col_name”變量分配列的名稱。
如果該列是可以使用的,則“$col_name”會被添加到“$query_param[‘order’]”數組之中。這里值得關注的地方是,用戶可以通過發送類似的POST數據,從而控制“$col_name”,而這是“$query_param”數組中的一個鍵值:

[1] [2] [3]  下一頁

【聲明】:黑吧安全網(http://www.pcpbjo.tw)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        云南快乐十分前三电视