SDL项目实战—渗透测试【含代码审计】

本文讲述了在SDL安全审计过程中发现的HDFS任意文件下载漏洞。通过抓包和代码审计,揭示了文件管理功能存在的安全隐患,包括未对path、filename参数做校验,允许遍历根目录。修复建议包括限制参数路径,过滤回溯符,并加强文件权限控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

公司内部SDL安全审计阶段,大致浏览系统迭代系统的功能点。发现迭代版本新增文件管理功能,包括文件获取、复制、下载、上传,脑海飘过五个大字: TND有漏洞啊 !
在这里插入图片描述

渗透流程

1. 文件下载处抓包
在这里插入图片描述
从该包可以看出,该服务使用 hdfs分布式文件系统,默认包含三个参数(path、fileName、workspaceUuid)。前端提供文件下载功能,尝试修改path、fileName参数,报错文件不存在。
思考:既然能报文件不存在,大概率存在任意文件下载漏洞?
hdfs分布式文件系统介绍:https://baike.baidu.com/item/hdfs/4836121?fr=aladdin

2. 漏洞挖掘思路
考虑使用回溯符…/…/ 是否可以读取/etc/passwd
未成功,响应包报错!!!
如果想验证漏洞存在,就要知道hdfs服务器上有什么文件或者配置文件…
抓包测试后,发现开发把path路径写死:hdfs://ns1

3. 获取hdfs服务器目录
天无绝人之路:http history中发现另一个功能——数据获取(list)。
在这里插入图片描述
经测试,后端代码仍未对path做校验,使用回溯符(…/…/)成功遍历根目录所有文件、获取所有文件名。
在这里插入图片描述

4. 漏洞利用
使用获取的文件名,利用download功能,实现任意文件下载
在这里插入图片描述

代码审计

确定漏洞存在,找开发同学要源代码,定位后端代码问题。

文件获取代码:
在这里插入图片描述
文件下载代码:
在这里插入图片描述下一步传到 getNewPath,转到定义,仍未做任何校验。

总结&漏洞整改

公司落地执行SDL安全开发生命周期,在应用需求、设计、开发、测试以及上线等阶段提前发现安全问题,目的是为了规避应用上线后再发现安全问题,此时漏洞整改成本较大。

整改建议:

1. 后端对path、filename等参数做限制,指定白名单路径
2. 对传入的文件名参数进行过滤,并且判断是否是允许获取的文件类型,过滤回溯符 ../../
3. 做好文件权限访问控制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值