首页 > 编程知识 正文

redis端口漏洞(redis和mysql区别)

时间:2023-05-04 09:16:43 阅读:102201 作者:1863

01、Redis漏洞简介

Redis是用ANSI C语言编写的开源日志型、Key-Value数据库,支持网络,可基于内存,可持久化,提供多种语言的API。

Redis配置不当会导致未经授权的访问。在一定条件下,当Redis服务器以root身份运行时,黑客可以将SSH公钥文件写入root账户,然后通过SSH直接登录目标受害服务器,再直接抬高目标服务器的权限,然后进行一系列的数据添加、删除、检查和修改操作,甚至泄露信息、勒索和加密等。这将对日常业务产生不良影响。

在正常情况下,Redis服务会绑定到服务器的端口6379,Redis的默认配置不会启用身份验证。如果不采取相关防御措施,比如在防火墙中加入规避措施,避免其他不可信的IP访问,这将直接把Redis服务暴露给公网。

最直接的影响就是其他用户可以不经授权直接访问Redis服务器,进行相关的恶意操作:

未经授权的访问写入公钥将Redis DB文件更改为公钥目录使用私钥登录

02、未授权访问检测

Redis的默认配置是只允许本地访问,默认配置为空密码。

通常,Nmap用于扫描目标机器。如果发现主机的6379端口对外开放,目标主机对外网络接入开放,可以使用redis-cli服务在本地连接目标服务器,然后进行恶意操作。黑客可以使用Redis提供的config命令写入文件,而无需授权即可访问Redis。然后,攻击者可以将其ssh公钥写入/root/中的authotrized _ keys文件。目标Redis服务器的ssh文件,然后使用公钥对应的私钥和ssh服务直接登录目标Redis服务器。

00-1010为Redis无人机服务器配置Kali服务器172.16.35.109。为redis攻击机配置Kali服务器172 . 16 . 35 . 110 1)在redis无人机上输入redis-server /etc/redis.conf命令,以root身份启动Redis服务。

2)使用。/Redis-CLI-H172.16.35.109在攻击者的Redis服务文件夹路径下,默认情况下无需密码即可直接成功连接目标Redis服务器。

3)连接验证:我们将shell文件写入目标飞机的目标路径(在这里,我们可以通过phpinfo或报错、查看源代码、SQL注入等找到正确的物理路径。)

到目前为止,已经证明Redis漏洞存在,允许未经授权的访问。

00-1010先解释一下公钥和私钥的含义和作用:

公钥和私钥是一组生成的密钥。公钥是所有者在生成后公开发出的加密方法。在外部网络中,只有与所有者相对应的私钥才能解密和配对用所有者公钥加密的文件。同样,用私钥加密的文件只能用相应的公钥解密。公钥和私钥是成对的,它们相互解密。

1)确认无人机处于开启Redis服务的状态。

2)执行mkdir /root/。ssh在目标机器上创建一个ssh公钥存储目录(目标机器用作SSH服务器)

"https://p6.toutiaoimg.com/origin/pgc-image/c673c5b75fc7496484ffff50d7ce73d2.png?from=pc">

3)然后在攻击机172.16.35.110中输入ssh-keygen -t rsa生成公钥和私钥,密码设置为空

4)cd .ssh/ 进入.ssh目录,将生成的公钥保存为1.txt

(echo -e “nn”; cat id_rsa.pub;echo -e “nn”)> 1.txt

5)然后将保存为1.txt的公钥文件通过redis-cli服务写入靶机

6)使用redis-cli 服务连接靶机

7)使用 CONFIG GET dir 查看Redis的备份路径

8)更改redis备份路径为ssh公钥存放目录

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

10)检查一下是否更新成功CONFIG GET dbfilename

11)在攻击机上使用ssh免密登录靶机172.16.35.109

12)使用ifconfig查看是登录成功 ip已为172.16.35.109

05、防御方案

(1)修改在Redis的目录下打开redis.conf文件

之前在配置靶机环境的时候,对redis.conf文件进行了相应改动,现在反其道而行,即可防御漏洞。将bind 127.0.0.1前面的注释符去掉,这里的bind 127.0.0.1是只允许本机访问,可以改成允许访问的来访IP制作白名单。修改之后,我们在Redis服务器启动Redis服务的时候,就不能仅仅输入redis-server /etc/redis.conf 来启动服务了,需要改成:redis-server [redis配置文件所在目录]/redis.conf ,这种修改方法的缺陷是,只允许一台机器访问Redis服务器。

(2)增加远程登录密码

打开redis.conf文件找到requirepass,然后在后面增加登录验证的密码,这样,攻击者再尝试使用ssh登录也就无法执行命令了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。