SSRF漏洞介绍

SSRF:服务器端请求伪造,是攻击者滥用服务器功能来访问或操作无法被直接访问的信息的方式之一。

危害:

1.可直接访问内网,读取敏感信息和文件。

原理:

访问服务器A资源时对另一台服务器B发起资源访问,但是没有对用户的输入进行处理,导致了可以进行内网的访问。

比如你在A站访问了一张图片资源,但这张图片资源地址在B服务器上。A就会向B发起资源请求。(以上是个人解释,看下比较官方的解释)

服务器端请求伪造(也称为 SSRF)是一种 Web 安全漏洞,允许攻击者诱导服务器端应用程序向非预期位置发出请求。

在典型的 SSRF 攻击中,攻击者可能会导致服务器连接到组织基础设施内的仅供内部使用的服务。在其他情况下,他们可能能够强制服务器连接到任意外部系统,从而可能泄露授权凭据等敏感数据。

举例

考虑一个购物应用程序,它允许用户查看特定商店中是否有商品的库存。为了提供库存信息,应用程序必须查询各种后端 REST API,具体取决于相关产品和商店。该功能是通过前端 HTTP 请求将 URL 传递到相关后端 API 端点来实现的。因此,当用户查看商品的库存状态时,他们的浏览器会发出如下请求:

POST /product/stock HTTP/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 118

stockApi=http://stock.weliketoshop.net:8080/product/stock/check%3FproductId%3D6%26storeId%3D1

这会导致服务器向指定的 URL 发出请求,检索库存状态,并将其返回给用户。

在这种情况下,攻击者可以修改请求以指定服务器本身本地的 URL。例如:

POST /product/stock HTTP/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 118

stockApi=http://localhost/admin

在这里,服务器将获取/adminURL 的内容并将其返回给用户。

当然,现在攻击者可以/admin直接访问该 URL。但管理功能通常只有经过适当身份验证的用户才能访问。因此,直接访问 URL 的攻击者不会看到任何感兴趣的内容。然而,当对 URL 的请求/admin来自本地计算机本身时,正常的访问控制就会被绕过。应用程序授予对管理功能的完全访问权限,因为请求似乎源自受信任的位置。

会出现的地方

  1. 转码服务

  2. 在线翻译

  3. 图片加载与下载(通过URL地址加载或下载图片)

  4. 图片、文章收藏功能

  5. 网站采集、网页抓取的地方。

  6. 头像的地方。(远程加载头像)

  7. 一切要你输入网址的地方和可以输入ip的地方。

  8. 从URL关键字中寻找:sharewapurllinksrcsourcetargetu3gdisplaysourceURlimageURLdomain

攻击方式:

通过各种协议和函数对服务器进行操作。

1.file://

2.gopher

3.dict

函数

file_get_contents()

fsockopen()

curl_exec()

SoapClient

file协议:

文件读取协议主要结合目录遍历。

格式:ile:///文件路径

dict协议

主要用来探测对方机器开放的端口

格式:

dict://host:port