freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

老赵说安全系列:爬取UNICOM FocalPoint数据以及对安全编程的反思
2022-05-10 16:23:33
所属地 浙江省

1 前言

此原创文章以FocalPoint 为例, 介绍如何有效分析数据请求和响应, 并自动爬取数据的方法, 最后从安全防护的角度反思保护我们产品数据的一些思路,供大家参考和讨论。

2 FocalPoint 简介

(摘自https://www.teamblue.unicomsi.com/products/focal-point/)

FocalPoint™是UNICOM开发的一个灵活的、基于web的产品需求管理解决方案,使用户能够根据市场需求和业务目标进行产品和产品组合管理。FocalPoint可以快速启动和运行,并适配用户的工作方法、过程和工作流。用户可以快速确定优先顺序,选择正确的投资,平衡变化和业务需求,并调整资源,以保障在正确的时间交付正确的产品。

作者观点:

从设计和使用的角度,使用FocalPoint管理产品需求非常细致和灵活,用户可以根据自身的需要设计和定义很细粒度的参数, 这些参数为每一个需求提供了各个维度的信息,甚至可以说,信息非常丰富。 这些信息中,可能会包含大量的敏感或机密信息,这对某些黑客来说,可能是很大的诱惑。

和目前流行的Web应用一样,系统后台基于Web服务并且提供大量的JSON接口,强大的功能、灵活、方便的前端数据展示,也为黑客们爬取数据提供了极大的便利。

潜在威胁来自公司内部的攻击者, 或者被外部黑客控制的内部终端。 产品需求信息一旦泄漏,对公司的影响非常巨大。

3 FocalPoint数据爬取

3.1 数据请求分析

使用工具: Chrome/Edge浏览器, 结构化显示JSON数据的浏览器插件Pretty Js/JSON-handle

步骤:

(1)访问Web应用, 右键菜单选择”inspect”打开”开发者工具”界面, 点击刷新。

(2)点击Network->启动Record Network Log->Fetch/XHR

注,某些页面内容可能由web服务直接构造HTML,此时需要使用”All”来查看和分析页面内容,有时候会有意外的惊喜。

(3)查看逐个请求(Request)和响应(Response),对照页面显示的数据,从响应中检索有价值的信息,然后记录请求的URL以及相关参数,初步识别和整理潜在有价值的URL列表。

如上图: URL 为 https://<host>/<uri_root>/toolbar?type=display&dm=normal&feature=TREE响应数据为json格式,且未做任何加密。

(4)进一步对URL和其参数做分析和不断尝试,总结规律,这里以查询URL为例 。https://<host>/<uri_root>/search?q=123&m=XYZ, 尝试如下技巧,然后观察对响应数据的影响。

删除某些参数, 例如删除”q”

修改参数的值,特别使用一些边界值, 例如-1, 0 等等

在页面和响应中搜索url, href等等关键字

经反复测试发现:

search? m=XYZ会返回所有数据

其他URL,当filter=-1时,会返回所有数据

所有URL放在一起比较,发现只需要变换project_id, view_id就可以访问不同的产品数据

每一个需求属性可以通过URL访问, 变换URL中的属性id可以获取到任何属性的值

至此, 请求和响应分析工作准备完毕

3.2 自动化爬取方案

如何自动化爬取到数据? 方案怎样最简单,可靠,有效? 爬虫的方案很多, 我推荐的是选择多种技术结合,发挥各自的优势。

因为FocalPoint安全认证登步骤复杂,需要在多个URL中重定向,如果用Python实现会比较复杂, 因此我选择的方案是python+vbscript

(1)使用vbscript ,创建 WScript.Shell对象->启动浏览器->打开URL-> 等待页面加载完毕->发送快捷键^s打开保存窗口->发送文件路径->发送回车, 利用浏览器自身的保存功能来下载数据。

优点: 实现简单

缺点: 在脚本执行过程中不能点击鼠标和敲击键盘,否则窗口的焦点改变,会导致脚本执行混乱; 每一步耗时的操作需要设置合理的等待时间(WScript。Sleep), 确保数据准确获取

(2)使用python对JSON和文件的强大处理功能来解析数据, 并根据自己的需求对数据进行转换,从而能让这些数据更好的被利用。

(3)对复杂的数据, 需要很多步骤才能够获取,我的方法是使用脚本生成脚本,把 数据获取或数据的处理的代码做成模板(文本), 然后使用python来生成vbscript 或者另外一个python, 然后再运行这些vbscript/python来达到目的,这个方法可以达到事半功倍的效果。

(4)对于某些属性,可以利用vbscript 发送^c复制到剪贴板, 然后从剪贴板里获取数据保存到变量,再写入文件,这样可以避免解析HTML

4 存在的安全问题以及推荐措施

分类

问题

推荐措施

数据

数据明文,极其容易被检索和分析

可使用加密, 加扰,序列化等手段增加解析难度

接口

过多暴露的URL,页面中某些信息其实不需要暴露URL。 过多的不必要、没有价值的功能反而为数据暴露提供了更多的隐患

去掉这些画蛇添足的功能(url, button等等)

大量的GET接口, 使获取数据特别容易

改用POST, 使用动态验证码做为隐藏的属性提交和验证数据请求

某些接口在特殊条件下会返回所有数据,很容易被拖库

禁止一次返回整库数据,限制数据返回的数量,分批按条件返回

URL接口参数固定,且参数值容易被猜测

关键、敏感数据请求的URL应避免做为GET的请求参数,推荐使用POST, 并使用动态表单技术, 变换参数ID,使参数不容易被猜测

对反常高频次,单一获取某些关键参数的请求未做检测和限制, 正常使用行为不会持续只对某一类参数频繁检索

对这些关键参数须考虑反常流量检测,达到阈值后,采取合适的保护策略,比如冻结IP,24小时内禁止再访问同一参数等等

界面


“关于”页面,甚至暴露了使用的web server, oracle, java版本, 黑客更容易检索该版本对应的漏洞和利用方法

减少暴露,去掉用户不必要知道的信息

某些数据权限控制不严谨, 不可见但是可以访问。比如正常情况下,界面中看不到某类数据的菜单,但是使用构造的URL可以访问该类数据

不但要控制到不可见, 还须控制到不可访问

5 总结

如今的产品架构设计,都是模块化、细粒度、微服务……这对产品的开发和扩展非常有利,但需要有度, 每一个提供给终端用户的功能,包括每一个菜单、按钮、链接…… 都需要从安全的角度,从攻击者的角度去衡量,避免过度的信息暴露。

对关键、敏感、高价值的数据和接口, 需要在实现上和其他数据加以区分,使用合理的技术和措施,及时发现和阻断不正常的流量请求, 并提高数据被爬取的难度和成本。

# 黑客 # 数据泄露 # web安全 # 数据安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录