软件开发团队的护网低成本应对方案

news/2024/12/2 14:51:49/
主题:
1、攻击方技术手段说明,结合攻击队手段重点关注的防御点介绍;
2、防守方(软件开发团队)的低成本应对思路;

系统是如何被攻破的

攻防演练(APT)攻击路径

未知攻,焉知防,安全实质是一种攻防对抗。我们对于攻击路径的了解深度,决定着我们系统的安全强度。

在这里插入图片描述

在外网攻防对抗中,我们需要重点关注的是“目标网情搜集”与“外网纵向突破”,下面我们针对这两点分别进行说明;

目标网情搜集

目标网情搜集的过程,攻击者会尽可能多的挖掘目标对外暴露的资产,并分析较为脆弱的系统和资产,从众多资产中挑选相对较软的“软柿子”。

渗透测试的本质在是信息搜集。目标资产信息搜集的完成程度,决定渗透过程的复杂程度;

网情搜集过程多以工具化手段为主,人工确认为辅,采用渐进式收集;由域名到子域,由子域到IP,有IP到端口,由端口识别对应服务,由服务再去收集对应源码或找对应攻击脚本,最后对服务进行弱点扫描。整个过程旨在不放过每一个潜在的利用点,以方便下一阶段进行利用;

对于较为难搞的系统,通常也会采用旁路攻击的手段,如通过攻击其他系统,钓鱼,鱼叉等手段进行迂回。

可以看到这个阶段主要是以“细致”为主,对于外部暴露或者是能访问到的内容进行地毯式搜集,以期发现弱点。此阶段对于产品或SaaS类型系统相对容易应对。因为资产范围与部署方式比较容易控制;对于以项目为主的系统,由于部署细节的多样化所以防守起来相对比较麻烦,我们大致可以大概有以下几个点;

1、对于存在风险的安全配置,出厂是应调整为默认安全的状态;

如actuator端点暴露,中间件管理后台对外暴露;

2、应用启动时可以对自身运行环境的风险进行检查,对于危险配置给出提示或无法启动应用;

如是否使用特权用户连接了数据库,是否使用特权账号启动了应用;

3、明确服务或端口的对外暴露原则,形成文档、checklist或直接对目标进行测试;

如nginx反向代理了不应该配置的危险服务、docker中将后台服务端口对外暴露;

4、现场尽量部署waf,提升信息搜集难度;

`有条件的直接上商用,无条件的开源waf也很香,如长亭科技的雷池waf社区版
https://github.com/chaitin/safeline/blob/main/README_CN.md
https://mp.weixin.qq.com/s/FUbYRl7sxaY_oTp0O0h8gg

外网纵向突破

外网纵向突破阶段可以理解为漏洞利用的过程,受限于护网的时效性,护网中采用的技术手段会有别与传统的apt攻击。
区别在于护网中一般会打一些短平快的0click漏洞,这些漏洞无需用户交互,可以直接获取到系统的数据或者权限。对于一些需要用户交互的1click漏洞一般是在没有办法突破的情况下采用的攻击手段。清晰了0click与1click的利用优先级,我们的防守优先级也就有了明确的优先级指导。那就是先修0click问题,有余力可以考虑修复1click问题。经过梳理0click漏洞有;
1、失效的访问控制(OWASP 2021 A01)

````具体体现:系统或中间件的未授权,越权等;```

2、注入(OWASP 2021 A03)

具体体现:SQL注入,XXE注入等

3、安全配置错误(OWASP 2021 A05)

````具体体现:使用特权账户启动系统,使用特权账户连接数据库,使用默认账号密码连接组件等```

4、自带缺陷和过失组件(OWASP 2021 A06)

具体体现:这里比较多,如Shiro权限绕过,Tomcat代码执行等

5、服务端请求伪造(OWASP 2021 A10)

具体体现:使用ssrf读取内部文件,利用ssrf探测域攻击内网

6、不安全的反序列化(OWASP 2017 A08)

````具体体现:fastjson,xstream等```

7、远程代码执行RCE

具体体现:利用如fastjson类组件完成远程代码执行

8、文件类操作

具体体现:任意文件读取,文件执行等

防守方应对策略思路介绍

抓大放小,聚焦0click问题

1、在控制成本与关注核心效果的情况下主要对于0click漏洞进行重点测试加固,对于1click漏洞可以酌情开展;

根据漏洞类型采用最合适的测试手段

测试策略

根据漏洞成因,从成本和效果发出,选择成本较低,且保障效果较好的手段对漏洞进行测试与加固

测试方式

建议采用源代码主导的(混合)渗透测试逐渐替代传统的渗透测试(手动+自动扫描的方式)
过程中会采用的测试手段,自动化代码审核扫描,人工代码审查,人工渗透测试

自动化代码审查工具使用:SemGrep,CodeQL,Fortify_SCA。
扫描工具的选择关注两点(其他不影响结果不做考虑);
1、污点识别能力,污点识别能力决定着测试的漏报情况
2、污点最终能力,污点追踪能力决定着测试的误报情况
综合来看
1、SemGrep:漏报少,误报多,因为是纯静态的污点识别,几乎无污点最终能力;
2、CodeQL:漏报多,误报少,因为基于ast分析,所以误报少,但是其污点识别的规则较为有限,需要长期的积累完善,较为适合扫描有限几个漏洞,且有专人维护的场景;
3、Fortify_SCA:漏报适中,误报适中,因为是商业化工具,整体来讲比较均衡,适合不想折腾又有自动化代码扫描的需求;
不同漏洞的针对性验证方式

失效的访问控制(OWASP 2021 A01)
手段:人工代码审计为主,渗透测试为辅

原因:失效的访问控制会出现在流量链路的各个环节,所以需要人工的去分析梳理,如分析,nginx反向代理是否有问题,网关黑白名单过滤规则是否有问题,鉴权规则是否有问题等

注入(OWASP 2021 A03)
手段:自动化代码审计为主,人工排除误报情况

原因:SQL注入的污点特征十分明显,所以比较适合用工具扫,扫完后又人工来去除误报

安全配置错误(OWASP 2021 A05)
手段:人工代码审计,默认配置审计,文档审计

````原因:安全配置可能出现在源码阶段与实施阶段,所以此处选择使用源码审计与文档审计双重保障方式来规避问题漏出```

自带缺陷和过失组件(OWASP 2021 A06)+不安全的反序列化(OWASP 2017 A08)
手段:OSV-Scanner,人工代码审计

原因:安全配置可能出现在源码阶段与实施阶段,所以此处选择使用源码审计与文档审计双重保障方式来规避问题漏出

远程代码执行RCE
手段:自动化代码审计为主,人工排除误报情况

原因:代码执行的污点特征十分明显,所以比较适合用工具扫,扫完后又人工来去除误报

文件类操作
手段:自动化代码审计为主,人工排除误报情况

原因:文件类操作污点特征十分明显,所以比较适合用工具扫,扫完后又人工来去除误报

服务端请求伪造(OWASP 2021 A10)
手段:自动化代码审计为主,人工排除误报情况

原因:代码执行的污点特征十分明显,所以比较适合用工具扫,扫完后又人工来去除误报


http://www.ppmy.cn/news/56100.html

相关文章

关于Prompt Engineering你该了解啥?OpenAI应用研究负责人帮你梳理了

‍来源 | 机器之心 微信号:almosthuman2014 随着 ChatGPT、GPT-4 等模型的兴起,人们对如何创建提示以获得想要的输出越来越感兴趣。研究者对特定提示的响应可能很难预测,并且会因模型的不同而不同。本文来自 OpenAI 的翁丽莲(Lili…

Go官方指南(五)并发

Go 程 Go 程(goroutine)是由 Go 运行时管理的轻量级线程。 go f(x, y, z) 会启动一个新的 Go 程并执行 f(x, y, z) f, x, y 和 z 的求值发生在当前的 Go 程中,而 f 的执行发生在新的 Go 程中。 Go 程在相同的地址空间中运行&#xff0c…

一文看懂数据分析必备计算功能—内存计算

各位数据的朋友,大家好,我是老周道数据,和你一起,用常人思维数据分析,通过数据讲故事。 接下来,我们准备讲一系列的奥威BI软件的内存计算在各种分析场景中的应用。在正式开讲之前,我先简单说一下…

SignalR实现简单的Web端实时通讯,跳过WebSocket验证,Swagger加锁后不能访问接口,Script setup不支持动态绑定

版本.Net6Vue3Element-Plus 问题 Swagger加锁后不能访问接口 (看第三步)跳过WebSocket验证 (看第四步里面)添加自定义接受方法 (看第四步)不能使用 第一步、下载包 后端: 前端:…

Java版本企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

docker容器原理及简单且详细的使用

docker原理简单介绍 docker是一种虚拟化容器技术。 虚拟化:早期为了节约成本和学习只有在宿主机中基于 kvm(基于内核的虚拟机)等技术虚拟出来完整的操作系统,而这个完整的操作系统会大量的占用宿主机的硬件资源,当创建…

垃圾回收器ZGC应用分析总结

目录 一、基本概述 二、基本关键技术知识总结 (一)三色标记法(着色指针) (二)读屏障 (三)多图映射 (四)简单场景说明ZGC并发 三、基本回收原理介绍 四…

成为黑客猎手:从零开始学习漏洞挖掘的完整指南

一.了解基础知识 学习计算机网络、操作系统、编程语言等相关基础知识,这些知识对于后续的漏洞挖掘和利用非常重要。具体建议如下: 学习计算机网络基础知识,例如 OSI 模型、TCP/IP 协议、HTTP 协议等。推荐书籍:《计算机网络》。…