作者:IOTsec-Zone
原文鏈接:https://mp.weixin.qq.com/s/SWFLV6H1zKWQyvnC0JGGhg

0x00 描述

測試環境:Ubuntu 18.04

固件版本:wr740nv1_en_3_12_4_up(100910).bin

產品廠商:TP-Link

廠商地址:https://www.tp-link.com.cn/

ZoomEye搜索app:TP-LINK TL-WR740N WAP httpd
https://www.zoomeye.org/searchResult?q=app%3A%22TP-LINK%20TL-WR740N%20WAP%20httpd%22

0x01 固件分析

將固件下載到Ubuntu中,使用命令binwalk進行解包,拿到固件的文件系統

這里介紹一個常用的小工具 firmwalk.sh,工具下載鏈接 https://github.com/craigz28/firmwalker

  1. 它將搜索固件文件系統,以獲取與敏感信息相關的東西,如:etc/shadow and etc/passwd

  2. 列出 etc/ssl等目錄

  3. 搜索相關的文件,如. pem,. crt, 等

  4. 搜索配置文件

  5. 查找腳本文件

  6. 搜索其他.bin 文件

  7. 查找諸如管理員,密碼,遠程等關鍵字符

  8. 搜索IoT設備上使用的通用網絡服務器

  9. 搜索常見的二進制文件,如 ssh,tftp,dropbear等

  10. 搜索網址,電子郵件地址和IP地址

接下來我們使用工具firmwalker對提取的固件進行掃描

通過上面的信息可以得到很多關鍵信息,這里我們著重查看圖片上的幾處關鍵信息

  • 可以看到對于路由器的相關URL應該是/web/userRpm/xxxxx.htm這種,那么我們就可以合理的猜測,這應該是web服務相關的命令規范
  • 含有passwd和pwd相關的文件中,可以看到嵌入式web服務httpd,部分htm文件以及其他配置文件

可以看到它把固件的敏感信息都列舉出來了,先不著急對文件進行分析,接下來我們看一下啟動項有沒有啟動什么后門服務,如telnet服務等

一般啟動項文件都位于etc目錄下面,我們到etc目錄下面進行查看

根據嵌入式Linux常用啟動項位置可以確定啟動項文件就位于rc.d這個目錄里面,打開此目錄對里面的文件進行分析

可以看到他的Http服務都在httpd這個文件中,啟動項沒有其他的異常行為

那我們通過find命令查找一下這個文件的所在位置

可以看到文件在/usr/bin目錄下面我們將文件移動到IDA中進行分析

0x02.IDA逆向分析

根據firmwalker收集到的跟passwd先關的文件就包含httpd二進制應用,這里我們直接在字符串窗口搜索passwd字符串

可以看到和passwd先關的字符串還有很多,那么我們可以逐個進行追蹤

在這里可以看到passwd被調用的位置,直接雙擊箭頭向上追蹤

簡單查看便可以很多硬編碼的敏感字符串,使用F5生成偽C代碼

可以看到在進行用戶名和密碼的比對,并且用戶名和密碼為osteam和5up,那么可以猜測這里應該是和某種認證相關

通過httpGetEnv函數的第二個參數名稱cmd,可以猜測這應該是執行命令的地方

接著可以看到write函數調用了pty來模擬命令的執行

(知識擴充:偽終端(pseudo terminal,有時也被稱為 pty)是指偽終端 master 和偽終端 slave 這一對字符設備。其中的 slave 對應 /dev/pts/ 目錄下的一個文件,而 master 則在內存中標識為一個文件描述符(fd)。偽終端由終端模擬器提供,終端模擬器是一個運行在用戶態的應用程序。)

根據當前函數DebugResultRpmHtm,追蹤調用的位置

這里可以看到使用httpRpmConfAdd函數進行url和執行函數的定義,這里看到當前函數為httpDebugInit,似乎是進行Debug調試的,接著可以看到有一個linux_cmdline.html的頁面

一看到這個頁面可以其能執行系統命令,可以確定linux_cmdline.html似乎是一個后門,但是想要執行命令還需要用戶名和密碼,根據上面的分析我們可以確定用戶名為osteam和密碼5up的賬戶為后門登錄的賬號和密碼

0x03 漏洞驗證

工具下載地址:https://github.com/pr0v3rbs/FirmAE

接下來我們去驗證上面我們的猜想,接下來我們就對固件進行模擬

這里推薦使用工具FirmAE,為什么推薦呢?這個工具使用高度集成化的操作,只需要使用一條命令即可對固件進行模擬,比起使用qemu來模擬固件方便快捷了很多

可以看到固件模擬成功,瀏覽器進行訪問http://192.168.1.1/userRpmNatDebugRpm26525557/linux_cmdline.html

可以看到需要授權,使用默認的賬號密碼進行登錄

輸入用戶名,密碼以及要執行的命令,可以看到成功執行并返回了相應的結果

0x03.總結

通過上面的分析,可以看到信息收集對我們漏洞分析和漏洞挖掘有很大的幫助,通過敏感的信息,我們能更快的定位到漏洞產生的位置,并且我們掌握的信息越多,越能加快漏洞分析和漏洞挖掘的速度和效率。


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1840/