Portswigger是Burpsuite的官网,也是一个非常好的漏洞训练平台。其Web安全靶场地址为:https://portswigger.net/web-security/
该靶场的训练内容侧重于对Burpsuite各项功能的深入挖掘,这也是《黑客攻防技术宝典Web实战篇》的实战训练平台,配合使用学习效果更佳。
这里仅针对其中的SSRF漏洞靶场,进行一个完整的解读。
SSRF漏洞简介服务器端请求伪造(SSRF)是一种 web 安全漏洞,它允许攻击者诱导服务器端应用程序向攻击者选择的任意域发出 HTTP 请求。
在典型的 SSRF 示例中,攻击者可能会使服务器连接回自己,或者连接到这个组织的其他基于 web 的服务,或者连接到外部的第三方系统。
SSRF 攻击的影响成功的SSRF攻击通常会导致易受攻击的应用程序本身或可以与该应用程序通信的其他后端系统上未经授权的操作或对组织内数据的访问。在某些情况下,SSRF漏洞可能允许攻击者执行任意命令。
常见的SSRF攻击SSRF 攻击经常利用信任关系将来自易受攻击的应用程序的攻击升级并执行未经授权的操作。这些信任关系可能与服务器本身有关,或者与同一组织内的其他后端系统有关。
针对服务器本身的SSRF攻击 漏洞介绍在针对服务器本身的 SSRF 攻击中,攻击者诱导应用程序通过其环回网络接口向托管应用程序的服务器发出 HTTP 请求。这通常包括提供一个带有主机名的 URL,比如127.0.0.1或 localhost。
例如,考虑一个购物应用程序,该应用程序允许用户查看某个商店中是否有存货。为了提供库存信息,应用程序必须根据所涉及的产品和商店查询各种后端REST API。该功能是通过将URL通过前端HTTP请求传递到相关的后端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
在这里,服务器将获取/admin的内容并将其返回给用户。
当然,现在攻击者可以直接访问/admin。但是管理功能通常只有适当的经过身份验证的用户才能访问。因此,直接访问URL的攻击者不会看到任何感兴趣的内容。但是,当对/admin URL 的请求来自本地计算机本身时,将绕过正常的访问控制。该应用程序授予对管理功能的完全访问权限,因为该请求似乎来自受信任的位置。
Lab: Basic SSRF against the local server地址:https://portswigger.net/web-security/ssrf/lab-basic-ssrf-against-localhost
靶场介绍:
这个靶场有一个库存检查功能,可以从内部系统中获取数据。
要通关此靶场,请更改库存检查的URL以访问管理界面并删除用户carlos。
靶场通关:
点击Access the lab进入靶场。
点击Check stock抓包
修改stockApi的内容为:
再点击删除carlos用户,抓包,得到删除目标用户的URL:
?username=carlos
将stockApi参数修改为此URL即可
漏洞原因
为什么应用程序以这种方式运行,并且隐式信任来自本地机器的请求?出现这种情况的原因有很多:
(1) 访问控制检查可能在应用程序服务器前面的不同组件中实现。当连接返回到服务器本身时,就会绕过检查。
(2) 出于灾难恢复的目的,应用程序可能允许来自本地计算机的任何用户在不登录的情况下进行管理访问。这为管理员在丢失凭据时恢复系统提供了一种方法。这里的假设是,只有完全受信任的用户才会直接来自服务器本身
(3) 管理接口可能监听的端口号与主应用程序不同,因此用户可能无法直接访问。
这种信任关系(来自本地机器的请求与普通请求的处理方式不同)常常使SSRF成为一个严重的漏洞。
SSRF 对其他后端系统的攻击 漏洞介绍