首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SSRF学习

SSRF学习

作者头像
Mirror王宇阳
发布于 2020-11-12 02:57:54
发布于 2020-11-12 02:57:54
67200
代码可运行
举报
运行总次数:0
代码可运行

SSRF学习

SSRF的定义(维基)

服务器端请求伪造(Server-side Request Forgery,SSRF)是攻击者滥用服务器功能访问或操作自己无法被直接访问的信息的方式之一。服务器端请求伪造攻击将域中的不安全服务器作为代理使用,这与利用网页客户端的跨站请求伪造攻击类似(如处在域中的浏览器可作为攻击者的代理)。

这里的官方说辞不够通俗,举例说明:

作为一名普通的学生A,可以正常的访问学校的官网B,我们在查自己的成绩的时候需要登录教务网站C进行查询,但是寒假期间查询的时候发现教务网站C被禁止外网访问了,如需访问只得使用校园VPN进行内网访问;这里我们假指自己没有访问内网的权限,只有访问B网站的方式,而学校的所有网站都是建立在同一个(内网)网络体系中,如此我们可以通过校园B网来间接访问教务C网。(这种理解比较粗糙)

国内普遍的解释:是攻击者构造形成由服务器端发起请求的安全漏洞

SSRF的形成原因大多是由于服务端(某个网站)提供了从(内网中)其他服务器应用获取数据的功能;且没有对连接请求做任何的安全过滤和限制;导致攻击者恶意的从该网站访问其内网中的其他资源。

SSRF的产生

  • file_get_contents()

我们在实际开发中需要从用户指定的一个地址file_get_contents()获取一张图片,然后展示图片: (这里只是举例图片,当然包括视频、网页等)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (isset($_POST['url']))
{
	$content = file_get_contents($_POST['url']);
	echo $content;
}

这里的url所指向的图片是用户所无法直接获取的,但是可以通过同一个内网中的服务器进行获取。

  • fscokopen()

fscokopen()函数可以帮助我们打开一个网络连接或一个套接字连接;开发者在项目中使用函数可以和服务器建立TCP连接,传输数据;对于用户而言实现获取指定的数据(文件或HTML)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function GetFile($host, $port, $link){
	// 建立套接字 返回文件句柄
	$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
	if(!$fp){
		// 返回的错误信息
		echo "$errstr(error number $errno) \n";
	} else {
		// 设置HTTP报文头
		$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
		fwrite($fp, $out);
		$contents = "";
		while(!feof($fp)){
			// fgets访问fp并每次返回1024字节
			$contents .= fgets($fp, 1024);
		}
		// 关闭文件
		fclose($fp);
		return  $contents;
	}
}
  • curl_exec()

执行cURL会话;参数是curl_init()返回的cURL句柄。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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); // 关闭会话
	echo $result;
}

SSRF蜗居的地方

  • 社交分享功能

获取超链接的标题等内容进行显示

  • 转码服务

通过URL地址把原地址的网页内容调优使其适合手机浏览

  • 在线翻译
  • 图片加载/下载
  • 涉及第三方请求或者URL操作的功能都可能存在SSRF

https://xz.aliyun.com/t/2115

https://www.freebuf.com/column/157466.html

https://www.freebuf.com/articles/web/20407.html

寻找SSRF

  • F12查看源代码是否在本地进行请求
  • DNSlog工具进行测试,查看是否可以访问
  • 抓包分析发送的请求是不是有服务器发出的请求

利用SSRF

端口扫描

通常,只要用户输入的URL是有效的会正确执行并返回结果,若是无效的则会返回错误的信息;我们可以根据服务器SSRF伪造的请求去判断端口是否开放(在URL后加上端口号即可)但是也有应用不会判断端口号是否开放而是直接判断URL是否有效则决定访问;但是建立TCP连接的会在建立socket套接字连接的时候目标会发送Banner(类似端口的服务、版本、名称*等)信息并且能够作为原始的html数据显示;Banner信息目标服务器是可以隐藏的,但可以通过判断处理错误信息、响应时间、响应包大小等信息来综合判断端口的状态。

内网攻击

通常的内网安全保护是薄弱的也是规避安全风险的方式之一(我们学校教务网站漏洞多就永久的迁至内网了);通过SSRF攻击可以实现间接的对内网的访问,具有访问权限也就可以对内网的机器进行攻击。可以利用端口扫描的方式来探测服务,再利用Exp/Poc进行漏洞测试。

内网WEB指纹识别/访问

通过目录和一些特征文件来识别内网使用的框架、模块、CMS的类型

使用各种协议进行请求访问,比如:读取文件

采用ftp:// file://等协议

攻击内网应用程序(利用跨协议通信技术)

https://www.freebuf.com/articles/web/19622.html

绕过技巧

  • https://baidu.com https://baidu.com@baidu.com 这两个请求最终是一样的访问baidu.com

多次尝试后发现,只会识别@符号之后的url

  • IP地址的进制转换

防御思路

  • 过滤返回信息
  • 统一错误信息
  • 限制请求端口(尤其是类似80\443\8080)
  • 黑名单策略
  • 限制请求协议(通过http/s协议即可)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SSRF 漏洞记录
SSRF(Server-Side Request Forgery)也属于应用层上的一个漏洞类型,用一个最简单的例子来理解这个漏洞:比如一个添加图文的功能,填入标题内容和封面图然后提交在网站前台显示,对于这个功能的图片它除了可以让你上传以外,还支持填入远程图片地址,如果你填入了远程的图片地址,则该网站会加载远程图过来进行显示,而如果程序写法不严谨或者过滤不严格,则加载图片地址的这个功能可能就可以包含进行一些恶意的脚本文件,或者你输入内网的 ip 或者一些系统的文件都会被解析执行,这个我们一般叫它 SSRF 即服务端请求伪造。
全栈程序员站长
2022/09/12
8660
SSRF 漏洞记录
一篇文章深入学习SSRF漏洞
博客原文地址: https://hack-for.fun/posts/20200120/
IFONLY@CUIT
2020/02/19
3K0
渗透测试笔记-6
SSRF(Server-Side Request Forgery)服务端请求伪造,是一种由攻击者构造请求,由服务器端发起请求的安全漏洞,本质上是属于信息泄露的漏洞。
Baige
2022/03/21
4740
渗透测试笔记-6
SSRF 服务端请求伪造攻击,程序员必掌握
SSRF,Server-Side Request Forgery,服务端请求伪造,是一种由攻击者构造形成由服务器端发起请求的一个漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。
后端技术探索
2019/04/25
1.2K0
SSRF原理实战及修复方式
SSRF定义 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
Gcow安全团队
2020/03/19
2.5K0
SSRF原理实战及修复方式
SSRF漏洞详解 一文了解SSRF漏洞
服务器端请求伪造(Server-Side Request Forgery, SSRF)
全栈程序员站长
2022/09/13
1.8K0
SSRF漏洞详解 一文了解SSRF漏洞
从一文中了解SSRF的各种绕过姿势及攻击思路
文章首发于跳跳糖社区https://tttang.com/archive/1648/
用户9691112
2023/05/18
5.4K0
从一文中了解SSRF的各种绕过姿势及攻击思路
SSRF安全指北
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成,由服务端发起请求的一个安全漏洞。SSRF是笔者比较喜欢的一个漏洞,因为它见证了攻防两端的对抗过程。本篇文章详细介绍了SSRF的原理,在不同语言中的危害及利用方式,常见的绕过手段,新的攻击手法以及修复方案。
腾讯安全应急响应中心
2021/01/26
1.8K0
SSRF安全指北
SSRF漏洞讲解
平常在做渗透测试工作的过程中哪些地方容易产生SSRF漏洞,可以看到大部分相关资料都会显示,容易产生SSRF的地方在社交分享、图片加载、邮件系统、数据库等。为什么这些地方会出现呢,社交分享可能会分享到其他网址对吧,如果我们替换其网址为我们的本地地址呢,会出现什么样得情况?同一个地址更换不同的端口又会有什么不同,加载图片请求的服务器可能和你所访问的网站不是同一个服务器,这样是不是能探测内网的同一局域网段的情况呢,邮件系统也是同一道理,这些都是探测SSRF漏洞的手段。
全栈程序员站长
2022/09/13
1.1K0
SSRF漏洞讲解
SSRF漏洞总结
SSRF(Server-Side Request Forgery):指目标应用存在一种漏洞,利用该漏洞攻击者可以控制目标web应用的后端程序向任意ip地址/语言发送http请求或者其他数据包
全栈程序员站长
2022/09/12
1.6K0
SSRF漏洞总结
了解SSRF漏洞,这一篇就足够了......
本号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如有侵权请联系小编处理。
网络安全自修室
2022/05/16
4.6K0
了解SSRF漏洞,这一篇就足够了......
SSRF漏洞原理解析[通俗易懂]
SSRF全称:Server-Side Request Forgery,即,服务器端请求伪造。是一个由攻击者构造请求,在目标服务端执行的一个安全漏洞。攻击者可以利用该漏洞使服务器端向攻击者构造的任意域发出请求,目标通常是从外网无法访问的内部系统。简单来说就是利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网进行攻击。
全栈程序员站长
2022/09/12
10.2K0
SSRF漏洞原理解析[通俗易懂]
SSRF漏洞原理攻击与防御
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个漏洞
十二惊惶
2024/02/28
5890
SSRF漏洞原理攻击与防御
SSRF漏洞简单分析
SSRF(服务器端请求伪造)是一种由攻击者构造请求,服务器端发起请求的安全漏洞,所以,一般情况下,SSRF攻击的目标是外网无法访问的内部系统。
雪痕@
2020/09/27
6460
SSRF漏洞简单分析
【Pikachu】SSRF(Server-Side Request Forgery:服务器端请求伪造)
SSRF(Server-Side Request Forgery:服务器端请求伪造)
菜菜有点菜
2022/03/17
6900
【Pikachu】SSRF(Server-Side Request Forgery:服务器端请求伪造)
CTFHub技能树通关教程——SSRF漏洞原理攻击与防御(一)(超详细总结)
即服务器端请求伪造(Server-Side Request Forgery),是一种网络攻击技术,攻击者利用服务器上的应用程序向任意服务器发起请求或者操作,这些请求可能包括但不限于文件读取、命令执行、端口扫描等。由于这些请求是从服务器内部发起的,因此他们可以绕过服务器的外部访问控制,访问内部网络资源或者执行恶意操作。
小羽网安
2024/06/16
6250
CTFHub技能树通关教程——SSRF漏洞原理攻击与防御(一)(超详细总结)
实战 | 利用SSRF渗透内网主机-中
快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本。FastCGI致力于减少网页服务器与CGI程序之间交互的开销,从而使[服务器可以同时处理更多的网页请求。
HACK学习
2021/12/27
1.5K0
实战 | 利用SSRF渗透内网主机-中
PHP的libcurl中存在的一些问题
PHP的libcurl中存在的一些问题 看了近来的几场ctf题目,学习了一些关于php libcurl的一些知识,在这里总结一下。 0x1发送POST请求时造成任意文件读取 PHP manual上对C
安恒网络空间安全讲武堂
2018/02/06
1.1K0
PHP的libcurl中存在的一些问题
比 file_get_contents() 更优的 cURL 详解(附实例)
在 PHP 中,cURL 是一个扩展库。它可以与各种类型的服务器、使用各种类型的协议进行连接和通讯。
码农编程进阶笔记
2021/07/20
1.1K0
Black Hat USA 2020议题:SSRF漏洞利用新思路
2020年BlackHat大会上,Joshua Maddux介绍了一种针对SSRF的新颖利用思路,得到了广泛的关注。此类攻击是通过构造一个HTTPS Server,使TLS session中携带攻击载荷,攻击行为触发主要通过一个受限的SSRF漏洞(甚至一个钓鱼网页),结合TLS协议和DNS协议的特性,把攻击报文发到受害者内网的TCP服务中,达到SSRF漏洞攻击面扩大的效果。本文将针对此攻击进行较深入介绍和演示,供大家学习参考。
FB客服
2021/05/20
1.1K0
Black Hat USA 2020议题:SSRF漏洞利用新思路
相关推荐
SSRF 漏洞记录
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验