4.1.9-映射应用程序体系结构

这篇具有很好参考价值的文章主要介绍了4.1.9-映射应用程序体系结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

映射应用程序体系结构

ID
WSTG-INFO-10

总结

为了有效地测试应用程序,并能够就如何解决所识别的任何问题提供有意义的建议,了解实际测试的内容非常重要。此外,确定是否应将特定组件视为超出测试范围可能会有所帮助。

现代 Web 应用程序的复杂性差异很大,从在单个服务器上运行的简单脚本到分布在数十个不同系统、语言和组件的高度复杂的应用程序。还可能还有其他网络级组件,例如防火墙或入侵防护系统,这些组件可能会对测试产生重大影响。

测试目标

  • 了解应用程序的体系结构和正在使用的技术。

如何测试
从黑盒角度进行测试时,重要的是要尝试清楚地了解应用程序的工作原理以及哪些技术和组件已到位。在某些情况下,可以测试特定组件(如 Web 应用程序防火墙),而其他组件可以通过检查应用程序的行为来识别。

以下各节提供了常见体系结构组件的高级概述,以及如何识别它们的详细信息。

应用程序组件

网页服务器

简单的应用程序可以在单个服务器上运行,可以使用指南的部分 Web服务器指纹识别中讨论的步骤进行识别。

平台即服务 (PaaS)

在平台即服务 (PaaS) 模型中,Web 服务器和底层基础结构由服务提供商管理,客户仅对部署在其上的应用程序负责。从测试的角度来看,有两个主要区别:

  • 应用程序所有者无法访问底层基础结构,这意味着他们将无法直接修复任何问题
  • 基础结构测试可能超出任何服务的范围

在某些情况下,可以识别 PaaS 的使用情况,因为应用程序可能使用特定的域名(例如,部署在 Azure 应用服务上的应用程序将具有*.azurewebsites.net 域 - 尽管它们也可能使用自定义域)。在其他情况下,很难确定 PaaS 是否正在使用中。

Serverless无服务器

在无服务器模型中,开发人员提供的代码直接作为单个函数在托管平台上运行,而不是运行部署在 webroot 中的传统大型 Web 应用程序。这使得它非常适合基于微服务的架构。与 PaaS 环境一样,基础结构测试可能超出范围。

在某些情况下,无服务器代码的使用可能由特定 HTTP 标头的存在来指示。例如,AWS Lambda 函数通常会返回以下标头:

X-Amz-Invocation-Type
X-Amz-Log-Type
X-Amz-Client-Context

Azure Functions 不太明显。它们通常返回 Server: Kestrel 标头 - 但这本身不足以确定它是一个 Azure 应用函数,因为它可能是在 Kestrel 上运行的其他一些代码。

微服务

在基于微服务的体系结构中,应用程序 API 由多个离散服务组成,而不是作为整体应用程序运行。服务本身通常在容器内运行(通常使用 Kubernetes),并且可以使用各种不同的操作系统和语言。尽管它们通常位于单个 API 网关和域后面,但使用多种语言(通常在详细的错误消息中指示)可能表明正在使用微服务。

静态存储

许多应用程序将静态内容存储在专用存储平台上,而不是直接将其托管在主 Web 服务器上。两个最常见的平台是Amazon的S3存储桶和Azure的存储帐户,可以通过域名轻松识别:

  • BUCKET.s3.amazonaws.coms3.REGION.amazonaws.com/BUCKET 适用于亚马逊 S3 存储桶
  • ACCOUNT.blob.core.windows.net对于 Azure 存储帐户

这些存储帐户通常会公开敏感文件,如测试云存储指南部分所述。

数据库
大多数重要的 Web 应用程序使用某种数据库来存储动态内容。在某些情况下,可以确定数据库。这通常可以通过以下方式完成:

  • 端口扫描服务器并查找与特定数据库关联的任何开放端口
  • 触发与 SQL(或 NoSQL)相关的错误消息(或从搜索引擎查找现有错误)

当无法最终确定数据库时,测试人员通常可以根据应用程序的其他方面做出有根据的猜测:

  • Windows IIS和 ASP.NET 经常使用Microsoft SQL Server。
  • Embedded systems( 嵌入式系统)通常使用SQLite
  • PHP 经常使用 MySQL 或 PostgreSQL
  • APEX 经常使用 Oracle(甲骨文)

这些不是硬性规定,但如果没有更好的选择,当然可以给你一个合适的参考。

Authentication(认证)

大多数应用程序都具有用户身份验证。可以使用多个身份验证后端,例如:

  • Web 服务器配置(包括.htaccess 文件)或在脚本中硬编码密码.htaccess
    • 通常显示为 HTTP 基本身份验证,由浏览器中的弹出窗口和 WWW-Authenticate: Basic HTTP 标头指示
  • 数据库中的本地用户帐户
    • 通常集成到应用程序的表单或 API 端点中
  • 现有的中央身份验证源,例如 Active Directory 或 LDAP 服务器
    • 可以使用 NTLM 身份验证,由 WWW-Authenticate: NTLM HTTP 标头指示
    • 可以以表单形式集成到 Web 应用程序中
    • 可能需要以“域\用户名”格式输入用户名,或者可能提供可用域的下拉列表
  • 使用内部或外部提供商的单点登录 (SSO)
    • 通常使用 OAuth、OpenID Connect 或 SAML

应用程序可以为用户提供多个身份验证选项(例如注册本地帐户或使用其现有的 Facebook 帐户),并且可以对普通用户和管理员使用不同的机制。

第三方服务和 API
几乎所有 Web 应用程序都包含加载或客户端与之交互的第三方资源。这些可能包括:

  • 活动内容(如脚本、样式表、字体和 iframe)
  • 被动内容(例如图像和视频)
  • 外部接口
  • 社交媒体按钮
  • 广告网络
  • 支付网关

这些资源由用户的浏览器直接请求,使其更容易使用开发人员工具或拦截代理进行识别。虽然识别它们很重要(因为它们会影响应用程序的安全性),但请记住,它们通常超出了测试范围,因为它们属于第三方。

网络组件

反向代理

反向代理位于一个或多个后端服务器的前面,并将请求重定向到相应的目标。它们可用于实现各种功能,例如:

  • 充当负载均衡器或 Web 应用程序防火墙
  • 允许在单个 IP 地址或域(在子文件夹中)上托管多个应用程序
  • 实施 IP 过滤或其他限制
  • 从后端缓存内容以提高性能

并非总是能够检测到反向代理(特别是如果其背后只有一个应用程序),但有时您可以通过以下方式识别它:

  • 前端服务器和后端应用程序不匹配(例如具有 ASP.NET 应用程序的 Server: nginx标头)
  • 这有时会导致请求走私漏洞
  • 重复的标头(尤其是 Server 标头)
  • 托管在同一 IP 地址或域上的多个应用程序(特别是如果它们使用不同的语言)
负载均衡器

负载均衡器位于多个后端服务器的前面,并在它们之间分配请求,以便为应用程序提供更大的冗余和处理能力。

负载均衡器可能很难检测,但有时可以通过发出多个请求并检查响应的差异来识别,例如:

  • 系统时间不一致
  • 详细错误消息中的不同内部 IP 地址或主机名
  • 从服务器端请求伪造 (SSRF) 返回的不同地址

它们也可能通过特定 Cookie 的存在来指示(例如,F5 BIG-IP 负载均衡器将创建一个名为 BIGipServer.

内容分发网络 (CDN)

内容分发网络 (CDN) 是一组地理位置分散的缓存代理服务器,旨在提高站点性能。

它通常是通过将面向公众的域指向 CDN 的服务器,然后将 CDN 配置为连接到正确的后端服务器(有时称为“源”)来配置的。

检测 CDN 的最简单方法是对域解析到的 IP 地址执行 WHOIS 查找。如果它们属于CDN公司(例如Akamai,Cloudflare或Fastly - 有关更完整的列表,请参阅维基百科Wikipedia for a more complete list)),则很可能正在使用CDN。

在测试 CDN 后面的站点时,应牢记以下几点:

  • IP 地址和服务器属于 CDN 提供商,可能超出基础结构测试的范围
  • 许多 CDN 还包括机器人检测、速率限制和 Web 应用程序防火墙等功能
  • CDN 通常缓存内容。因此,在后端所做的更改可能不会立即显示在站点上。

如果站点位于 CDN 后面,则识别后端服务器可能很有用。如果未实施适当的访问控制,测试人员可能能够通过直接访问后端服务器来绕过 CDN(及其提供的任何保护)。有各种不同的方法可以允许人们识别后端系统:

  • 应用程序发送的电子邮件可能直接来自后端服务器,这可能会显示其IP地址
  • 域的 DNS 研磨、区域传输或证书透明度列表可能会在子域中显示它
  • 扫描公司已知使用的IP范围可能有助于识别后端服务器
  • 利用服务器端请求伪造 (SSRF) 可能会泄露 IP 地址
  • 来自应用程序的详细错误消息可能会暴露 IP 地址或主机名

安全组件

网络防火墙

大多数 Web 服务器将受到数据包过滤或状态检查防火墙的保护,该防火墙会阻止任何不需要的网络流量。要检测此问题,请对服务器执行端口扫描并检查结果。

如果大多数端口显示为“关闭”(即,它们返回 RST数据包以响应初始SYN数据包),则表明服务器可能不受防火墙保护。如果端口显示为“已过滤”(即,将SYN 数据包发送到未使用的端口时未收到响应),则防火墙很可能已到位。

此外,如果不适当的服务暴露在全世界(如 SMTP、IMAP、MySQL 等),这表明没有防火墙,或者防火墙配置不当。

网络入侵检测与防御系统

网络入侵检测系统 (IDS) 旨在检测可疑或恶意的网络级活动(如端口或漏洞扫描)并发出警报。入侵防御系统 (IPS) 的功能类似,但也采取措施来防止活动,通常通过阻止源 IP 地址。

通常可以通过对目标运行自动扫描工具(如端口扫描程序)并查看源 IP 是否被阻止来检测 IPS。但是,IPS 可能无法检测到许多应用程序级工具(尤其是在它不解密 TLS 的情况下)。

Web 应用程序防火墙 (WAF)

Web 应用程序防火墙 (WAF) 检查 HTTP 请求的内容,并阻止那些看似可疑或恶意的请求。它们还可用于动态应用其他控件,例如 CAPTCHA 或速率限制。它们通常利用一组已知的错误签名和正则表达式(例如 OWASP 核心规则集)来识别恶意流量。WAF 可以有效地防范某些类型的攻击(如 SQL 注入或跨站点脚本),但对其他类型的攻击(如访问控制或业务逻辑相关问题)的效果较差。

WAF 可以部署在多个位置,包括:

  • 在 Web 服务器本身上
  • 在单独的虚拟机或硬件设备上
  • 在云中,在后端服务器前面

由于WAF拦截恶意请求,因此可以通过向参数添加常见攻击字符串并观察它们是否被拦截来检测恶意请求。例如,尝试添加使用 ' UNION SELECT 1><script>alert(1)</script>等值调用 foo 的参数。如果这些请求被阻止,则可能存在 WAF。此外,块页面的内容可能会提供有关正在使用的特定技术的信息。最后,某些 WAF 可能会将 Cookie 或 HTTP 标头添加到可以显示其存在的响应中。
如果正在使用基于云的 WAF,则可以使用内容交付网络部分中讨论的相同方法,通过直接访问后端服务器来绕过它。文章来源地址https://www.toymoban.com/news/detail-733204.html

到了这里,关于4.1.9-映射应用程序体系结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】操作系统的基本概念 {冯诺依曼体系结构,操作系统的基本概念,系统调用及用户操作接口,shell程序}

    现代计算机设计大都遵守冯·诺依曼体系结构: 截至目前,我们所认识的计算机,都是由一个个的硬件组件组成 输入单元:包括键盘, 鼠标,扫描仪, 磁盘,网卡等 存储器: 内存(提高数据读写速度,降低硬件成本) 中央处理器(CPU):含有运算器(算数运算,逻辑运算)和控

    2024年02月11日
    浏览(50)
  • 软件设计模式与体系结构-软件体系-层次软件体系结构

    层次之间存在接口, 通过接口形成call/return的关系 ,上层是下层的客户端 层次系统的基本构件: 各层次内部包含的构件 连接件: 层间的交互协议 拓扑结构: 分层 拓扑约束: 对相邻层间交互的约束 层次软件体系结构(Layered Software Architecture)是一种常见的软件设计模式,

    2024年02月13日
    浏览(55)
  • OSI体系结构和TCP/IP体系结构

     在第一章( 计网第一章 )的时候,曾经提到过OSI体系结构和TCP/IP体系结构,并对它们进行了简单的对比。这篇博客在其基础上进行更深层次的理解。 计算机网络在逻辑功能上可以分为通信子网和资源子网两部分。 事实上,OSI将低三层称为通信子网,即为了联网而附加的通

    2024年02月07日
    浏览(75)
  • UNIX基础知识:UNIX体系结构、登录、文件和目录、输入和输出、程序和进程、出错处理、用户标识、信号、时间值、系统调用和库函数

            所有的操作系统都为运行在其上的程序提供服务,比如:执行新程序、打开文件、读写文件、分配存储区、获得系统当前时间等等         从严格意义上来说,操作系统可被定义为一种软件,它控制计算机硬件资源,提供程序运行的环境。我们通常将这种软件称为

    2024年02月13日
    浏览(53)
  • 【体系结构】山东大学计算机体系结构知识点清单

    涵盖所有考点,复习绝对高效,点赞+留邮箱获取pdf版本 1. 计算机系统的层次结构 语言实现的两种基本技术: 翻译:先把 N+1 级程序全部转换成 N 级程序后,再去执行新产生的 N 级程序,在执行过程中 N+1 级程序不再被访问。 解释:每当一条 N+1 级指令被译码后,就直接去执

    2024年02月11日
    浏览(67)
  • 计算机网络七层体系结构(OSI七层结构)、TCP/IP四层模型、网络五层体系结构

    计算机网络七层体系结构(OSI七层结构)、TCP/IP四层模型、网络五层体系结构 七层体系结构(OSI七层结构) :为了使全世界不同体系结构的计算机能够互联,国际化标准组织ISO提出开放系统互联基本参考模型,简称OSI,即所谓的7层协议体系结构。 TCP/IP四层模型 :是由实际

    2024年02月06日
    浏览(61)
  • 计算机网络——计算机网络体系结构(2/4)-分层的必要性(五层协议原理体系结构)

    目录 物理层 数据链路层 网络层 运输层 应用层 计算机网络是个非常复杂的系统。 早在最初的ARPANET设计时就提出了分层的设计理念。 \\\"分层\\\"可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。 下面,我们以五层原理结构体系

    2024年02月07日
    浏览(55)
  • JVM 体系结构

    JVM: 跨平台语言 需要不同语言由自己编译器,生成符合 JSR-292 JVM规范的字节码文件,即可在 Java 虚拟机中运行  多语言混合编程: Java 平台上的多语言混合编程正成为主流,通过特定领域的语言去解决特定领域的问题是当前软件开发应对日趋复杂的项目需求的一个方向 每个应

    2024年02月03日
    浏览(47)
  • 集合体系结构

    List系列集合:添加的元素有序,可重复,有索引 Collection:是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的 set系列集合:添加的元素无序,不重复,无索引   方法名 说明 public boolean add(E e) 把给定的对象添加到当前集合中 public void clear() 清空集合中所有的

    2024年02月09日
    浏览(46)
  • 冯诺依曼体系结构

    冯·诺依曼体系结构(von Neumann architecture)是现代计算机体系结构的基础,也是目前广泛应用的计算机体系结构之一。它是由物理学家、数学家冯·诺依曼在1945年提出的,被认为是现代计算机的奠基之作。冯·诺依曼体系结构具有存储程序和通用性的特点,这意味着计算机的指

    2023年04月23日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包