将stockApi参数中的URL更改为%2561dmin/delete?username=carlos 即可删除carlos用户
SSRF攻击之绕过基于白名单的输入过滤器 漏洞介绍
一些应用程序只允许匹配以允许值的白名单开头或包含这些值的输入。在这种情况下,有时可以通过利用URL解析中的不一致性来绕过过滤。
URL 规范包含了许多在实现 URL 特定解析和验证时容易被忽略的特性:
(1) 您可以使用@字符在主机名之前的URL中嵌入凭据。例如:
https://expected-host@evil-host
(2) 您可以使用#字符来指示URL片段。例如:
(3) 您可以利用DNS命名层次结构将所需的输入放入您控制的标准DNS名称中。例如:
https://expected-host.evil-host
(4) 您可以通过url编码字符来混淆url解析代码。如果实现过滤器的代码处理url编码字符的方式与处理后端HTTP请求的代码不同,那么这一点特别有用
Lab: SSRF with whitelist-based input filter地址:https://portswigger.net/web-security/ssrf/lab-ssrf-with-whitelist-filter
靶场介绍:
这个靶场有一个库存检查功能,可以从内部系统中获取数据。
要通关此靶场,请更改库存检查的URL以访问管理界面并删除用户carlos
开发人员已部署了需要绕过的反SSRF防御。
靶场通关:
点击Access the lab进入靶场
点击Check stock抓包,发送到Repeater
将stockApi参数中的URL更改为 ,发现请求被阻止,告诉我们主机名必须是stock.weliketoshop.net
使用@字符可以绕过
添加#,之后请求又被阻止,告诉我们主机名必须是stock.weliketoshop.net
将#进行两次url编码,可以绕过
:80%2523@stock.weliketoshop.net
最后,访问
:80%2523@stock.weliketoshop.net/admin/delete?username=carlos
即可删除目标用户
通过开放重定向绕过 SSRF 过滤器 漏洞介绍
通过利用开放重定向漏洞,有时可以绕过任何类型的基于过滤器的防御。在前面的 SSRF 示例中,假设用户提交的 URL 经过严格验证,以防止恶意利用 SSRF 行为。但是,允许 url 的应用程序包含一个开放重定向漏洞。如果用于生成后端HTTP请求的API支持重定向,您可以构造一个满足筛选器的URL,并将重定向请求导向所需的后端目标。
例如,假设应用程序包含一个开放重定向漏洞,其URL如下:
/product/nextProduct?currentProductId=6&path=http://evil-user.net
返回重定向到:
你可以利用开放重定向漏洞绕过 URL 过滤器,利用 SSRF 漏洞如下:
POST /product/stock HTTP/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 118
stockApi=http://weliketoshop.net/product/nextProduct?currentProductId=6&path=http://192.168.0.68/admin
这个 SSRF 漏洞之所以有效,是因为应用程序首先验证所提供的 stockAPI URL 是否位于允许的域上(事实上它是)。然后,应用程序请求提供的 URL,这将触发打开的重定向。它遵循重定向,并向攻击者选择的内部 URL 发出请求。
Lab: SSRF with filter bypass via open redirection vulnerability地址:https://portswigger.net/web-security/ssrf/lab-ssrf-filter-bypass-via-open-redirection
靶场介绍:
这个靶场有一个库存检查功能,可以从内部系统中获取数据。
要通关此靶场,请更改库存检查的URL以访问管理界面:8080/admin 并删除用户carlos
库存检查器被限制为只能访问本地应用程序,因此您需要首先找到一个影响该应用程序的开放重定向。
靶场通关:
点击Access the lab进入靶场
点击Check stock抓包,发送到Repeater