深入解析SSRF漏洞:服务器端请求伪造的原理与防范措施

1、漏洞简介

深入解析SSRF漏洞:服务器端请求伪造的原理与防范措施

SSRF 是一种安全漏洞,即服务器端请求伪造。攻击者会构造形成由服务端发起请求的情况。一般而言,SSRF 攻击的目标是外网无法访问的内部系统。由于是服务端发起的,所以它能够请求到与服务端相连且与外网隔离的内部系统。

1.1 漏洞原理

SSRF 形成的原因主要有以下几点:服务端提供了从其他服务器应用获取数据的功能,并且没有对目标地址进行过滤与限制。这样就使得攻击者可以通过控制功能中的发起请求的服务,将其当作跳板,进而攻击内网中的其他服务。通过控制前台对请求远程地址加载的响应,将请求数据从远程的 URL 域名修改为请求本地或内网的 IP 地址及服务,以此来对内网系统进行攻击。

1.2 漏洞危害

利用 file、gopher、dict 协议来读取本地文件、执行命令等。

2、检测与绕过2.1 漏洞检测

假设存在一个漏洞场景:某网站具备一个在线加载功能,此功能能够将指定的远程图片加载至本地,其功能链接为://www.xxc.com/a.jpg。那么,网站请求的大致步骤大致如下:首先是用户输入图片地址;接着,请求被发送至服务端进行解析;随后,服务端会请求链接地址所对应的图片数据;最后,获取到请求的数据并将其加载到前台进行显示。在这个过程中,可能出现问题的地方在于:当请求发送到服务端时,系统没有对前台给定的参数是否为允许访问的地址域名进行校验。比如,像上述的链接可以修改为:://127.0.0.1:22 。当进行上述请求时,可能会返回请求的端口 banner 。并且,如果协议允许的话,甚至能够使用其他协议来读取和执行相关命令。判断漏洞是否存在的重要前提是请求由服务器发起,而以上链接即使存在,也不一定代表该请求是服务器发起的。在前提不满足的情况下,无需考虑 SSRF。前端获取链接后,由 js 获取对应参数,然后交由 window.location 处理相关请求,或者加载到当前的 iframe 框架中。在这个过程中不存在 SSRF,因为请求是本地发起的,无法产生攻击服务端内网的需求。

2.2 漏洞出现点

分享文章可通过 url 地址进行,比如以下地址:://127.0.0.1 。通过获取 url 参数,能在点击链接时跳到指定的分享文章。若此功能未对目标地址的范围进行过滤与限制,就会存在 SSRF 漏洞。

图片加载与下载通过 URL 地址来进行。可以加载或下载图片://127.0.0.1。图片加载在很多编辑器中都存在。在编辑器的上传图片处,有的是将本地图片加载到服务器内,还有一些是采用加载远程图片的形式。本地文章加载了设定好的远程图片服务器上的图片地址。如果没有对加载的参数进行限制,就可能造成 SSRF。

图片、文章收藏功能的地址为 //title.magedu.com/as52ps63de 。例如,title 参数是文章的标题地址,它代表了一个文章的地址链接。当请求该地址后,会返回文章是否保存、收藏的返回信息。如果保存、收藏功能采用了此种形式来保存文章,那么在没有限制参数的情况下,可能会存在 SSRF 。

利用参数中的关键字去进行查找,这些关键字例如有:share、wap、url、link。

语言风格需保持原文风格,去掉最前面的序号,将长句拆分成多个小分句,分句越短越好。src 为 source,target 为 u 3g display,sourceURL 为 imageURL 域名等。

2.3 漏洞绕过

部分功能存在漏洞,或者可能引发 SSRF 情况,针对这些功能做了白名单或黑名单处理,以此阻止对内网服务和资源的攻击与访问。所以要实现 SSRF 攻击,就得对请求的参数地址进行相关的绕过处理,常见的绕过方式如下:

当场景为域名时,可以尝试通过使用 http 基本身份认证的方式来绕过。对于@www.xxc.com ,在对@解析域名的过程中,不同的处理函数存在处理上的差异。比如:@www.bbb.com@ ,在 PHP 的 parse_url 中能够被识别,然而 libcurl 则将其识别为其他情况。

场景 2 中,要限制请求的 IP 不为内网地址,也就是限制访问所有内网 IP。可以通过短网址绕过以及短网址转换来实现。还可以使用在线进制转换,将 127 转换为 16 进制是 7f,在系统中表示 16 进制需要加 0x,8 进制则要加 0。这样可以将 127 解析为 127.0.0.1,127.0.0.1 的八进制是 0177.0.0.1。十六进制为 0x7f,接着是 0,再接着是 0,最后是 1;十进制是 2130706433

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

46阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

38阅读

php一句话木马,一句话木马ctf

2026年10月05日

40阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

43阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

41阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

38阅读