有個老外讀了POINT OF SALE MALWARE: THE FULL STORY OF THE BACKOFF TROJAN OPERATION這篇paper后,對paper里面的數字竊賊先通過入侵CCTV系統識別目標所屬的零售商,然后進一步入侵POS機,竊取信用卡帳號比較感興趣,就去網上找了找了找該CCTV-DVR固件,然后通過分析發現了一個遠程代碼執行漏洞。然后我看他放出來POC,其實還利用了另一個該固件比較老的漏洞。下面一一說。
通過shodan搜索“Cross Web Server"可以發現大概有18817個設備,其中美國占多數,然后是中國,泰國。這些設備監聽81/82端口的居多,另外也有些監聽8000端口,
圖0
打開web后的頁面如下:
圖1
然后通過查看網頁源碼找到WebClient.html,在查看WebClient.html源碼找到script/live.js,live.js里包含了logo/logo.png
圖2
由這個logo知道這是一家銷售CCTV系統的以色列公司,但是通過查看網站源碼中的注釋,發現是中國人寫的代碼,然后作者去官網下載了固件。固件下載回來是一個zip壓縮包,解壓后可以看到
圖3
首先查看boot.sh,發現其中執行了另一個bash腳本deps2.sh,這個腳本執行了2個bin文件,分別是XVDRStart.hisi和td3520a,通過他們的文件體積,原文作者首先看了td3520a,td3520a包含了符號表,使分析變得很容易,通過預覽了一陣代碼,原文作者發現下面有問題的匯編代碼
圖4
通過代碼可以看出如果/language/[language]/index.html
中的[language]
目錄存在,則解壓到[language]
,如果不存在,則DVRSsystem最終會執行"tar -zxf /mnt/mtd/WebSites/language.tar.gz %s/* -C /nfsdir/language/
",這就導致了命令執行。看到這里想到原來玩CTF遇到/etc/crontab文件中管理員用tar做定期備份的時候,語句寫成了tar cfz /home/rene/backup/backup.tar.gz *
,引發的問題,原理可以參考http://www.defensecode.com/public/DefenseCode_Unix_WildCards_Gone_Wild.txt
要想利用還需要克服幾個問題
可以通過${IFS}
克服空格的限制
通過請求
#!bash
GET /language/Swedish${IFS}&&echo${IFS}$USER>test&&tar${IFS}/string.js HTTP/1.1
來執行查看當前用戶的命令,這個HTTP請求會返回404
要看執行結果,需要利用一個比較老的漏洞遞歸漏洞來查看結果
#!bash
GET /../../../../mnt/mtd/test
圖5
其實如果不用命令執行漏洞來利用的話,也可以通過遞歸漏洞讀取配置文件(/etc/passwd,/config/config.dat等)
圖6
POC地址如下:
https://github.com/k1p0d/h264_dvr_rce
這個產品的真正的制造商是深圳的同為數碼(http://www.tvt.net.cn/),其他廠商估計是帶貼標簽的,也就是俗稱的OEM(又叫定牌生產和貼牌生產,最早流行于歐美等發達國家,它是國際大公司尋找各自比較優勢的一種游戲規則,能降低生產成本,提高品牌附加值)
受影響的廠商列表: