溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

服務(wù)器中意外內(nèi)存泄漏的示例分析

發(fā)布時(shí)間:2021-12-28 10:49:27 來(lái)源:億速云 閱讀:156 作者:小新 欄目:網(wǎng)絡(luò)管理

小編給大家分享一下服務(wù)器中意外內(nèi)存泄漏的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

開始分析

我們的路由器使用的是一塊Macronix MX15L12835FMI閃存芯片(16針腳SOP):


服務(wù)器中意外內(nèi)存泄漏的示例分析

首先,我需要觀察芯片的常規(guī)操作。在研究過(guò)程中,我發(fā)現(xiàn)它的閃存并沒(méi)有得到充分使用,只有設(shè)備在啟動(dòng)(或加載整個(gè)操作系統(tǒng))時(shí)或在使用Web管理面板時(shí)會(huì)使用到閃存。閃存芯片似乎使用的是Single API模式,其常規(guī)讀取命令如下所示:

服務(wù)器中意外內(nèi)存泄漏的示例分析

命令開頭為一個(gè)05 FF命令,根據(jù)數(shù)據(jù)表提供的信息,這條命令可以讀取出寄存器的狀態(tài)信息。我最初的目的是對(duì)閃存讀取命令進(jìn)行篡改,并用它來(lái)從硬盤中讀取數(shù)據(jù)。

考慮到SPI命令是與時(shí)鐘信號(hào)同步的,那我的攻擊同樣可以跟同一個(gè)時(shí)鐘信號(hào)同步:我可以記錄下時(shí)鐘上升沿信號(hào)的數(shù)量,并在特定數(shù)量的時(shí)鐘信號(hào)下將閃存芯片的15號(hào)針腳接地,然后修改閃存的讀取命令并用它來(lái)讀取其他信息。放大時(shí)鐘信號(hào)后我們可以看到,數(shù)據(jù)只會(huì)在時(shí)鐘信號(hào)的下降沿發(fā)生變化,所以我們的攻擊應(yīng)該是有效的。

服務(wù)器中意外內(nèi)存泄漏的示例分析

首先我們進(jìn)入到設(shè)備的串行控制臺(tái)中,然后使用命令cat /dev/mtdblock0來(lái)觸發(fā)閃存的讀取命令。該命令的原始狀態(tài)如下所示:

服務(wù)器中意外內(nèi)存泄漏的示例分析

為了方便進(jìn)行對(duì)比,所以我運(yùn)行了cat /dev/mtdblock2:

服務(wù)器中意外內(nèi)存泄漏的示例分析

接下來(lái),我連接了一個(gè)晶體管和一個(gè)FPGA,F(xiàn)PGA可以讀取時(shí)鐘信號(hào)并控制晶體管的開關(guān),接地針腳15暫時(shí)等待幾個(gè)時(shí)鐘周期,并讓其中的一個(gè)讀取指令地址失效:

服務(wù)器中意外內(nèi)存泄漏的示例分析

我還專門編寫了一個(gè)腳本來(lái)讓程序等待一定的時(shí)鐘周期,并修改閃存的讀取操作,然后運(yùn)行cat /dev/mtdblock2并通過(guò)示波器來(lái)監(jiān)控閃存的命令執(zhí)行情況:

服務(wù)器中意外內(nèi)存泄漏的示例分析

如果你仔細(xì)看的話,你就會(huì)發(fā)現(xiàn)右邊是原始閃存讀取操作的殘余部分(原始命令/dev/mtdblock2為03 01 00 00),我們可以通過(guò)運(yùn)行cat /dev/mtdblock2命令來(lái)驗(yàn)證我們的發(fā)現(xiàn):

服務(wù)器中意外內(nèi)存泄漏的示例分析

需要注意的是,命令確實(shí)成功執(zhí)行了,/dev/mtdblock2的第一個(gè)數(shù)據(jù)塊跟之前/dev/mtdblock0的一樣,表示我們的操作已經(jīng)成功了。

現(xiàn)在,我們就可以用這種方法來(lái)對(duì)Web服務(wù)器接口進(jìn)行攻擊了,如果我可以讓硬盤中的某個(gè)資源加載失敗,理論上來(lái)說(shuō)我就可以讓它來(lái)讀取任何我想要讀取的內(nèi)容了,比如說(shuō)通過(guò)Web請(qǐng)求來(lái)獲取到固件文件等等。

但是,我很快就遇到了如下所示的問(wèn)題:

服務(wù)器中意外內(nèi)存泄漏的示例分析

雖然我可以從物理閃存中讀取任意區(qū)塊,但我無(wú)法保證數(shù)據(jù)可以正確解壓。雖然Web服務(wù)器似乎還可以正常工作,但是其中的一個(gè)圖片已經(jīng)無(wú)法正確加載了。用Burp進(jìn)行分析后,我很快就找到了“罪魁禍?zhǔn)住保?/p>

服務(wù)器中意外內(nèi)存泄漏的示例分析

這是一個(gè)針對(duì)/wireless_1.gif的有效請(qǐng)求的一條響應(yīng)數(shù)據(jù),我知道這是一個(gè)無(wú)效的GIF文件,但我并不知道它到底是什么,我猜測(cè)它要么來(lái)自于Web服務(wù)器的內(nèi)存,或者是磁盤中的數(shù)據(jù)塊。

為了進(jìn)行測(cè)試,我對(duì)整個(gè)Web應(yīng)用程序進(jìn)行了分析,然后發(fā)送了一條新的/wireless_1.gif請(qǐng)求:

服務(wù)器中意外內(nèi)存泄漏的示例分析

神奇的是,這個(gè)gif文件竟然自己發(fā)生了變化,而且我也沒(méi)觀察到其他的SPI流量生成,這表示我成功實(shí)現(xiàn)了內(nèi)存泄漏(很可能是一個(gè)內(nèi)存用后釋放漏洞),只不過(guò)唯一的遺憾是它并非目標(biāo)系統(tǒng)的密碼文件。

以上是“服務(wù)器中意外內(nèi)存泄漏的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI