问题标签 [ssrf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
406 浏览

node.js - 如何检查 URL 是否是公开的(反 SSRF)?

我在网站上有一个表单,允许用户输入 URL - node.js 应用程序将使用request模块来获取该 URL,分析响应,并将一些数据打印回用户。

我想确保流氓用户无法输入内网地址,例如 127.0.0.1、localhost、192.168.0.1 等,因为这似乎存在潜在的安全风险。是否可以不查询主机的 IP 两次(首先使用dns.lookup,然后使用request module)?

0 投票
1 回答
706 浏览

python - 服务器端 urllib2.urlopen 与用户 url 的安全注意事项

我希望用户能够通过提供 URL 从网络上传图像。由于可能存在 CORS 问题和防止热链接,我认为我无法让客户端获取图像并上传它,所以我让服务器来做这件事。

最大的担忧是用户简单地输入file:///home/user/secret_image.jpg。这个 URL 被发送到服务器,django 愉快地获取它,一个本地服务器端文件,托管它供全世界查看。有没有办法限制对外部资源的请求?如何使这种方法安全(至少-ish)?

其他一些问题可能是用户提供解析为本地地址的主机名或提供重定向到本地地址的公共 URL。甚至 LAN 上通常无法访问的其他设备。

过滤 URL 文本不是一种选择。在允许 urllib 继续之前,我也许可以检查 IP 是否被路由到网关并且目的地在我的子网之外。我可以阻止任何重定向,但在某些情况下这可能是一个有用的功能,因此我可以编写一个重定向处理程序来重新检查 IP。现在这开始感觉像是一个补丁工作,而不是一个很好的健壮的照顾所有情况的解决方案。

我也在做一些基本read(max_size)的事情,比如如果文件很大,使用 python-magic 检查 mimetype 并选择扩展名,使用django-ratelimit并设置调用超时urlopen()

编辑:相关答案

0 投票
1 回答
3261 浏览

php - 如何通过路径信息在 PHP 中传递 URL 来防止 SSRF?

在使用 Acunetix 扫描我们的代码以查找漏洞后,我们遇到了以下脚本的问题:

“针对域 hit0yPI7kOCzl.bxss.me 发起了一个 HTTP 请求,这表明该脚本容易受到 SSRF(服务器端请求伪造)的攻击。”

我怎样才能防止这种情况?

0 投票
1 回答
1376 浏览

java - 如何检查 HttpServletRequest 的 request.getQueryString() 方法是否容易受到 SSRF 攻击?

在我当前位于 Spring MVC 中的应用程序中,我们为网关模块提供了如下代码。

网关模块将使用工作正常的AsyncRestTemplate调用同一服务器上的另一个应用程序。

但是像chekmarx这样的工具表明,代码request.getString()很容易受到SSRF(服务器端请求伪造)攻击,因为攻击者可以通过在请求中发送 URL 或其他数据来控制请求的目标。

那么有什么方法可以检查request.getString()在 java 中是否容易受到 SSRF 攻击?

0 投票
1 回答
5729 浏览

java - 字符串输入参数的 SSRF CheckMarx 漏洞

我正在为我的一个项目运行 CheckMarx 扫描,它带有一个方法的输入字符串参数之一的 SSRF 漏洞。我的方法如下所示,并且为参数param1引发了 SSRF 漏洞。

在该方法中,我使用 HttpClient GetMethod 调用第 3 方 URL,其中 param1 作为查询字符串参数传递。

CheckMarx 的 SSRF 是:

在第 55 行,我有

在第 87 行,我有

感谢您对解决此 SSRF 漏洞的任何帮助。谢谢你。

0 投票
0 回答
276 浏览

shell - 使用 SSRF 获取 shell?

我正在学习渗透测试,我遇到有人说可以使用 SSRF 在服务器上获取 shell,尽管我无法在任何地方找到这是如何完成的。希望你们能帮助我。干杯

0 投票
0 回答
255 浏览

java - Java 检测 SSRF:如何检测 0177.1

如果主机是 localhost,我想通过验证来检测 SSRF。但我无法将地址“0177.1”检测为本地主机。

我试过这段代码来检测主机是否是本地主机。

我已经尝试了很多地址,它检测到除了“0177.1”之外的所有地址。

0 投票
0 回答
721 浏览

java - 从 HttpServletRequest 对象获取 cookie 的最佳方法是什么?

我有一个返回 cookie 值的方法,从自动连接的HttpServletRequest对象中获取 cookie。我正在添加相同的 cookie 来调用另一个服务restClient。一切正常,但是当我运行 Fortify 扫描时,它给出了一个request.getCookies()可能导致服务器端请求伪造的高优先级问题。在这种情况下该怎么办?

我已经尝试通过这样做来验证 cookie 字符串

但它没有用。

代码如下:

所以 fortify 将这一行突出显示"Cookie[] cookies = request.getCookies();"为服务器端请求伪造

0 投票
2 回答
5491 浏览

asp.net - 无法在 ASP.NET 中纠正 VeraCode CWE ID 918 - (SSRF)

长话短说,无论我尝试什么,VeraCode 都会继续将我的 8 行代码标记为 CWE 918 的缺陷。这是旧代码,所以我不确定为什么它会突然被标记。

这是一个带有粗体标记行的示例 [违规] 方法

这是我提出的使用扩展方法来验证 URL 的修复

这是带有 VeraCode 属性的扩展方法

我可以让 VeraCode 根据属性自动缓解,但我们的客户将执行他们自己的扫描,当然不会启用该设置。

任何关于我如何解决这个问题的想法都将不胜感激。

0 投票
0 回答
1656 浏览

c# - 如何防止 .Net 中的 SSRF

我有一个 Web 表单应用程序以及一个托管在不同服务器中的 Web Api 应用程序。对于所有 CRUD 操作,Web 表单应用程序都使用 API。为了从 Web 表单应用程序调用 API,我使用 WebRequest 类创建了一个通用 API 请求方法。一切正常,但是当我们使用 Veracode 扫描代码时,我遇到了 SSRF 服务器端请求伪造问题。我用谷歌搜索,有些人说要向请求 uri 添加验证,我尝试了所有验证,但 Veracode 仍然抛出错误。请帮助我。