【发布时间】:2023-03-19 09:36:01
【问题描述】:
从 HTTP 消息中提取参数并获取资源 URL 可能容易受到可能改变预期资源语义的注入攻击。这里涉及两类攻击:HTTP 参数/路径污染 (HPPP) 和服务器端请求伪造 (SSRF)。请记住,我们的攻击者可以完全控制 HTTP 请求或 HTTP 响应。
在 HPPP(HTTP 参数/路径污染攻击)中,参数用于组成资源 URL,用于为资源准备 REST 请求(或生成嵌入式链接)。问题是攻击者可能会更改路径或在“查询字符串”中添加/覆盖意外参数。此外,REST 框架可以使用参数(如 _method)来允许指定不同于传入 HTTP 方法的 REST 动词,因此 GET 请求可以被解释为 PUT 操作。攻击者可能会更改 REST 资源 URL 的语义。
查找更多信息here
示例:
例如:如果测试查询字符串中的 search_string 参数,请求 URL 将包含该参数名称和值。
http://example.com/?search_string=kittens
特定参数可能隐藏在其他几个参数中,但方法是相同的;保留其他参数并附加副本。
http://example.com/?mode=guest&search_string=kittens&num_results=100
将相同的参数附加不同的值
http://example.com/?mode=guest&search_string=kittens&num_results=100&search_string=puppies
并提交新请求。
问题:
Spring Rest、Spring MVC 和 Spring Security 不提供任何内置支持来修复 HPPP 问题。我们如何修复 Spring 框架内部?
【问题讨论】:
-
你能提供例子吗?
-
我以前从未听说过路径污染攻击。你有参考吗?应该在 servlet 容器级别自动避免参数污染,但您仍然明智地测试应用程序中消耗(部分)查询字符串的区域
-
@AndyWilkinson 虽然我认为这已经很老了,但您现在已经听说过,这里有一个参考:owasp.org/index.php/… 基于此,Tomcat 返回第一个匹配项。当它总是那样做时,我看不到利用它的方法。
标签: spring rest spring-boot spring-security