目录
1、Web应用-防护产品-WAF保护
#Web+WAF
WAF的原理
1. 数据流监控
2. 策略匹配
3. 行为分析
4. 签名库
5.人工智能与机器学习
WAF 对 渗透测试 的影响
1. 提高攻击力度
2.延长测试时间
3. 误报与干扰
#Web+CDN
CDN的原理
1. 基本架构
2. 工作机制
袭击事件
運均衡
协议优化
DDoS应对
IP隐藏
CDN对渗透测试的影响
1. 增加信息收集努力
2.流量限制与安全策略
3.延长测试时间
4. CDN缓存机制的干扰
#Web+OSS
OSS的原理
1. 基本架构
2. 工作机制
1. 恐惧
2. RESTful接口
3. 数据片段与副本
4. 权限管理
5. 数据加密
OSS对 渗透测试 的影响
1.信息泄露风险
2. 存储桶持有
3.利用开放存储桶
4. API 滥用
#Web+反向代理
正向代理
定义
工作流程
用途
常见示例
反向代理
定义
工作流程
用途
常见示例
#Web+负载均衡
负载均衡的基本原理
负载均衡的类型
1. 基于部署位置的分类
1.1 硬件负载均衡
1.2 软件负载均衡
1.3 云负载均衡
负载均衡的常见架构
1. 双层架构
2. 主备架构
3. 分布式负载均衡
负载均衡在渗透测试中的影响
Web应用-防护产品-WAF保护
#Web+WAF
WAF的原理
1. 数据流监控
WAF客户端与服务器之间,拦截所有进入Web应用程序的HTTP/HTTPS流量。通过分析请求和响应数据,WAF能够检测和阻止非法流量定位。
2. 策略匹配
WAF依赖预先定义的规则或策略来识别攻击行为。这些策略可以基于特定模式(如SQL关键字、恶意脚本)的规则,也可以基于异常行为的动态分析。
3. 行为分析
现代WAF支持行为分析,通过记录正常的用户行为,检测这些行为的异常活动。例如:
-
用户访问异常
-
许多人请求
-
犯罪的判罚行为
4. 签名库
WAF会根据签名库对请求中的特定内容(如SQL语句、不良代码片段等)进行匹配,并阻止与已知攻击特征一致的请求。
5.人工智能与机器学习
一些高级WAF会采用AI/ML技术,动态学习应用程序的正常流量模式,从而检测未知的攻击。
WAF 对 渗透测试 的影响
1. 提高攻击力度
-
过滤恶意请求:WAF能够实时拦截SQL注入、XSS等攻击流量,使得攻击者很难直接获取服务器响应。
-
漏洞漏洞:目标即使应用存在漏洞,WAF可能会通过规则拦截,使漏洞难以被利用。
2.延长测试时间
-
WAF增加了测试复杂性。渗透测试人员需要绕过WAF的检测机制,这可能涉及更复杂的负载构造或流量阻塞。
3. 误报与干扰
-
有些WAF配置没有当时会出现错误报告,即正常请求被阻止,这可能会干扰渗透测试。
-
渗透测试工具可能被WAF识别为恶意流量,导致工具失效或阻塞。
原理:Web应用防火墙,旨在提供保护
影响:常规Web安全测试手段会受到拦截
演示:雷池社区版 雷池 WAF 社区版 | 下一代 Web 应用防火墙 | 免费使用
Ubuntu20.04 + 雷池社区版
安装雷池:
雷池介绍 | 雷池 SafeLine
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"
搭建网站:
https://zhuanlan.zhihu.com/p/705196831
docker run --name webgoat -d -p 8080:8080 -p 9090:9090 registry.cn-shanghai.aliyuncs.com/kubesec/webgoat:v2023.8
配置雷池:
添加站点-设置域名-上游地址-没真实域名修改本地host解析
#Web+CDN
CDN的原理
1. 基本架构
CDN由多个分散的边缘节点组成,这些节点部署在用户接入点附近,用于缓存静态内容(如HTML、CSS、JavaScript、图片、视频等)或处理部分动态请求。
-
边缘节点:靠近用户的CDN服务器,用于处理用户请求。
-
源站服务器:实际托管网站内容的服务器,只有当CDN无法提供所需资源时,才回源站请求数据。
2. 工作机制
袭击事件
-
当用户请求资源时,CDN首先检查其边缘节点缓存。如果缓存命中,则直接返回内容。
-
如果缓存未达到目标,边缘节点会向源站发起请求内容获取,并将其缓存以备下次请求。
運均衡
CDN通过智能调度,将用户流量分配到最优的节点,从而避免源站或单一节点过载。
协议优化
CDN支持协议优化,如HTTP/2、压缩传输、TLS加速等,进一步提高响应速度。
DDoS应对
CDN通过遍布架构和流量清洗中心,可吸收并减少大规模拒绝服务(DDoS)攻击。
IP隐藏
源站的真实IP地址通过CDN隐藏,用户只能看到CDN边缘节点的IP地址。
CDN对渗透测试的影响
1. 增加信息收集努力
-
隐藏源站IP:渗透测试人员无法直接定位目标服务器的真实IP地址,从而难以对源站进行攻击。
-
遮挡真实断层:CDN节点分布全球,无法通过IP定位推断源站位置。
2.流量限制与安全策略
-
请求速率限制:CDN常配置速率限制规则,渗透测试工具(如扫描器)可能会导致高频请求被阻塞。
-
恶意请求过滤:CDN内置安全规则可以过滤SQL注入、XSS等攻击请求,降低渗透测试的有效性。
-
自动封禁:CDN可能对检测到的非法IP实施短时间或永久封禁,阻止进一步测试。
3.延长测试时间
由于流量需通过CDN的边缘节点,测试响应速度可能受到影响,特别是在缓存刷新或复杂回源的情况下。
4. CDN缓存机制的干扰
-
服务器污染:渗透测试可能因为服务器干扰,无法验证漏洞真实是否存在。
-
找到动态内容绕过:攻击者需要CDN不缓存的动态接口来继续测试。
原理:内容分发服务,旨在提高访问速度
影响:隐藏真实源IP,导致对目标IP测试错误
演示:阿里云备案域名全局CDN加速服务
Windows2016 + BT宝塔面板 + CDN服务
#Web+OSS
OSS的原理
1. 基本架构
-
存储桶(Bucket):存储桶是OSS中的基本存储单元,用于分组管理对象数据,每个存储桶都有唯一的名称。
-
对象(Object):对象是存储的数据实体,包括对象数据和元数据。每个对象通过一个唯一的关键标识。
-
访问控制:通过访问策略(如权限配置、访问密钥)控制用户对存储桶和对象的操作权限。
2. 工作机制
1. 恐惧
OSS将以数据对象的形式存储,每个对象包含以下信息:
-
数据本身(如文件内容)。
-
元数据(如文件类型、创建时间)。
-
唯一的目的(Key)。
2. RESTful接口
OSS通常通过RESTful API进行交互,支持HTTP/HTTPS协议。用户可以使用API上传、下载或管理对象。
3. 数据片段与副本
OSS通常采用数据分片和语音技术,将数据存储在多个物理位置,以保证高可用性和容灾能力。
4. 权限管理
-
公共读写器:所有用户都可以访问和修改。
-
公共读、笔记本写:所有用户都可以读取,但只有授权用户才可以写入。
-
完全匿名:只有用户授权才可以访问。
5. 数据加密
OSS支持传输层加密(如HTTPS)和存储层加密(如服务端加密、客户端加密)以保护数据安全。
OSS对 渗透测试 的影响
1.信息泄露风险
OSS配置不当(如存储桶权限设置错误)可能导致:
-
敏感数据泄露:如内部文档、日志、备份文件等未授权访问。
-
元数据泄露:攻击者通过查看元数据(如文件创建时间、用户ID)获取关键信息。
2. 存储桶持有
他们的可能尝试:
-
修改存储桶内容:如窜改文件内容,入库恶意代码。
-
上传恶意文件:用于钓鱼攻击或传播恶意软件。
3.利用开放存储桶
公共仓储桶可能被占用:
-
存储液压内容:攻击者利用目标存储桶液压或目标内容。
-
攻击跳板:上传恶意脚本或文件,诱导其他用户下载。
4. API 滥用
如果OSS API泄露或配置不当,攻击者可能利用API执行以下操作:
-
批次下载存储数据。
-
删除或篡改对象。
-
创建新的存储桶或对象,增加存储成本。
原理:云存储服务,旨在提高访问速度
演示:Cloudreve - 部署公私兼备的网盘系统
Windows2016 + cloudreve + 阿里云OSS
Release 3.7.1 · cloudreve/Cloudreve · GitHub
1、启动应用
2、登录管理
3、配置存储信息
4、更改用户组存储属性
阿里云OSS:
开OSS
2、新建Bucket
3、配置Bucket属性
4、配置Access访问
原理:
为什么要使用第三方存储?
1)静态文件会占用大量带宽
2)加载速度
3)存储空间
影响:
上传的文件或解析的文件均来自于OSS资源,无法解析,单独存储
1、修复上传安全
2、文件解析不一样
3、但存在AK/SK隐患
#Web+反向代理
正向代理
定义
正向代理(Forward Proxy)是代理客户端(Client)向服务器(Server)发送请求的一种代理形式。客户端通过正向代理访问目标服务器,而服务器并不知道实际的客户端是谁。
工作流程
-
客户端向正向代理服务器发送请求,并指定目标服务器地址。
-
正向代理服务器转发该请求到目标服务器。
-
目标服务器将响应返回给正向代理服务器,代理再将响应结果返回给客户端。
用途
-
访问控制
-
用于突破防火墙或访问受限资源(如跨区域访问被屏蔽的内容)。
-
在公司网络中,正向代理可以限制员工访问某些网站。
-
-
缓存优化
-
正向代理可以缓存常用资源,减少对目标服务器的请求,提高访问效率。
-
-
匿名访问
-
隐藏客户端的真实IP地址,提升隐私性。
-
-
流量监控
-
管理员通过代理服务器监控和记录客户端的访问行为。
-
常见示例
-
VPN(虚拟专用网络)
-
翻墙代理(如访问被屏蔽的网站)
-
浏览器设置的HTTP/HTTPS代理
反向代理
定义
反向代理(Reverse Proxy)是代理服务器代表目标服务器处理客户端的请求。客户端并不知道实际的目标服务器,而是与反向代理服务器交互。
工作流程
-
客户端向反向代理服务器发送请求。
-
反向代理服务器根据请求,将其转发给后端的目标服务器。
-
目标服务器将响应返回给反向代理服务器,再由代理转发给客户端。
用途
-
负载均衡
-
将客户端请求分配到不同的后端服务器,提升系统的整体性能和可用性。
-
-
安全防护
-
反向代理隐藏后端服务器的真实IP地址,防止直接攻击。
-
可作为Web应用防火墙(WAF)的一部分,过滤恶意请求。
-
-
内容缓存
-
缓存静态资源(如图片、视频),减少后端服务器的压力。
-
-
协议转换
-
反向代理可以在客户端和服务器之间进行协议转换(如HTTP与HTTPS之间的转换)。
-
-
集中管理
-
通过反向代理集中处理SSL证书、身份认证等功能,简化后端服务器的配置。
-
常见示例
-
CDN(内容分发网络)
-
企业内部网的负载均衡器(如Nginx、HAProxy)
-
API网关
特点 | 正向代理 | 反向代理 |
---|---|---|
服务对象 | 客户端 | 服务器 |
作用范围 | 客户端到代理服务器之间的请求 | 代理服务器到后端服务器之间的请求 |
隐藏对象 | 客户端隐藏真实身份 | 服务器隐藏真实身份 |
主要功能 | 匿名访问、突破限制、缓存优化 | 负载均衡、安全防护、集中管理、缓存优化 |
常见应用场景 | 访问被封锁的网站、VPN | CDN、Web应用负载均衡、WAF |
正代理为客户端服务,客户端主动建立代理访问目标(不代理不可达)
反向代理为服务端服务,服务端主动转发数据给可访问地址(不主动不可达)
原理:通过网络反向代理转发真实服务达到访问目的
影响:访问目标只是一个代理,非真实应用服务器
注意:正向代理和反向代理都是解决访问不可达的问题,但由于反向代理中多出一个可以重定向解析的功能操作,导致反代理出的站点指向和真实应用毫无关系!
演示:Nginx反向代理配置
Windows2016 + BT宝塔面板 + Nginx
#Web+负载均衡
负载均衡的基本原理
负载均衡器位于客户端和后端服务器之间,充当中间层,通过特定的调度算法分配请求。其核心目标是:
-
分散流量压力:避免单个服务器过载。
-
提升可用性:确保当某些节点故障时,系统仍能正常服务。
-
优化资源利用:充分利用所有服务器的计算能力。
负载均衡的类型
1. 基于部署位置的分类
1.1 硬件负载均衡
-
特点:使用专用设备(如F5、Cisco等)进行流量分配。
-
优点:性能强大,稳定性高。
-
缺点:成本高,扩展性较差。
1.2 软件负载均衡
-
特点:通过软件运行在普通服务器上实现负载均衡功能。
-
常用工具:Nginx、HAProxy、Traefik、Apache Traffic Server。
-
优点:灵活性高,成本低。
-
缺点:性能可能不及硬件负载均衡。
1.3 云负载均衡
-
特点:由云服务提供商(如AWS ELB、阿里云SLB、Google Cloud Load Balancing)提供的托管服务。
-
优点:无需维护硬件,易于扩展和集成。
-
缺点:依赖云服务,成本可能随流量增加而提高。
负载均衡的常见架构
1. 双层架构
-
前端使用负载均衡器分配流量到后端服务器。
-
后端服务器之间可以再配置内部负载均衡器。
2. 主备架构
-
采用多台负载均衡器,其中一台为主,一台为备。当主负载均衡器发生故障时,备份节点接管流量。
3. 分布式负载均衡
-
将流量分配到多个区域的负载均衡器,再由区域内的负载均衡器处理本地流量。
负载均衡在渗透测试中的影响
-
隐藏真实IP地址
-
负载均衡器会隐藏后端服务器的真实IP,增加攻击难度。
-
攻击者需要通过流量分析或旁路测试找到后端服务器。
-
-
流量分散
-
负载均衡将请求分发到多台服务器,攻击流量可能被稀释,难以造成单点影响。
-
-
DDoS防护
-
负载均衡器通常具有抗DDoS功能,可以吸收和清洗大规模恶意流量。
-
-
健康检查干扰
-
如果健康检查未配置好,攻击者可能利用其路径信息探测后端服务器状态。
-
-
增加测试复杂性
-
渗透测试工具可能无法保证所有请求流向同一后端服务器,导致结果不一致。
-
原理:分摊到多个操作单元上进行执行,共同完成工作任务
影响:有多个服务器加载服务,测试过程中存在多个目标情况
演示:Nginx负载均衡配置
Windows2016 + BT宝塔面板 + Nginx
#定义负载设置
upstream fzjh{
server 120.26.70.72:80 weight=1;
server 47.75.212.155:80 weight=2;
}
#定义访问路径 访问策略
location / {
proxy_pass http://fzjh/;
}