查看原文
其他

再说Web渗透测试(第一集)

再说安全 再说安全
2024-12-01

本文章阅读大约需要15分钟;

今天给大家分享的是我最近这几年在Web应用的渗透测试领域的一些实践积累,由于Web应用渗透测试所涉及的知识领域比较庞杂,所以我打算作为一个分类系列持续发布。

今天是第一集,我先简介本系列文章整体的框架内容、定位与作用

一、框架内容

编号 名称
描述
检查项
1信息收集子域名接管15项
越权(IDOR)
15项
  2Word PressCMS

  3HTTP头
识别缺失或配置错误的安全头信息

4

注入攻击

XSS
SQL Injection

  5文件上传尝试绕过安全机制上传恶意文件

    

  6

SSRF
利用漏洞欺骗服务器端应用程序向内部网络或其他系统发送请求,获取敏感信息或进行攻击。

   

  7

WAF测试WAF的有效性,包括其检测和阻止恶意流量的能力,以及绕过WAF的潜在方法。

二、定位:

作为一份Web渗透测试的全面检查清单,旨在为渗透测试人员提供一个结构化的框架,引导他们系统地评估目标Web应用的安全性,并找出潜在漏洞。

三、作用:

  1. 指导渗透测试:清单清晰地列出了每个攻击面的测试要点和方法,帮助渗透测试人员进行全面的安全评估,避免遗漏关键环节。

  2. 提高测试效率: 将各种漏洞类型和测试方法分类整理,方便测试人员快速找到所需信息,提升测试效率。

  3. 提升安全意识: 通过学习清单中涵盖的漏洞类型和攻击手段,安全人员可以更好地了解Web应用安全风险,提升安全意识。


Web渗透测试信息收集深度剖析: 两大关键目标(子域名接管+越权IDOR)

  1. 子域名接管

1.1背景知识(我会简单介绍一些基础知识点,新手小白仍需要补全)

每个网站都有一个主域名,例如google.com,同时也会拥有多个子域名,例如 drive.google.com、maps.google.com等。子域名通常用于指向不同的服务、功能或部门。为了方便管理,网站管理员可能会将某些子域名指向第三方平台,例如使用AWS S3存储静态文件、使用GitHub Pages托管网站代码、使用 Heroku 部署Web应用程序等。

  • DNS解析:域名系统 (DNS) 负责将域名解析为IP地址,以便用户能够访问网站。当用户在浏览器中输入域名时,浏览器会向DNS服务器发送请求,查询该域名的IP地址。

  • CNAME记录:CNAME记录是一种DNS记录类型,它允许将一个域名指向另一个域名。例如,www.example.com的CNAME记录可以指向 example.com,这样用户访问www.example.com时,实际上访问的是 example.com。


1.2 技术原理

子域名接管漏洞的产生原因是网站管理员错误地配置了指向第三方平台的 CNAME 记录。当网站管理员删除或停止使用第三方服务时,却没有及时更新 CNAME 记录,就会导致该子域名处于“悬空”状态,任何人都可以注册该服务并接管该子域名。攻击者可以通过接管子域名,实现以下攻击目标:

  • 网站钓鱼: 创建与目标网站相似的钓鱼网站,窃取用户凭证。

  • 恶意内容分发: 在接管的子域名上托管恶意软件、钓鱼页面等,诱骗用户下载或访问。

  • SEO 欺骗: 利用目标网站的域名权重,提升恶意网站的搜索排名。

  • 窃取敏感信息: 如果子域名曾经用于存储敏感数据,攻击者可能会获取这些数据。


1.3 范例说明

范例1:假设目标网站example.com将其博客子域名blog.example.com指向了 Tumblr平台,但后来决定不再使用Tumblr,并删除了该博客。然而,网站管理员忘记更新 CNAME 记录。攻击者发现该子域名处于悬空状态,注册了一个新的 Tumblr 账号,并将其绑定到 blog.example.com。现在,攻击者就可以完全控制该子域名,并利用它进行各种攻击。

范例2:假设目标网站example.com使用了AWS S3存储桶来存储静态资源,其子域名static.example.com的CNAME记录指向该存储桶。如果网站管理员停用了该存储桶,但没有删除CNAME记录,攻击者就可以注册 static.example.com,并将其指向自己的服务器。当用户访问 static.example.com时,就会被重定向到攻击者的服务器,攻击者就可以在该服务器上托管恶意内容,或者仿冒目标网站进行钓鱼攻击。

1.4 实战经验(信息收集-子域名接管)

目的:发现目标网站的所有子域名,特别是那些指向已失效服务或平台的子域名,并尝试接管这些子域名,从而扩大攻击面,获取更多可利用的资源。

思考逻辑:

1、全面枚举:使用 Sublist3r、Amass等工具,结合多种信息来源(例如搜索引擎、证书透明度日志、公开数据集等),尽可能多地枚举目标网站的子域名。

2、识别脆弱点:重点关注CNAME记录,特别是那些指向第三方服务的 CNAME 记录,例如 AWS S3 存储桶、GitHub Pages、Heroku应用等,因为这些服务一旦配置不当就很容易被接管。

3、验证接管:尝试访问枚举到的子域名,观察其响应情况。 如果发现子域名返回 404 错误或者显示第三方平台的默认页面,就说明该子域名可能存在接管风险。

4、快速行动:子域名接管漏洞的修复通常比较简单,一旦发现漏洞,攻击者和防御者之间的竞争就会变得非常激烈。因此,红队需要快速行动,抢占先机,在防御者修复漏洞之前完成接管。

1.5 安全检查项(信息收集-子域名接管)

也是渗透操作指导项+防御措施指导(建议按照这个15项来,85%有收获)

编号
操作名称
 目的/描述

1

枚举子域名
使用 Sublist3r、Amass、Dnsrecon 等工具来发现与你的主域名相关联的所有子域名

2
分析DNS 记录
检查子域名的 DNS 记录,例如 A 记录、CNAME 记录、AAAA 记录、MX 记录等,查找指向外部服务或已过期域名的记录

3
检查HTTP 响应
检查子域名的 HTTP 响应消息和状态码,以识别可能指示未声明或过期外部服务的错误消息或状态码

4
使用在线服务
利用 Crt.sh 和 Censys 等在线服务收集有关你的主域名的证书透明度 (CT) 日志和证书数据

5
测试常见第三方服务
检查指向常见第三方服务的子域名,例如易受子域名接管攻击的 AWS S3、GitHub Pages 或 Heroku
6
测试 Dangling CNAME 记录
寻找指向已删除或过期的外部服务的 dangling CNAME 记录
7
监控域名注册信息
监控域名注册信息,查找可以被接管的过期域名
8
使用子域名接管工具
使用 SubOver、Subjack 或 Tk0-subdomains 等工具来自动识别子域名接管漏洞
9
检查错误配置的DNS 设置
 检查错误配置的 DNS 设置,例如可能导致子域名接管漏洞的错误配置
10
测试 Wildcard DNS记录
 检查 Wildcard DNS 记录,这些记录可能会使子域名容易受到接管攻击
11
检查Abandoned 的子域名
 查找仍然指向未使用外部服务的 Abandoned 的子域名
12
测试不正确的重定向
检查子域名是否错误地将流量重定向到可以被接管的外部服务
13
监控域名所有权变更
监控域名所有权变更,以了解潜在的接管机会
14
与第三方服务提供商合作

以确保正确的域名配置并防止子域名接管
15
定期审核
定期审核你的子域名配置,以识别和缓解潜在的子域名接管风险


2. 越权IDOR

2.1 背景知识

Web应用程序通常使用ID或其他标识符来标识和管理数据,例如用户ID、订单ID、商品ID等。当应用程序直接使用这些标识符来访问数据,而没有进行充分的权限验证时,就会产生不安全的直接对象引用漏洞 (IDOR)也称作越权漏洞。

2.2 技术原理

越权IDOR漏洞的本质是授权机制缺失或失效。攻击者可以通过修改URL 或请求参数中的标识符,尝试访问未经授权的数据。例如:

  • 攻击者修改URL中的用户ID,尝试访问其他用户的个人资料。

  • 攻击者修改请求参数中的订单ID,尝试查看或修改其他用户的订单。


2.3 范例说明

假设一个电商网站的订单查询功能使用URL参数order_id来标识订单,例如 https://example.com/order?order_id=12345。如果该功能没有进行充分的权限验证,攻击者就可以通过修改 order_id 参数,尝试查看其他用户的订单信息,例如 https://example.com/order?order_id=67890。

2.4 实战经验(信息收集-越权IDOR)

目标:发现Web应用程序中是否存在越权(IDOR)漏洞,攻击者可以通过操纵这些引用来访问未经授权的数据或功能。

经验之谈

1、关注用户 ID:越权IDOR漏洞通常与用户ID或其他标识符相关。测试时,可以尝试修改URL或请求参数中的用户ID,观察应用程序的响应,看看是否能够访问其他用户的数据。

2、测试关键功能:重点关注应用程序的关键功能,例如查看订单、修改个人资料、访问管理面板等,因为这些功能通常涉及到敏感数据的处理,更容易出现IDOR漏洞。

3、自动化枚举:可以使用Burp Suite等工具,通过Intruder模块,自动化枚举IDOR漏洞。例如,可以使用数字列表作为 Payload,对URL或请求参数中的ID进行批量测试。

2.5 安全检查项(信息收集-越权IDOR)

也是渗透操作指导项+防御指导(建议按照这个15项来,90%有收获)

编号
操作名称
 目的/描述

1

顺序 ID
分析 URL、API 端点或隐藏表单字段中的顺序或可预测的数字标识符,并尝试修改它们以访问未经授权的资源。

2
用户特定数据
确保针对用户特定数据(例如个人资料、订单或消息)实施了适当的授权检查,尝试使用你的身份验证会话访问另一个用户的会话数据,以验证是否存在未经授权的访问

3
枚举标识符
创建具有不同角色(例如管理员、用户、访客)的多个帐户,并比较对象标识符以识别模式或关联性。

4
测试文件上传
测试文件上传功能,并尝试通过猜测或修改其文件名来访问上传的文件

5
测试 API 端点
分析 API 端点是否存在暴露的对象引用,并尝试通过修改请求参数来访问未经授权的资源
6
测试隐藏表单字段
检查隐藏表单字段并修改其值,以尝试访问未经授权的资源
7
测试 JSON 或 XML 响应
分析 JSON 或 XML 响应是否存在暴露的对象引用,并尝试通过修改请求参数来访问未经授权的资源。
8
测试与密码相关的功能
测试与密码相关的功能或模块(例如密码重置或电子邮件验证),以查找越权 IDOR 漏洞。通过修改请求参数尝试利用与密码相关功能(例如密码重置或电子邮件验证)中的 越权IDOR 漏洞。
9
使用不同角色进行测试
创建具有不同角色(例如管理员、用户、访客)的帐户,并尝试使用不同的会话访问未经授权的资源。
10
使用未经身份验证的会话进行测试
测试未经身份验证的用户是否可以通过修改 URL 或 API 端点中的对象引用来访问资源。
11
使用 Web 应用程序扫描器
使用自动化 Web 应用程序扫描器,例如 Burp Suite 或 OWASP ZAP,来识别潜在的 IDOR 漏洞。
12
分析访问日志
查看服务器访问日志,查找指示未经授权访问尝试的模式。
13
操纵 Cookie
操纵 Cookie 或会话令牌以模拟其他用户,并尝试访问未经授权的资源。
14
测试请求方法
使用不同的 HTTP 请求方法(例如 GET、POST、PUT、DELETE 或 PATCH)测试 IDOR 漏洞。
15
测试编码的 URL 参数
尝试使用URL编码或Base64编码的参数来绕过输入验证或访问控制检查


总结

信息收集是Web渗透测试的基石,只有掌握了足够的信息,才能制定有效的攻击策略。子域名接管和越权 IDOR 枚举是信息收集阶段两个重要的攻击方向,红队需要熟练掌握相关的工具和技巧,才能在信息战中取得先机,为后续的攻击行动奠定基础。

第二集再见!

如果您觉得文章对您有所帮助,还请您关注我!



欢迎您加群讨论:安全技术交流学习、HW情报分享讨论群!

个人观点,仅供参考
修改于
继续滑动看下一个
再说安全
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存