郑州专业网站优化,网站备案起名要求,中国行业客户资源网,网站建设制作fash尽人事以听天命
1.Server-Side Request Forgery服务器端请求伪造学习
SSRF#xff08;服务器端请求伪造#xff09;攻击的详细解析与防范
SSRF#xff08;Server-Side Request Forgery#xff0c;服务器端请求伪造#xff09; 是一种安全漏洞#xff0c;它允许攻击者通…尽人事以听天命
1.Server-Side Request Forgery服务器端请求伪造学习
SSRF服务器端请求伪造攻击的详细解析与防范
SSRFServer-Side Request Forgery服务器端请求伪造 是一种安全漏洞它允许攻击者通过伪造服务器端的请求从服务器发起对攻击者指定的目标地址的请求。这种攻击通常利用了服务端向外部或内部网络发起请求的功能但服务器没有对请求目标进行有效的验证与过滤从而使攻击者能够利用这一漏洞访问内部网络或发起恶意请求。
SSRF的攻击流程
攻击者利用服务器可以发起网络请求的能力向其传递恶意的目标地址URL。服务器处理该请求后实际上是在未经过适当验证的情况下向外部或内部系统发起了请求攻击者可能通过此请求获取敏感信息或执行恶意操作。数据流的简化模型如下
攻击者 ----- 服务器 ----- 目标地址攻击者通过输入一个恶意 URL 或目标地址服务器会根据该地址执行请求结果将返回给攻击者。这种攻击手段不仅限于外部攻击也可能是针对内部服务和私有网络的攻击。
SSRF攻击的常见场景 内网穿透攻击者利用 SSFR 漏洞向内部网络的地址发起请求访问服务器不应访问的资源。例如内部数据库、管理接口、云服务元数据接口等。 信息泄露通过 SSFR攻击者可能会从目标服务获取敏感信息比如内部文件、服务器状态信息、API 密钥、私有数据等。 拒绝服务DoS攻击攻击者可以通过伪造大量请求导致目标服务器的资源消耗殆尽进而导致服务不可用。 跨站请求伪造CSRF某些情况下攻击者可以伪造请求来执行某些敏感操作甚至修改服务端数据库、配置等。 执行远程代码通过伪造请求攻击者可能利用远程文件包含等漏洞执行恶意代码。
PHP中导致 SSRF 漏洞的函数
在 PHP 中一些常见的函数如果使用不当可能会导致 SSRF 漏洞。以下是几种常见的漏洞来源 file_get_contents()此函数用于从指定的文件或 URL 中读取内容。如果攻击者能够控制传入的 URL且没有进行足够的过滤与校验可能会导致服务器向任意外部或内部目标发起请求。 $data file_get_contents($url); // 攻击者可以控制 $url如果 $url 是攻击者传入的值攻击者可以通过构造恶意的 URL迫使服务器向内部敏感资源发起请求或者访问外部恶意网站。 fsockopen()此函数用于打开一个网络连接TCP/UDP。如果攻击者能够控制传入的目标地址则可以通过该函数向任意地址发起请求。 $fp fsockopen($host, $port); // 攻击者可以控制 $host 和 $port类似于 file_get_contents()如果没有严格的目标验证攻击者可以利用该函数绕过访问控制从而获取或修改系统资源。 curl_exec()curl_exec() 是 PHP 中用于发起 HTTP 请求的常用函数。攻击者如果能控制请求的 URL便能够通过该函数对任意服务器发起请求。 $ch curl_init($url); // 攻击者可以控制 $url
$response curl_exec($ch);攻击者可以通过伪造 URL使得 PHP 服务器访问内部资源甚至执行跨站请求。
SSRF漏洞的影响 泄露敏感信息如果攻击者能够访问到服务器内部的敏感服务如数据库、私有 API 或元数据接口那么他们可以获取敏感的凭证信息、配置或用户数据。 内网攻击攻击者利用服务器发起请求到内部网络访问那些直接无法访问的内网资源。比如通过发起请求到 http://127.0.0.1:8080 或其他本地地址攻击者可以发现内部未暴露的服务。 绕过认证与访问控制有些系统可能会在外部请求和内部请求上进行不同的权限控制。通过伪造请求攻击者可能能够绕过这些限制访问本不应访问的资源。 服务拒绝DoS攻击者可以通过不断发起恶意请求导致目标服务的负载过高进而导致系统崩溃或拒绝服务。
如何防范SSRF 严格验证和过滤 URL最有效的防御措施是对传入的 URL 进行严格的验证确保只允许特定的、受信任的地址进行请求。可以使用白名单机制只允许已知的合法地址。 正则过滤检查目标地址是否为合法的域名格式、是否符合预期的协议如 HTTP、HTTPS等。限制协议禁止请求本地回环地址如 127.0.0.1localhost或保留地址范围如 169.254.x.x10.x.x.x。限制端口范围禁止访问特定的端口例如只允许访问 80 和 443 端口禁止访问 22 端口等。 采用 DNS 解析与 IP 地址校验在服务器进行外部请求之前进行 DNS 解析并确保解析结果符合预期。避免通过 IP 地址直接访问可能绕过 DNS 检查的攻击。 使用安全的 HTTP 客户端避免使用 file_get_contents()、fsockopen() 等函数发起请求改用更安全的 HTTP 客户端库如 Guzzle 或 Symfony HTTP Client并确保它们内置了安全检查和防护机制。 访问控制和最小权限原则对于需要与外部通信的服务应严格控制访问权限尽量将与外部通信的服务限制在最小范围内。 检测与日志监控通过监控服务器发起的请求及时发现是否存在异常的请求行为特别是来自不受信任来源的请求。 防止内网穿透如果服务器部署在云环境中可以限制请求只能访问特定的资源避免对内部网络的请求。
总结
SSRF 是一种非常危险的攻击方式攻击者利用服务器的外部请求能力发起恶意请求可能导致数据泄露、内网穿透、拒绝服务等严重后果。为了防范 SSRF开发者需要对传入的目标地址进行严格的验证和过滤避免任意 URL 的请求执行确保服务器的请求行为符合预期且不会受到外部或恶意攻击的干扰。
2.Server-Side Request Forgery服务器端请求伪造实战
首先点击页面中的链接观察url 直接将url地址修改为百度
/vul/ssrf/ssrf_curl.php?urlhttps://www.baidu.com
这个页面是由服务器发送curl请求返回的页面
请求网页成功访问 文笔生疏措辞浅薄望各位大佬不吝赐教万分感谢。
免责声明由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失均由使用者本人负责 文章作者不为此承担任何责任。
转载声明儒道易行 拥有对此文章的修改和解释权如欲转载或传播此文章必须保证此文章的完整性包括版权声明等全部内容。未经作者允许不得任意修改或者增减此文章的内容不得以任何方式将其用于商业目的。
CSDN:
https://rdyx0.blog.csdn.net/公众号儒道易行
https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5NTU2NjA1Mwactiongetalbumalbum_id1696286248027357190scene173from_msgid2247485408from_itemidx1count3nolastread1#wechat_redirect博客:
https://rdyx0.github.io/先知社区
https://xz.aliyun.com/u/37846SecIN:
https://www.sec-in.com/author/3097FreeBuf
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85