返回介绍

19.3 安全检测思路和流程

发布于 2024-10-11 22:28:35 字数 2374 浏览 0 评论 0 收藏 0

黑盒检测是模拟用户的操作来检测一些常规性和业务性安全等漏洞。因为考虑到效率,黑盒检测一般会涉及信息收集、自动化漏洞扫描、人工介入验证和检测、编写报告几个阶段。使用漏洞扫描工具目的是为了减少对一些常规性漏洞的人工检测,达到事半功倍的效果,弥补人工检测时忽视的检测点,同时让检测人员把更多精力集中在专向安全检测上。

安全检测的思路和流程大致有几步,下面分别介绍。

1.信息收集

信息收集是通过各种方式获取系统相关联的所有信息,主要针对上线系统相关的信息收集,包括目标系统开放端口服务、用户名密码字典、系统开发商、软件架构、历史相关漏洞、搜索引擎检索、源代码泄露、目录结构等,可以通过定制化的自动化脚本进行收集。

信息收集是整个安全检测阶段最重要的部分之一,基本覆盖安全检测各个阶段,包括前期基本的信息收集,IP 端口服务和操作系统类型、系统架构、指纹等。检测期间,操作业务功能和观察系统特征时,可以收集到很多显现的信息或更深层的信息,如系统关键词、第三方插件、供应商、URL 特征、加密算法、技术架构、系统业务功能、系统关联、容易出现安全问题的功能点等。然后需要对所有收集的信息做关联分析,提取出关键信息,做分类处理,分成当前检测可以使用的,后期检测时可能用到的。最后进行总体安全评估,以防有遗漏的检查项。

以下是信息收集的关键点:

·系统技术,如开发语言、中间件、系统框架、第三方组件、版本号。

·公开的远程高危漏洞,如 WebLogic、JBoss、反序列化漏洞。

·供应商信息,如开发架构、历史漏洞、泄露的源代码、其他同行也在使用的类似系统。

·系统业务,调用关系,如开放的功能接口。

·未知的功能接口参数,通过前端 js 文件查找或有规律的接口名和参数构造等。

·系统 PC 端、APP 端、微信端、H5。

·系统特征,如 URL 或文件中。

·开发人员代码习惯,如代码注释,Console 日志。

·源代码泄露,如 GitHub、百度云、QQ 群。

·测试环境在暴露在公网,如开放了其他可直接入侵的服务端口,拿到更多源代码和系统架构。

·用户名、密钥信息。

2.自动化漏洞扫描

通常采用一些自动化漏洞扫描工具,对目标系统进行扫描,可以达到事半功倍的效果,减少常规性漏洞检测的成本。安全检测人员可以把更多精力放在漏洞验证和专向安全检测上,同时可以根据漏洞扫描结果初步判断当前系统安全状况,对扫描结果进行深入的分析和判断,扫描器无法发现的隐藏较深的安全问题进行手工检查和测试,如业务逻辑漏洞检测等。

3.关键功能收集

在使用系统时,可以初步确定出系统的应用类型,如交易类系统、商城类系统、再针对性地梳理出关键功能,如涉及用户资料信息、用户认证、密码找回、用户交互、支付功能、文件上传、文件下载、XML 传输、API 接口、礼品或优惠券、第三方系统交互处、业务逻辑等。在人工介入验证和检测阶段进行专向安全检测。

4.人工介入验证和检测

本阶段主要是用人工方式进行漏洞验证和专向安全检测。当漏洞扫描结束后,某些漏洞需要人工介入验证。专向安全检测一般使用 Burpsuite 结合人工(安全检测清单,Owasp)进行检测。可利用的漏洞出现时,需要更多人工介入。当发现远程代码执行、SQL 注入、XSS 漏洞、XXE 攻击、任意文件下载和读取、弱口令、命令执行、敏感性文件下载漏洞时,可以通过单点突破或组合漏洞利用的方式,扩大安全检测面,发现更多未知的安全漏洞。

5.编写报告

最后是编写安全检测报告,包括安全检测发现的问题,以及漏洞修复建议等。

6.小总结和改进

上面描述的都是常规步骤,更多时候还需要艺术性发散思维,技能性的东西均容易习得,因为它是有边界的。发散思维会让人不仅仅局限于已知的技术层面,而是根据实际场景构造出特殊的检测路径。如果在实施安全检测前,先弄清楚一些关键性的东西,在脑海中勾画出可能会有哪些风险,并划分优先级,一一排查和检测,会取得意想不到的效果。

安全检测中的发散思维点如下:

·实现自动化方式,达到事半功倍的效果。

·梳理可能存在严重安全隐患和敏感信息泄露的功能接口。

·对可能存在漏洞的功能接口梳理,结合已知的漏洞的数据,建立检测威胁模型,可以减少多余不必要的安全检测项,提升效率,减少测试时的焦虑。

·引入日志和流量镜像、埋点等方式,可以对检测中不可达或遗漏的链接进行更深层次的检测。

·引入机器学习,收集所有功能点和参数值,对首次检测到功能点的漏洞进行分析和预测要在其他功能点上进行排查,是否存在类似漏洞,并做针对性的扫描检测。根据功能点的特征,进行人工专向检测,如文件上传、任意文件下、XML 实体注入等。

笔者在实际工作中遇到过,某个参数名第一次发现存在 SQL 盲注,但没有结合其他方式去排查参数名在其他功能上是否也存在漏洞,导致存在的同一漏洞没有及时发现。如果一开始收集到了这个参数名的特征,就不会有遗漏。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文