
PoC for CVE-2024-23997
针对 CVE-2024-23997 漏洞的概念验证。
cf) 代理,尤其是 Web 代理,在 Web 通信中充当中间代理,代表他人接收和转发请求与响应。因此,无论 YANA 使用哪个端口,代理都可以拦截通信。虽然代理通常用于安全目的或通过缓存提高搜索速度,但许多恶意程序利用代理来窃听用户发送的 Web 通信。
我们通过一个 YANA 的例子来看看。我在 Windows 10 上安装了 Burp Suite(一个充当恶意软件的代理工具)来搭建实验环境。Burp Suite 是 PortSwigger 的一款网络安全诊断工具,其社区版可免费使用。如果你想跟着这个例子操作,请注意,练习需要修改网络设置,因此后续需要恢复。
步骤 1) 实际的恶意软件不会更改互联网设置,而是使用 Windows API、Linux API 等来监听数据包。但由于其复杂性,这里我们手动激活选项。按下 Windows 键,搜索“Internet 选项”。
步骤 2) 进入“连接”选项卡,点击“局域网设置”按钮。
步骤 3) 勾选“为 LAN 使用代理服务器”,然后点击“高级”按钮。要恢复设置,只需取消勾选即可。
步骤 4) 将“服务器”中 HTTP 的内容修改为“127.0.0.1”、“8080”,并将“例外”修改为“<-loopback>”,然后点击“确定”按钮保存设置。
步骤 5) 打开 Burp Suite。
步骤 6) 由于我们只是验证,勾选“Temporary project in memory”,然后点击“Next”按钮。
步骤 7) 选择“Use Burp defaults”,然后点击“Start Burp”按钮。
步骤 8) 进入“Proxy”选项卡,点击“Proxy settings”,在“Proxy listeners”中检查代理是否设置为 127.0.0.1:8080,并确认“Running”已勾选。同时,在“Proxy listeners”下的“Response interception rules”中,勾选“Intercept response based on the following rules”。关闭设置窗口后,选项会自动应用。
步骤 9) 进入“Proxy”下的“Intercept”选项卡,确认“Intercept is on”,然后打开 Yana。当拦截开启时,所有 HTTP/HTTPS 通信将被暂留,直到关闭拦截或点击“Forward”按钮才会发送给对方。
步骤 10) 持续点击“Forward”按钮,在从 Yana 后台服务器收到的响应中寻找 HTML 响应。由于 HTML 文档的 title 标签写有 Yana,因此很容易区分。
步骤 11) 使用 script 标签在 HTML body 标签下方插入 JS 代码(“<script>require('child_process').exec('C:/Windows/System32/calc.exe')</script>”)。
步骤 12) 然后关闭“Intercept is on”,Yana Electron 程序将接收数据包并执行脚本,从而启动计算器程序。
步骤 13) 练习完成后,请前往互联网选项并禁用代理服务器。
这是因为 Yana 中启用了 nodeIntegration 选项。即使禁用此选项,也可以使用各种其他方法从 HTML 执行 Node.js 代码。如果以 Yana 的权限执行,并且 Yana 以管理员或 root 权限运行,则注入的恶意代码可以以这些权限执行。因此,如前所述,更安全的做法是使用 File 协议等更难在进程间通信中进行拦截的协议来获取和显示 HTML 页面,而不是使用 HTTP 协议。