首页 > 编程知识 正文

redis漏洞利用,redis未授权访问修复

时间:2023-05-04 10:07:05 阅读:130084 作者:3739

文章目录Redis使用非法访问漏洞写入文件上传(失败)文件写入计划任务添加问题Bind多个IP失败

Redis未授权访问漏洞

简介

利用redis进行不正确的配置,或者使用较弱的密码(总之可以获得redis的权限),利用redis进行一系列的操作。

写入文件知识点

命令: CONFIG GET dir

获取数据库的存储路径(当然,可以使用SET设置文件的存储位置。 如果有权限的话)。

命令:配置获取数据库文件名称

获取数据库文件名,默认值为dump.RDB (设置为webshell.php等任意文件格式后使用)。

命令:保存

保存当前数据库。 将数据库中的内容写入文件,并指示文件的路径和名称

示例

配置文件保存路径

显示命令: CONFIG GET dir

命令:设置配置集dir的新文件路径

配置新文件路径时,请确保redis具有相关的访问权限。 此处使用redis的默认文件保存路径)

设置文件名

显示命令:配置获取数据库文件名

配置命令:配置集数据库文件名新文件名

数据设定

命令:需要保存在SET中的数据

保存

命令:保存

(此处保存失败的原因可能是无法访问redis设置的文件路径。 具体来说,可以查看redis的日志文件来查看错误消息。)

最初设置了自定义路径,但redis没有访问权限,保存失败。 查看日志发现问题,恢复为默认路径并解决了。自定义访问路径

失败日志(日志的默认路径/var/log/redis/redis-server.log ) )。

恢复为默认路径并保存成功

目录中出现了对应文件

文件知识点

采用了Metasploit的redis的upload模块

其原理与文件上传相同

示例

搜索和采用upload模块

设置相关属性

RHOSTS:目标IP

RPORT:目标服务端口

远程文件:目标计算机上保存文件的绝对路径

必须在本地文件:中上传的文件

FLUSHALL:是否清空了数据库? 一般请不要做。 这里只是为了测试。

中选择所需的墙类型

成功

失败了。 恐怕是路径访问权限的问题

写计划任务(未成功)知识点

命令: flushall

清空所有密钥。 通常不使用。 key为空是为了在编写计划任务时防止文件格式破坏

命令: CONFIG SET dir [path]

设置文件保存路径。 任务文件存储路径通常为/var/spool/cron

命令: SET key ' . '

设定键值。 是要写入文件的内容

命令:配置集db filename .

设置文件名(需要写什么,木马、日程任务、网页等)。

命令:保存

保存数据库的内容(自己写的内容)。

Linux计划任务

命令: sudo crontab [-user ] [-I ] {-e|- l|- r }

日程文件格式:

#执行指令使用量外壳,默认为外壳=/超级带/shPATH=/usr/local/s超级带:/usr/local/超级带:/s超级带:/s

命令: sudo/etc/init.d/r系统日志开始

示例

文件已成功写入,但运行时发生了错误。 指示文件格式错误

因此,我简单地理解Linux的Crontab计划任务Link

遇到的问题

没有目录权限的格式不是shell

默认值为sh,但需要的是bash额外遇到的问题Bind多个IP失败简述

默认情况下只允许本地连接127.0.0.1。 要访问外部设备,必须在配置文件redis.conf中设置超级带d ip

可以设置多个IP,例如超级带d ip1 ip2 [ip.]

但是,我一个环境可以,另一个环境不行,在出现问题的环境中采用了端口映射的方法绕过了。

环境

Windows 10 (服务器端) )。

(WSLUbuntu-18.04(redis服务需要环境) ) ) ) ) ) ) ) ) )。

Redis-4.0.9

kali (访问端)。

过程

配置Windows端口映射

因为只能访问环回地址127.0.0.1:6379,所以将本地IP端口映射到环回地址

命令: netshinterfaceprotproxyaddv4to v4 listen address=本地IP listenport=监听端口connect address=127.0.0.1 connectport

验证是否成功

第一次验证是否成功映射了端口

命令: netsh接口打印代理显示所有

第二次检查检查是否可以连接

命令: redis-cli -h本地IP -p监听的端口

防护墙的设置

步骤2完成后,映射变为可用,但如果使用其他计算机访问redis,则该映射可能仍不可用,因为它已被防火墙阻止。 这里列出了两种解决方法。

关闭防火墙

辛苦了一次,安全性大大降低了。 配置入站设置

通过仅向特定IP或IP组开放特定端口来确保安全性。 (出入站的规则配置请自行百度)

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