| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Redis漏洞利用的4种方法 -> 正文阅读 |
|
[大数据]Redis漏洞利用的4种方法 |
Redis简介redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。 默认端口:6379 sentinel.conf配置器端口为:26379 Redis环境安装官网地址:https://redis.io/ 下载地址:http://download.redis.io/releases/ 1.Redis-3.2.0安装
2.Redis-4.0.8安装
make结束后,进入src目录下,将redis-cli和redis-server拷贝到/usr/bin目录下,这样每次启动时就不需要进入src目录下了。 这里,如果是zsh的话,需要首先在配置文件中添加环境变量:
然后刷新shell环境,即可使新增的环境变量生效:
启动redis
如图所示,此时默认端口为6379,没用密码,这时候会导致未授权访问。 Redis未授权访问漏洞原理Redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用相关的策略,如配置防火墙规则避免其他非信任来源的IP访问,就会将Redis服务暴露在公网上;如果没有设置密码认证(一般为空)的情况下,会导致任意用户可以访问目标服务器下未授权访问Redis以及读取Redis数据。 漏洞复现复现环境: kali2020(安装有redis3.2.0,192.168.190.128) kali2021(安装有redis4.0.8,192.168.190.129) 编辑redis配置文件redis.conf: 前面加上#号,去掉IP绑定,允许除本地外的主机登陆redis服务: 修改protected-mode为no,关闭保护模式,允许远程连接redis服务,protected-mode是Redis3.2版本新增的安全配置项,开启后要求需要配置bind ip或者设置访问密码,关闭后是允许远程连接: 重新启动redis。 redis写入webshell漏洞原理靶机的redis存在未授权访问,并且开启了web服务,知道了web目录的路径,并具有文件读写增删改查的权限,即可通过redis在指定的web目录下写入一句话木马,用菜刀连接可达到控制服务器的目的。 漏洞复现靶机开启web服务,这里开启apache服务:
在攻击机上执行下列命令(执行顺序可以打乱):
此时靶机网站根目录下已经写入该文件: 蚁剑测试: redis密钥登录ssh漏洞原理在数据库中插入一条数据,将本机的公钥作为value,key值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以在服务器端的/root/.ssh下生成一个授权的key。 漏洞复现利用条件:redis对外开放,且是未授权访问状态,并且redis服务ssh对外开放,可以通过key登入。 靶机开启ssh服务:
攻击机上创建ssh-rsa密钥,也就是生成key,这里密码搞成空,全部默认即可
将公钥导入key.txt,这里将密钥开头和结尾添加了一些\n是用于防止乱码; 将生成的公钥写入靶机服务器的内存之中
可以看见成功写入 设置路径和保存的文件名,将内存变量导入磁盘文件
这里报错的意思是靶机没有这个文件目录, 原因是.ssh 是记录密码信息的文件夹,如果没有用root用户登录过的话,就没有 .ssh 文件夹,所以我们在靶机上执行下面这条命令即可(也可以手动创建.ssh目录):
此时,可成功导入 靶机这边也成功写入 此时,在攻击机这里用ssh连接靶机,可成功连接
利用计划任务反弹shell漏洞原理利用Redis未授权漏洞,可以通过写入文件到系统计划任务目录 /var/spool/cron下来执行。 漏洞复现攻击机开启监听 连接靶机redis,写入反弹shell
过一分钟左右可以收到反弹的shell,但是这里需要注意的是,只适用于centos上开启的服务,ubuntu上不行,不过我还是不相信会这么邪门,在网上发现了个文章,关于解决crontab反弹shell失败的,具体解决方法如下: 这里参考了这篇文章:https://m3lon.github.io/2019/03/18/%E8%A7%A3%E5%86%B3ubuntu-crontab%E5%8F%8D%E5%BC%B9shell%E5%A4%B1%E8%B4%A5%E7%9A%84%E9%97%AE%E9%A2%98/#more centos的定时任务目录在/var/spool/cron/目录下,kali和ubuntu的定时任务文件在/var/spool/cron/crontabs目录下,因此这里我们重新写入
进入靶机计划任务目录查看,已经写入,但是文件权限为644 需要特别注意的一点是这的root文件的权限必须为600,否则会出现
因此这里给他改了权限 同时反弹shell的shell环境是bash,而kali中的/bin/sh这个软连接指向了dash 这里修改为bash 不过这种方法kali依旧没有反弹回来。。(这里如果有师傅成功了可以和我说一下方法) 接下来试试第二种方法: 首先将/bin/sh改为dash
避免在cron文件里去使用bash这个shell,在靶机上去建一个反弹shell的shell脚本文件,然后在任务计划里面去直接调用这个shell脚本文件,脚本内容为:
加个执行权限: 之后计划任务里面的内容改成
依旧没有反弹,,好吧,是我菜鸡了,可能确实不行,这里问题先保留如果有师傅有建议,欢迎提出哈 远程主从复制RCE漏洞原理漏洞存在于4.x、5.x版本中,Redis提供了主从模式,主从模式指使用一个redis作为主机,其他的作为备份机,主机从机数据都是一样的,从机负责读,主机只负责写,通过读写分离可以大幅度减轻流量的压力,算是一种通过牺牲空间来换取效率的缓解方式。在redis 4.x之后,通过外部拓展可以实现在redis中实现一个新的Redis命令,通过写c语言并编译出.so文件。在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上。然后在从机上加载恶意so文件,即可执行命令。 漏洞复现redis-rogue-server工具下载地址:https://github.com/n0b0dyCN/redis-rogue-server 该工具无法对Redis密码进行Redis认证,也就是说该工具只适合目标存在Redis未授权访问漏洞时使用。如果存在密码可以使用下面这个工具。 Awsome-Redis-Rogue-Server工具下载地址:https://github.com/Testzero-wz/Awsome-Redis-Rogue-Server 执行反弹
选择交互式的shell(interactive shell) 或者反弹shell(reserve shell),这里选择的是交互式;若是选择反弹的如下: 这部分的缺点就是只适用于目标机器允许远程登录的时候,如果目标机子只允许本地登录,则这种利用方法就不行了,此时可以配合其他漏洞,从目标本地登录redis。 本地Redis主从复制RCE反弹shell漏洞原理对于只允许本地连接的Redis服务器,可以通过开启主从模式从远程主机上同步恶意.so文件至本地,接着载入恶意.so文件模块,反弹shell至远程主机。 漏洞复现这里将redis-rogue-server-master的exp.so复制到Awsome-Redis-Rogue-Server的目录下使用,因为exp.so带system模块。 kali开启监听,接受会话的反弹 开启15000端口的主服务器
靶机本机登录redis开启主从模式
查看是否存在模块,可以看见目前没有可用模块
可以看见主服务器上FULLRESYNC全局同步数据中…
可以看见加载是成功的。 反弹shell:
关闭主从模式
安全防护redis的安全设置:设置完毕,需要重加载配置文件启动redis 1.绑定内网ip地址进行访问 2.requirepass设置redis密码 3.保护模式开启protected-mode开启(默认开启) 4.最好把端口更改 5.单独为redis设置一个普通账号,启动redis。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/16 5:30:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |