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

news2024/11/25 1:18:54
主题:
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.coloradmin.cn/o/479844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IGH EtherCAT主站应用层代码开发:控制驱动电机

1、安装IGH EtherCAT主站 Ubuntu18.04环境下安装igH EtherCAT Master 2、查询从站配置信息 连接从站通过网线连接主站与从站 启动主站打开终端,输入: sudo /etc/init.d/ethercat star 显示Starting EtherCAT master 1.5.2 done则说明成功。 查询从站列表终端输入: eth…

【C++】 list-map 链表与映射表的简单使用

目录 list 链表 定义链表,并在首、尾添加、删除元素 迭代器遍历链表 任意位置插入或删除 获取首尾节点中元素的值 使用增强的范围for循环进行遍历链表 其他常见的函数 map 映射表 定义map 添加 使用函数插入元素 迭代器遍历map 修改 删除 使用增强的范…

PMP项目管理-[第七章]成本管理

成本管理知识体系: 规划成本管理: 估算成本: 制定预算: 控制成本: 7.1 挣值管理新兴实践 ps:了解即可,考试考不到 7.2 规划成本管理 定义:确定如何估算、预算、管理、监督和控制项目…

直接插入排序

一、概念及其介绍 插入排序(InsertionSort),一般也被称为直接插入排序。 对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增…

你是否曾经为自己写的代码而感到懊恼?那如何才能写出高质量代码呢?

这里写目录标题 一、 前言二、高质量代码的特征三、编程实践技巧1. 遵循编码规范2. 使用有意义的变量名和函数名3. 减少代码重复4. 使用注释5. 编写单元测试6. 使用设计模式7. 使用版本控制工具8. 保持代码简洁9. 优化代码性能10. 学习和借鉴他人的代码总结 一、 前言 写出高质…

Python入门教程+项目实战-11.5节: 程序实战-选择排序算法

目录 11.5.1 排序算法简介 11.5.2 选择排序算法 11.5.3 系统学习python 11.5.1 排序算法简介 所谓排序,是指将数据集合中的元素按从小到大的顺序进行排列,或按从大到小的顺序进行排列。前者称为升序排序,后者称为降序排序。在数据结构与算…

ChatGPT会颠覆SEO内容创作吗

近几年 AI 的发展日新月异。除了搜索算法本身大规模应用人工智能,我也一直关注着 AI 用于写作的进展。 上篇关于 Google 有用内容更新的帖子还在说,高质量内容创作是 SEO 最难的事之一,对某些网站来说,如果能有工具帮助&#xff…

python毕业设计之django+vue.js幼儿园网站系统

开发语言:Python 框架:django Python版本:python3.7.7 数据库:mysql 数据库工具:Navicat 开发软件:PyCharm 采用了Windows10操作系统平台,使用HTMLCSSJS前端模板django作为后台监控&#xff0…

大数据Doris(九):Apache Doris 简单使用

文章目录 Apache Doris 简单使用 一、用户创建 二、创建数据库 三、账户赋权 四、创建数据表 1、创建数据表 2、准备数据 3、导入数据 五、查询数据表 Apache Doris 简单使用 下面按照官网给出的示例简单操作Doris,首先创建用户、创建数据库、赋权、创建表…

第二弹进阶吴恩达 ChatGPT Prompt 技巧

第一弹笔记在这里: 总结吴恩达 ChatGPT Prompt 免费课程 今天分享第二弹,进阶篇。 第一点,任务序列化。 通常看完一篇长文,脑子里往往充满无数疑问。急切想知道所有答案,必须列一个问题清单。对话式问法,对…

ChatGPT:数字时代革新与展望

ChatGPT:数字时代革新与展望 AGI 未来的愿景:建安全有益的 AGI OpenAI团队对AGI的展望: 我们希望 AGI 能够赋予人类在宇宙中最大程度地繁荣发展的能力。我们不期望未来是一个不合格的乌托邦,但我们希望将好的最大化,将…

vue使用路由的query配置项时如何清除地址栏的参数

写vue项目时,如果想通过路由的query配置项把参数从一个组件传到另一个组件,但是又不希望?idxxx显示在地址栏(如:http://localhost:8080/test?idxxx的?idxxx),该怎么做: 举一个案例&#xff1…

【Python】【进阶篇】18、Django初始化项目环境精讲

目录 18、Django初始化项目环境精讲1. 完成数据库迁移2. PyMySQL模块的使用3. migrate与makemigrations命令详解1) makegrations生成数据库迁移文件2) migrate执行数据库迁移命令3) 完成数据库迁移总结 18、Django初始化项目环境精讲 上一节中,我们完成了对 settin…

软件工程导论 - 了解黑盒测试

前言 本篇介绍用例的基本要素,熟悉黑盒测试的7种设计测试用例的方法,了解等价类,边界值,判定表,正交表,场景设计,错误猜测法;如有错误,请在评论区指正,让我们…

使用docker部署prometheus最新版本2.43.0

环境准备: 192.168.197.136 安装prometheus 192.168.197.137 安装grafana 先把需要用到的镜像拉取下来 docker pull prom/prometheus 136服务器拉取 当前最新版本2.43.0 在部署prometheus之前先运行一个容器,把需要挂载的目录文件拷贝出来 docker…

[230501] 4月29日考试真题第一篇|Temporary Pools

题目来源:http://t.csdn.cn/goCDT 正确率:6/10 目录​​​​​​​ Temporary Pools 题目 Temporary Pools Paragraph 1: Temporary pools are freshwater habitats that retain water for only three to four months of the year or even shorter pe…

如何在CentOS上详细安装PageOffice进行企业文档管理和协作

PageOffice是一款针对企业文档管理和协作的办公软件,使用它可以轻松创建和编辑办公文档,并协作共享给其他用户。在CentOS上安装PageOffice可以提高企业的工作效率和文档管理水平。本文将详细介绍在CentOS上安装PageOffice的步骤和注意事项。 一、安装Ja…

【Unity-UGUI控件全面解析】| RawImage 显示纹理组件详解

🎬【Unity-UGUI控件全面解析】| RawImage 显示纹理组件详解一、组件介绍二、组件属性面板三、代码操作组件四、组件常用方法示例4.1 相机映射,可充当小地图4.2 播放视频💯总结🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN�…

LDAP概念和原理介绍

LDAP概念和原理介绍 相信对于许多的朋友来说,可能听说过LDAP,但是实际中对LDAP的了解和具体的原理可能还比较模糊,今天就从“什么是LDAP”、“LDAP的主要产品”、“LDAP的基本模型”、“LDAP的使用案例”四个方面来做一个介绍。 我们在开始…

c#笔记-变量

变量 在编写程序时,我们不能直接预测运行时所有的可能性。 例如在登录时的用户名和密码,有无数种组合。我们无法写出所有可能的值。 变量可以动态地表示一个值。 定义变量 使用var 标识符,并立刻赋值,可以声明一个变量。 var…