前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WEB安全新玩法 [7] 加密不安全下载路径

WEB安全新玩法 [7] 加密不安全下载路径

原创
作者头像
天存信息
修改2021-07-01 18:12:14
4840
修改2021-07-01 18:12:14
举报

提供下载功能的网站,其下载资源的链接是任何用户都能获取的。如若设计不当,攻击者通过分析链接的文本,能够构造出意外但有效的链接,访问网站功能之外的资源,从而窃取主机上的敏感信息。


以下就是这样一个例子:网站将下载资源的文件路径作为参数传入,但没有对这个参数进行检查,于是攻击者可以构造多级父路径来尝试获取操作系统的配置文件。使用 iFlow 业务安全加固平台能够加密 URL 中的关键部分,使得攻击者的这种构造行为无从进行。

一、原始网站

1.1 正常用户访问

用户点击进入下载页面,点击选择其中一名球星,网站弹出下载框,用户点击确定后图片下载成功。

图1
图1

HTTP 交互过程如下:

表1
表1

1.2 攻击者访问

同样地,攻击者点击进入下载页面,点击选择其中一名球星,网站弹出下载框,攻击者点击确定后图片下载成功。

图2
图2

以火狐浏览器为例,攻击者单击工具栏中的下载按钮,可查看下载的图片,并复制下载链接。

图3
图3

攻击者在新的标签中嵌入拷贝下来的下载链接,将 kb.png 作如下修改—— ../../../../../../../../Windows/System32/drivers/etc/hosts 回车后即可看到敏感文件下载框。

图4
图4

攻击者点击确定后,就取得了 Windows 系统的敏感文件: /Windows/System32/drivers/etc/hosts

HTTP 交互过程如下:

表2
表2

二、iFlow虚拟补丁后的网站

我们在 Web 服务器前部署 iFlow 业务安全加固平台,它有能力拦截、计算和修改双向 HTTP 报文并具备存储能力,成为 Web 应用的虚拟补丁。在本例中,iFlow 将下载页面中的下载链接加密,使得攻击者无从构造 URL。

2.1 正常用户访问

用户访问下载页面时,Web 服务器原始页面上的下载链接是明文的,iFlow 将它们全部加密后发给用户;用户点击其中一项后,浏览器发出密文链接的请求,iFlow 将密文链接解密为明文,再向 Web 服务器端发出请求。

图5
图5

正常用户的 HTTP 交互流程如下:

表3
表3

2.2 攻击者访问

攻击者得到如下的下载链接:

代码语言:txt
复制
<a href="/vul/dl/WTJSdmQyNXNiMkZrTG5Cb2NEOW1hV3hsYm1GdFpUMQ==">

显然,攻击者无法通过分析这段文本来构造攻击请求。

2.3 代码

iFlow 内置的 W2 语言是一种专门用于实现 Web 应用安全加固的类编程语言。它介于配置和通用语言之间,具备编程的基本要素和针对 HTTP 协议的特有扩展,能为业务系统编写涉及复杂判断和动态修改的逻辑。

考虑到安全产品的使用者通常为非程序员,他们习惯面对配置文件而非一段代码。因此,W2 语言虽包含语言要素,仍以规则文件方式呈现,并采用可以体现层次结构和方便词法校验的 JSON 格式。

用 W2 语言实现上述虚拟补丁的代码如下:

代码语言:txt
复制
[
	{
        "if": true,
        "then": "TX.key='kj2Hdsol'"
    },
    {
		"if": [
			"streq(REQUEST_FILENAME, '/vul/dl/down_nba.php')",
			"REQUEST_METHOD == 'GET'"
		],
		"then": {
			"directive": "alterResponseBody",
			"op": "regex",
			"target": "execdownload.*png",
			"target_transform": ["rc5_enc(TX.key)", "btoa"],
			"substitute": "$0"
		}
    },
	{
		"if": "begin(REQUEST_FILENAME, '/vul/dl/')",
		"then": [
            "TX.part = rc5_dec(atob(REQUEST_FILENAME[8:]), TX.key)",
            {
                "if": "begin(TX.part, 'execdownload.php?filename=')",
                "then": {
                    "directive": "alterRequestLine",
                    "op": "url",
                    "value": "/vul/dl/${TX.part}"
                }
            }
        ]
    }
]

示例代码中有三条规则,分别作用如下:

第一条规则

定义了一个加密/解密用的密钥字符串,这个可以自行修改。

第二条规则

当服务器返回下载页面时,iFlow 截获此响应。iFlow 用正则表达式匹配出页面中的每一个下载链接,将其内容替换为用 RC5 加密后再进行 Base64 编码的结果。

第三条规则

当浏览器请求图片时,iFlow 截获此请求。iFlow 用 Base64 解码并用 RC5 解密请求 URL 中的密文部分。如果解密后的结果是明文符合原始下载链接的格式,则将这个明文作为 URL 发给后端 Web 服务器。

注意:上述密码算法和密钥完全是在服务器端的 iFlow 中实现和运算的,攻击者在客户端是看不到算法和密钥的。

三、总结

iFlow 在不改动后端程序的情形下,防范攻击者通过分析和构造链接来下载系统敏感文件。值得说明的是,规则中的所有计算均在服务器端实现,浏览器端不执行任何代码,攻击者无法通过代码分析来破解。(张戈 | 天存信息)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、原始网站
    • 1.1 正常用户访问
      • 1.2 攻击者访问
      • 二、iFlow虚拟补丁后的网站
        • 2.1 正常用户访问
          • 2.2 攻击者访问
            • 2.3 代码
            • 三、总结
            相关产品与服务
            Web 应用防火墙
            腾讯云 Web 应用防火墙(Web Application Firewall,WAF)帮助腾讯云内及云外用户应对 Web 攻击、入侵、漏洞利用、挂马、篡改、后门、爬虫等网站及 Web 业务安全防护问题。企业通过部署腾讯云 WAF 服务,将 Web 攻击威胁压力转移到腾讯云 WAF 防护集群节点,分钟级获取腾讯 Web 业务防护能力,为网站及 Web 业务安全运营保驾护航。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档