再说Web渗透测试(第一集)
本文章阅读大约需要15分钟;
今天给大家分享的是我最近这几年在Web应用的渗透测试领域的一些实践积累,由于Web应用渗透测试所涉及的知识领域比较庞杂,所以我打算作为一个分类系列持续发布。
今天是第一集,我先简介本系列文章整体的框架内容、定位与作用;
一、框架内容:
编号 | 名称 | 描述 | 检查项 |
1 | 信息收集 | 子域名接管 | 15项 |
越权(IDOR) | 15项 | ||
2 | Word Press | CMS | |
3 | HTTP头 | 识别缺失或配置错误的安全头信息 | |
4 | 注入攻击 | XSS | |
SQL Injection | |||
5 | 文件上传 | 尝试绕过安全机制上传恶意文件 | |
6 | SSRF | 利用漏洞欺骗服务器端应用程序向内部网络或其他系统发送请求,获取敏感信息或进行攻击。 | |
7 | WAF | 测试WAF的有效性,包括其检测和阻止恶意流量的能力,以及绕过WAF的潜在方法。 |
二、定位:
作为一份Web渗透测试的全面检查清单,旨在为渗透测试人员提供一个结构化的框架,引导他们系统地评估目标Web应用的安全性,并找出潜在漏洞。
三、作用:
指导渗透测试:清单清晰地列出了每个攻击面的测试要点和方法,帮助渗透测试人员进行全面的安全评估,避免遗漏关键环节。
提高测试效率: 将各种漏洞类型和测试方法分类整理,方便测试人员快速找到所需信息,提升测试效率。
提升安全意识: 通过学习清单中涵盖的漏洞类型和攻击手段,安全人员可以更好地了解Web应用安全风险,提升安全意识。
Web渗透测试信息收集深度剖析: 两大关键目标(子域名接管+越权IDOR)
子域名接管
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 | ||
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 | ||
总结
信息收集是Web渗透测试的基石,只有掌握了足够的信息,才能制定有效的攻击策略。子域名接管和越权 IDOR 枚举是信息收集阶段两个重要的攻击方向,红队需要熟练掌握相关的工具和技巧,才能在信息战中取得先机,为后续的攻击行动奠定基础。
第二集再见!
如果您觉得文章对您有所帮助,还请您关注我!