安基网 首页 安全 攻防案例 查看内容

黑客“实战”内容之Redis未授权访问漏洞复现

2019-10-23 09:39| 投稿: xiaotiger |来自: 互联网


免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

摘要: Redis是一种开源的,内存中的数据结构存储系统,可用作数据库,消息代理或缓存。由于它是在在受信任的环境中访问,因此不应在Internet上公开。但是,一些Redis服务绑定到公共接口,甚至没有密码身份验证保护。在某些 ...

Redis是一种开源的,内存中的数据结构存储系统,可用作数据库,消息代理或缓存。由于它是在在受信任的环境中访问,因此不应在Internet上公开。但是,一些Redis服务绑定到公共接口,甚至没有密码身份验证保护。

在某些情况下,如果Redis使用root帐户运行,攻击者可以将SSH公钥文件写入root帐户,直接通过SSH登录到受害服务器。这会允许黑客获得服务器权限,删除或窃取数据,甚至导致加密勒索,严重危及正常的业务服务

在正式开始介绍复现过程前,先说明一下我复现的是最严重的漏洞利用情况即以root身份登录redis服务写入ssh公钥实现使用ssh免密登录受害主机。现在先说明一下SSH免密登录的原理(已经了解的童靴们可以直接跳过hhh):

SSH提供两种登录验证方式,一种是口令验证也就是账号密码登录,另一种是密钥验证也就是我们想要的免密登录了,这里我只简单说一下密钥验证的原理。

所谓密钥验证,其实就是一种基于公钥密码的认证,使用公钥加密、私钥解密,其中公钥是可以公开的,放在服务器端,你可以把同一个公钥放在所有你想SSH远程登录的服务器中,而私钥是保密的只有你自己知道,公钥加密的消息只有私钥才能解密,大体过程如下:

(1)客户端生成私钥和公钥,并把公钥拷贝给服务器端;

(2)客户端发起登录请求,发送自己的相关信息;

(3)服务器端根据客户端发来的信息查找是否存有该客户端的公钥,若没有拒绝登录,若有则生成一段随机数使用该公钥加密后发送给客户端;

(4)客户端收到服务器发来的加密后的消息后使用私钥解密,并把解密后的结果发给服务器用于验证;

(5)服务器收到客户端发来的解密结果,与自己刚才生成的随机数比对,若一样则允许登录,不一样则拒绝登录。

下面我们开始进行漏洞环境的搭建:

从官网下载源码的压缩包,程序:

wget http://download.redis.io/releases/redis-3.2.11.tar.gz

解压:

tar xzf redis-3.2.11.tar.gz

进入解压后的目录:

cd redis-3.2.11

执行:

Make

执行完毕后,进入src目录:

cd src

将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了)

cp redis-server /usr/bin

cp redis-cli /usr/bin

返回目录redis-3.2.11,将redis.conf拷贝到/etc/目录下

Cd

Cp redis.conf /etc/

编辑etc中的redis配置文件redis.conf,如下图所示

Vim redis.conf

这样可以去掉ip绑定,允许除本地外的主机远程登录redis服务

关闭保护模式,允许远程连接redis服务

使用/etc/目录下的reids.conf文件中的配置启动redis服务

redis-server /etc/redis.conf

安装ssh服务

使用systemctl start sshd命令启动ssh服务。

(三)复制虚拟机,一个作为靶机,一个作为攻击端

至此漏洞环境便已经搭建完毕,此时的redis服务是可以以root用户身份远程免密码登录的。

查看两机器的ip

虚拟机A(192.168.0.146)为靶机,虚拟机B(192.168.0.147)为攻击端

在A中开启redis服务:redis-server /etc/redis.conf

在主机A中执行mkdir /root/.ssh命令,创建ssh公钥存放目录

在B中生成ssh公钥和私钥,密码设置为空

进入.ssh目录:cd .ssh/,将生成的公钥保存到1.txt

将1.txt写入redis

远程登录主机A的redis服务:redis-cli -h 192.168.0.146 并使用CONFIG GET dir命令得到redis备份的路径:

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

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

开启主机A和主机B的ssh服务(Fedor默认ssh服务关闭),命令为systemctl start sshd.serveice:

在主机B使用ssh免密登录主机A:ssh -i id_rsa root@192.168.0.146,成功登录:

我们就成功利用redis未授权访问漏洞实现了ssh免密登录目标服务器,接下来就可以使用ssh服务来进行下一步的渗透工作



小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:https://www.toutiao.com/a6750563768033346060/

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

 最新
返回顶部