Redis学习记录
2022/2/6 19:12:49
本文主要是介绍Redis学习记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
redis入门
基础内容可以在菜鸟教程
redis实践
环境搭建
攻击机:kali redis4-5
靶机:Ubuntu redis4-5
apt install redis-server#安装即可
Ubuntu下
redis日志文件地址
/var/log/redis/redis-server.log
配置文件地址
/etc/redis/redis.conf
redis未授权访问
靶机配置
vim /etc/redis/redis.conf
漏洞原理
Redis默认情况下,会绑定在0.0.0.0:6379,如果没有采用相关的策略,如配置防火墙规则避免其他非信任来源的IP访问,就会将Redis服务暴露在公网上;如果没有设置密码认证(一般为空)的情况下,会导致任意用户可以访问目标服务器下未授权访问Redis以及读取Redis数据。
漏洞复现
首先
sudo ufw status
查看防火墙状态,可能会防止未知ip访问,这里要关掉,或者允许攻击机的IP访问。
然后,注释bind,修改protested-mode
记得重启redis服务器
systemctl restart redis-server
攻击机访问成功
如果不修改 redis.conf
文件
访问失败
redis写webshell
触发条件:
- redis未授权访问
- 用读写的权限
- 知道web目录的路径
漏洞原理
类似mysql的into outfile写shell。即可通过redis在指定的web目录下写入一句话木马,用菜刀连接可达到控制服务器的目的。
漏洞复现
靶机启动redis服务
注意:这里需要sudo命令下启动redis,否则会因为权限不够,导致写shell失败
靶机启动web服务
攻击机未授权访问后,写shell步骤
查看web目录 ,发现写入的文件
Apache服务访问shell文件,写shell成功
利用计划任务反弹shell
漏洞原理
crontab是做计划任务的,启动的任务存放在/var/spool/cron中,利用Redis未授权漏洞,可以通过写入文件到系统计划任务目录 /var/spool/cron下来执行。
漏洞复现
由于靶机Ubuntu的环境问题,首先修改 /bin/sh
指向 bash
详情访问https://www.dazhuanlan.com/knight9001/topics/1061140
攻击机kali进行端口监听
靶机sudo启动redis服务,攻击机写入文件
通过本地文件查看,也确实写入了shell
![image-20210928225607690](/Users/a/Library/Application Support/typora-user-images/image-20210928225607690.png)
听说由于Ubuntu编码问题,就无法反弹shell
CentOS 作为靶机最佳
写 ssh-keygen 公钥登录服务器
漏洞原理
SSH提供两种登录验证方式,一种是口令验证也就是账号密码登录,另一种是密钥验证。
所谓密钥验证,其实就是一种基于公钥密码的认证,使用公钥加密、私钥解密,其中公钥是可以公开的,放在服务器端,你可以把同一个公钥放在所有你想SSH远程登录的服务器中,而私钥是保密的只有你自己知道,公钥加密的消息只有私钥才能解密,大体过程如下:
(1)客户端生成私钥和公钥,并把公钥拷贝给服务器端; (2)客户端发起登录请求,发送自己的相关信息; (3)服务器端根据客户端发来的信息查找是否存有该客户端的公钥,若没有拒绝登录,若有则生成一段随机数使用该公钥加密后发送给客户端; (4)客户端收到服务器发来的加密后的消息后使用私钥解密,并把解密后的结果发给服务器用于验证; (5)服务器收到客户端发来的解密结果,与自己刚才生成的随机数比对,若一样则允许登录,不一样则拒绝登录。
触发条件:
- redis未授权访问
- 服务器开启了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器
漏洞复现
靶机开启SSH
sudo service ssh start
攻击机生成公钥,全部默认
找到存放key的位置
这里出现了靶机Ubuntu找不到
.ssh/
文件的情况,实际需要靶机使用ssh默认生成个公钥,就会产生.ssh
写入攻击机的公钥
本地查看写入认证文件
通过攻击机ssh连接成功
Redis主从复制RCE
漏洞原理
漏洞存在于4.x、5.x版本中,Redis提供了主从模式,主从模式指使用一个redis作为主机,其他的作为备份机,主机从机数据都是一样的,从机负责读,主机只负责写,通过读写分离可以大幅度减轻流量的压力,算是一种通过牺牲空间来换取效率的缓解方式。在redis 4.x之后,通过外部拓展可以实现在redis中实现一个新的Redis命令,通过写c语言并编译出.so文件。在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上。然后在从机上加载恶意so文件,即可执行命令。
触发条件
-
Redis 版本(4.x~5.0.5)(新增模块功能,可以通过C语言并编译出恶意.so文件)
-
redis弱密码或者无密码
-
root启动redis
漏洞复现
首先设置主从模式
选择使用Ubuntu为主机,kali为从机,所以主机只能读,从机只能写
尝试用主机执行写操作,失败
实现从机写,主机读操作
使用工具,反弹shell即可
redis-rogue-server工具下载地址:https://github.com/n0b0dyCN/redis-rogue-server
该工具的原理就是首先创建一个恶意的Redis服务器作为Redis主机(master),该Redis主机能够回应其他连接他的Redis从机的响应。有了恶意的Redis主机之后,就会远程连接目标Redis服务器,通过
slaveof
命令将目标Redis服务器设置为我们恶意Redis的Redis从机(slaver)。然后将恶意Redis主机上的exp同步到Reids从机上,并将dbfilename设置为exp.so。最后再控制Redis从机(slaver)加载模块执行系统命令即可。
该工具无法对Redis密码进行Redis认证,也就是说该工具只适合目标存在Redis未授权访问漏洞时使用。如果存在密码可以使用下面这个工具。
Awsome-Redis-Rogue-Server工具下载地址:https://github.com/Testzero-wz/Awsome-Redis-Rogue-Server
Redis主从复制例题
[网鼎杯 2020 玄武组]SSRFMe
https://www.freebuf.com/articles/network/260636.html
https://blog.csdn.net/cjdgg/article/details/119921735?
https://blog.csdn.net/qq_41891666/article/details/107103116
GKCTF-ezweb
- https://blog.csdn.net/qq_45691294/article/details/109031354?
更多redis内容可以参考
https://www.cnblogs.com/W4nder/p/12960596.html
浅析Redis中SSRF的利用
https://www.cnblogs.com/wjrblogs/p/14456190.html
本文参考
https://www.freebuf.com/articles/web/249238.html
https://www.freebuf.com/articles/web/289231.html
这篇关于Redis学习记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27阿里云Redis学习入门指南
- 2024-12-27阿里云Redis入门详解:轻松搭建与管理
- 2024-12-27阿里云Redis学习:新手入门指南
- 2024-12-24Redis资料:新手入门快速指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程