文章目录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组开放特定端口来确保安全性。 (出入站的规则配置请自行百度)