渗透测试之SSRF漏洞原理 危害 产生的原因 探测手法 防御手法 绕过手法 限制的手段

目录

SSRF说明:

SSRF攻击流程

原理:

危害:

SSRF产生的原因

ssrf漏洞利用{危害}

探测手法是否存在SSRF漏洞

如何找ssrf漏洞位置

分享连接地址

google hack url关键字

PHP语言中可能出现的ssrf漏洞函数

file_get_contents

sockopen()

curl_exec()

SSRF防御

1、过滤返回信息

2、统一错误信息

3、限制请求的端口为http常用的端口

4、防火墙策略

5、禁用不需要的协议

6、url网址写死

SSRF绕过手法

1、限制为http://www.xxx.com 域名时(利用@)

2.采用短网址绕过,也叫做url短链接

3.采用进制转换

4.利用特殊域名

5.利用[::]

6.利用句号

7、CRLF 编码绕过

8.利用封闭的字母数字

常见限制

1.限制为http://www.xxx.com 域名

2.限制请求IP不为内网地址

3.限制请求只为http协议


SSRF说明:

  • CSRF:跨站请求伪造,客户端请求伪造

  • SSRF(Server-Side Request Forgery:服务器端请求伪造)

    • 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。

  • 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统

  • 正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统

SSRF攻击流程

  • 外网是服务攻击到

  • 内网ip是不联网的(服务器)

  • 如果含有ssrf漏洞

  • Pyload

  • 内网服务器

原理:

  • SSRF 形成的原因:
    • 大都是由于服务端提供了
    • 从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制

  • 黑客操作服务端从指定URL地址获取网页文本内容

    • 加载指定地址的图片,下载等等

    • 利用的是服务端的请求伪造【SSRF】

    • ssrf是利用存在缺陷的web应用作为代理攻击远程和本地的服务器。

外网 -> 如果含有ssrf漏洞{中间外网服务器} –> pyload -> 内网服务器

  • 本机 公网 【攻击主机】
  • Win2003 php 公网 lan地址 【外网服务器 商城】
  • Win lan地址 【和外网服务器商城相连接】

危害:

  • 主要是用来进行内网进行探测

    • 也可以说是内网信息收集

    • 存货主机和开发端口。

    • 基于这一步开展下一步的后渗透行为

  • 访问网址是没意义的 我们需要探测内网主机端口开放情况以及存活情况。


SSRF产生的原因

  • 就是用户提交过来的数据没有做过滤

  • 我们就可以改成内网ip地址手动去探测一下

    • 这个的前提是我们做好信息收集拿到了真实的IP


ssrf漏洞利用{危害}

  1. 可以对外网服务器所在的内网进行端口扫描,获取一些服务的banner信息mysql5.5.53

  2. 有时候还可以攻击运行在内网或本地的应用程序; 内网中其它的主机 比如通过ssrf给内网的redis写定时任务,实现反弹shell;

  3. 对内网web应用进行指纹识别;

  4. 攻击内外网的web应用,比如struts2,sql注入等;

  5. 利用file协议读取本地文件等;

  6. 各种伪协议进行探测:http,file,dict,ftp,gopher等 伪协议;


探测手法是否存在SSRF漏洞

  • BP攻击器 如果对方开启了ip白名单或者是请求频率限制如何处理?

    • 手工探测是非常麻烦勒

    • 这个时候我们就可以借助自动化工具去探测比如说BP

如何找ssrf漏洞位置

  • 各大电商分享地址 这样就是请求地址转发的形式

    • 其实这样就是一个服务端的ssrf漏洞

    • 探测分享网址的服务端地址 探测服务端服务器。

分享连接地址

  • 图片、文章收藏功能:此处的图片、文章收藏中的文章收藏

  • 就类似于分享功能中获取URL地址中title以及文本的内容作为显示,目的还是为了更好的用户体验。

    • 例如title参数是文章的标题地址,代表了一个文章的地址链接,请求后返回文章是否保存,收藏的返回信息。

    • 如果保存,收藏功能采用了此种形式保存文章,则在没有限制参数的形式下可能存在SSRF。

    • http://title.xxx.com/title?title=http://title.xxx.com/as52ps63de

google hack url关键字

  • 从URL关键字中寻找

    • 利用google 语法加上这些关键字去寻找SSRF漏洞。

    • Inurl: .php?url=

share

wap

url

link

src

source

target

u

display

sourceURl

imageURL

domain


PHP语言中可能出现的ssrf漏洞函数

  • 代码审计会发现的漏洞 需要看对请求参数是否过滤。

file_get_contents

  • 下面的代码使用file_get_contents函数从用户指定的url获取图片

    • 然后把它用一个随机文件名保存在硬盘上,并展示给用户

<?php if (isset($_POST['url'])) {
$content = file_get_contents($_POST['url']); $filename ='./images/'.rand().';img1.jpg'; file_put_contents($filename, $content); echo $_POST['url'];
$img = "<img src=\"".$filename."\"/>";
}
echo $img;
?>

sockopen()

  • 以下代码使用fsockopen函数实现获取用户制定url的数据(文件或者html)。这个函数会使用socket跟服务器建立tcp连接,传输原始数据

<?php
function GetFile($host,$port,$link)
{
$$fp = fsockopen($$host, intval($port), $errno, $errstr, 30);
if (!$fp) {
echo "$errstr (error number $errno) \n";
} else {
$$out = "GET $$link HTTP/1.1\r\n";
$$out .= "Host: $$host\r\n";
$out .= "Connection: Close\r\n\r\n";
$out .= "\r\n";
fwrite($fp, $out);
$contents='';
while (!feof($fp)) {
$$contents.= fgets($$fp, 1024);
}
fclose($fp);
return $contents;
}
}
?>

curl_exec()

  • cURL这是另一个非常常见的实现,它通过 PHP获取数据。文件/数据被下载并存储在“curled”文件夹下的磁盘中,并附加了一个随机数和“.txt”文件扩展名

<?php if (isset($_POST['url'])) {
$link = $_POST['url']; $curlobj = curl_init();
curl_setopt($curlobj, CURLOPT_POST, 0); curl_setopt($curlobj,CURLOPT_URL,$link); curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
$result=curl_exec($curlobj); curl_close($curlobj);
$filename = './curled/'.rand().'.txt'; file_put_contents($filename, $result); echo $result;
}
?>

SSRF防御

  • 1、过滤返回信息

    • 验证远程服务器对请求的响应是比较容易的方法。

    • 如果web应用是去获取某一种类型的文件

    • 那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。

  • 2、统一错误信息

    • 避免用户可以根据错误信息来判断远端服务器的端口状态

  • 3、限制请求的端口为http常用的端口

    • 比如,80,443,8080,8090。

  • 4、防火墙策略

    • 内网ip设置黑名单

    • 避免应用被用来获取获取内网数据

    • 攻击内网。

  • 5、禁用不需要的协议

    • 仅仅允许http和https请求

    • 可以防止类似于file:///,gopher://,ftp:// 等引起的问题。

  • 6、url网址写死

    • 固定几个网址

    • 其他网址一律不允许访问


SSRF绕过手法

1、限制为http://www.xxx.com 域名时(利用@)

  • 可以尝试采用http基本身份认证的方式绕过

  • 如:http://www.aaa.com@www.bbb.com@www.ccc.com,在对@解析域名中,不同的处理函数存在处理 差异 在PHP的parse_url中会识别www.ccc.com,而libcurl则识别为www.bbb.com。这个要分语言

2.采用短网址绕过,也叫做url短链接

  • 比如百度短地址https://dwz.cn/ 有很多在线网站就能帮我们的网址转换为url短链接形式。
  • 原理就是:
    • 当请求这个短链接的时候,url短链接提供商的服务器先解析一下对应的真实url
    • 然后拿到实url之后再发起访问
    • 这样提交的数据看不到真实url
    • 用来绕过后端代码对网址的过滤,所以url短链接经常用于攻击行为和钓鱼行为等。
  • 黑客更多用这种方法来进行绕过

3.采用进制转换

  • 127.0.0.1 八进制:0177.0.0.1。
  • 十六进制:0x7f.0.0.1。
  • 十进制:2130706433.

4.利用特殊域名

  • 原理是DNS解析。
    • xip.io可以指向任意域名,即 127.0.0.1.xip.io,可解析为127.0.0.1

5.利用[::]

  • 可以利用[::]来绕过localhost
    • http://169.254.169.254>>http://[::169.254.169.254] # 这种写法是ipv6的地址写法,
    • 只要对方支持ipv6的ip地址访问就行,需要配置才行
    • 比如nginx就可以配 置ipv6来访问

6.利用句号

  • 127。0。0。1 >>> 127.0.0.1
  • 比如:
    • ping 127。0。0。1,
  • 注意,linux系统才能识别,windows系统不能识别

7、CRLF 编码绕过

  • %0d->0x0d->\r回车 %0a->0x0a->\n换行 进行HTTP头部注入 example.com/?
  • url=http://eval.com%0d%0aHOST:fuzz.com%0d%0a

8.利用封闭的字母数字

利用Enclosed alphanumerics,有些输入法直接就可以输入这样的封闭字符

ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ >>> example.com http://169.254.169.254>>>http://[::①⑥⑨。②⑤④。⑯⑨。②⑤④] List:

① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳

⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇

⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛

⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⓪ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴

⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ⓿

比如ping ①②⑦.⓪.⓪.① 注意,也是linux系统支持


常见限制

1.限制为http://www.xxx.com 域名

采用http基本身份认证的方式绕过,

即@ http://www.xxx.com@www.xxc.com

2.限制请求IP不为内网地址

当不允许ip为内网地址时:

(1)采取短网址绕过

(2)采取特殊域名

(3)采取进制转换

3.限制请求只为http协议

(1)采取302跳转 https-->http

(2)采取短地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/67789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos9编译安装opensips 二【进阶篇-定制目录+模块】推荐

环境&#xff1a;centos9 last opensips -V version: opensips 3.6.0-dev (x86_64/linux) flags: STATS: On, DISABLE_NAGLE, USE_MCAST, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, HP_MALLOC, DBG_MALLOC, CC_O0, FAST_LOCK-ADAPTIVE_WAIT ADAPTIVE_WAIT_LOOPS1024, MAX_RE…

【前端】CSS学习笔记(1)

目录 CSS的简介CSS的概念语法 CSS的引入方式内联样式&#xff08;行内样式&#xff09;内部样式外部样式&#xff08;推荐&#xff09; 选择器全局选择器元素选择器类选择器ID选择器合并选择器后代选择器子选择器相邻兄弟选择器通用兄弟选择器伪类选择器:link:visited:hover:ac…

Java面试专题——面向对象

面向过程和面向对象的区别 面向过程&#xff1a;当事件比较简单的时候&#xff0c;利用面向过程&#xff0c;注重的是事件的具体的步骤/过程&#xff0c;注重的是过程中的具体的行为&#xff0c;以函数为最小单位&#xff0c;考虑怎么做。 面向对象&#xff1a;注重找“参与者…

电阻电位器可调电阻信号隔离变送器典型应用

电阻电位器可调电阻信号隔离变送器典型应用 产品描述&#xff1a; 深圳鑫永硕科技的XYS-5587系列是一进一出线性电子尺(电阻/电位计信号及位移)信号隔离变送器&#xff0c;是将输入电阻,线性电子尺,角度位移传感器信号进行采集,隔离,放大并转换成模拟量信号的小型仪表设备,并以…

Alluxio 联手 Solidigm 推出针对 AI 工作负载的高级缓存解决方案

作者&#xff1a;Wayne Gao, Yi Wang, Jie Chen, Sarika Mehta Alluxio 作为全球领先的 AI 缓存解决方案供应商&#xff0c; 提供针对 GPU 驱动 AI 负载的高速缓存。其可扩展架构支持数万个节点&#xff0c;能显著降低存储带宽的消耗。Alluxio 在解决 AI 存储挑战方面的前沿技…

文件系统格式RAW数据恢复全攻略

一、RAW文件系统格式深度解析 在数据存储的世界里&#xff0c;文件系统扮演着至关重要的角色&#xff0c;它负责管理和组织硬盘、U盘、SD卡等存储设备上的数据。而RAW文件系统格式&#xff0c;作为一种特殊状态&#xff0c;常常让许多用户感到困惑与不安。RAW格式并非一种标准…

探索 Stable-Diffusion-Webui-Forge:更快的AI图像生成体验

目录 简介&#x1f31f; 主要特点&#x1f4e5; 安装步骤1. 下载2. 配置环境和安装依赖3. 模型目录说明 &#x1f680; 运行 Stable-Diffusion-Webui-Forge1. 进入项目目录2. 运行项目3. 打开页面 &#x1f3a8; 使用体验常见问题&#x1f4dd; 小结 简介 Stable-Diffusion-We…

汇编与逆向(一)-汇编工具简介

RadASM是一款著名的WIN32汇编编辑器&#xff0c;支持MASM、TASM等多种汇编编译器&#xff0c;Windows界面&#xff0c;支持语法高亮&#xff0c;自带一个资源编辑器和一个调试器。 一、汇编IDE工具&#xff1a;RadASM RadASM有内置的语言包 下载地址&#xff1a;RadASM asse…

Yearning开源MySQL SQL审核平台

一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开发人员使用. 本地部署&#xff0c;注重隐私&#xff0c;简单高效的MYSQL审计平台。 它可以通过流程审批&#xff0c;实现真实线上环境sql的审核和执行&#xff0c;还可以回滚执行&#xff0c;能够确保线上SQL更新的可靠性…

PyTorch使用教程(10)-torchinfo.summary网络结构可视化详细说明

1、基本介绍 torchinfo是一个为PyTorch用户量身定做的开源工具&#xff0c;其核心功能之一是summary函数。这个函数旨在简化模型的开发与调试流程&#xff0c;让模型架构一目了然。通过torchinfo的summary函数&#xff0c;用户可以快速获取模型的详细结构和统计信息&#xff0…

【2024 博客之星评选】请继续保持Passion

我尝试复盘自己2024年走的路&#xff0c;希望能给诸君一些借鉴。 文章目录 回头望感想与收获成长与教训今年计划感恩一些体己话 回头望 回望我的2024年&#xff0c;年初拿高绩效&#xff0c;但感觉逐渐被公司一点点剥离出中心&#xff1b;年中一直在学习防患于未然&#xff1b…

C++ 类- 构造和析构

空类 class A {};空类大小&#xff1a; sizeof(A) 1编译器会默认生成 6 个成员函数&#xff1a; class A { public:A();//构造函数 - 完成对象初始化工作~A();//析构函数 - 完成对象的资源清理A(const A& a);//拷贝构造函数 - 使用同一类中之前创建的对象来初始化新创建…

集群、分布式及微服务间的区别与联系

目录 单体架构介绍集群和分布式架构集群和分布式集群和分布式区别和联系 微服务架构的引入微服务带来的挑战 总结 单体架构介绍 早期很多创业公司或者传统企业会把业务的所有功能实现都打包在一个项目中&#xff0c;这种方式就称为单体架构 以我们都很熟悉的电商系统为例&…

从Windows通过XRDP远程访问和控制银河麒麟ukey v10服务器,以及多次连接后黑屏的问题

从Windows通过XRDP远程访问和控制银河麒麟ukey v10服务器&#xff0c;以及多次连接后黑屏的问题。 安装 rdp 服务&#xff1a; yum install -y epel-release yum install -y xrdp或者如下&#xff1a; 可以通过下载rpm软件包&#xff0c;然后rpm方式安装。访问xrdp官网https…

Maven多环境打包方法配置

简单记录一下SpringBoot多环境打包配置方法&#xff0c;分部署环境和是否包含lib依赖包两个维度 目录 一、需求说明二、目录结构三、配置方案四、验证示例 一、需求说明 基于Spring Boot框架的项目分开发&#xff0c;测试&#xff0c;生产等编译部署环境&#xff08;每一个环境…

SpringMVC 实战指南:打造高效 Web 应用的秘籍

第一章&#xff1a;三层架构和MVC 三层架构&#xff1a; 开发服务器端&#xff0c;一般基于两种形式&#xff0c;一种 C/S 架构程序&#xff0c;一种 B/S 架构程序使用 Java 语言基本上都是开发 B/S 架构的程序&#xff0c;B/S 架构又分成了三层架构三层架构&#xff1a; 表现…

github汉化

本文主要讲述了github如何汉化的方法。 目录 问题描述汉化步骤1.打开github&#xff0c;搜索github-chinese2.打开项目&#xff0c;打开README.md3.下载安装脚本管理器3.1 在README.md中往下滑动&#xff0c;找到浏览器与脚本管理器3.2 选择浏览器对应的脚本管理器3.2.1 点击去…

阳振坤:AI 大模型的基础是数据,AI越发达,数据库价值越大

2024年1月12日&#xff0c;第四届OceanBase数据库大赛决赛在北京圆满落幕。在大赛的颁奖典礼上&#xff0c;OceanBase 首席科学家阳振坤老师为同学们献上了一场主题为“爱上数据库”的公开课&#xff0c;他不仅分享了个人的成长历程&#xff0c;还阐述了对数据库行业现状与未来…

2.1.3 第一个工程,点灯!

新建工程 点击菜单栏左上角,新建工程或者选择“文件”-“新建工程”,选择工程类型“标准工程”选择设备类型和编程语言,并指定工程文件名及保存路径,如下图所示: 选择工程类型为“标准工程” 选择主模块机型; 选择熟悉的编程语言; 填写工程名,选择存放路径; 确定。 编…

Chrome谷歌浏览器如何能恢复到之前的旧版本

升级了谷歌最新版不习惯&#xff0c;如何降级版本 未完待续。。 电脑中的Chrome谷歌浏览器升级到了最新版本&#xff0c;但是有种种的不适应&#xff0c;如何能恢复到之前的旧版本呢&#xff1f;我们来看看操作步骤&#xff0c;而且无需卸载重装。 怎么恢复Chrome 之前版本&a…