TryHackMe-SOC-Section 8: web安全监控
Section 8: web安全监控
网络安全基础知识
为什么选择网络?
从桌面应用到网络应用的转变已经持续了几十年。20世纪90年代,由于速度和网络连接的限制,桌面应用是主流。随着网络技术的进步,21世纪初,动态网络应用得到了更广泛的应用,涵盖了电子邮件、社交媒体和银行业务等领域。2010年代, 云计算和软件即服务(SaaS )蓬勃发展,如今,几乎所有事情都可以通过浏览器完成。

从安全角度来看
向Web应用程序的转变带来了诸多显著优势,包括更高的可访问性、更快的更新速度、更好的兼容性以及更低的用户资源占用。试想一下,您可以通过浏览器浏览在线市场和社交网络、玩游戏、编辑图像和视频,甚至运行虚拟机。然而,这些优势也带来了安全方面的权衡。网络越强大、覆盖范围越广,攻击者可利用的机会也就越多。
Web应用程序是攻击者最常利用的入口点之一,因为它们始终可用且暴露在外。它们通常连接到后端系统,例如数据库和其他基础设施,这为攻击者提供了极具破坏性的攻击机会。一个存在漏洞的Web应用程序通常是更大规模攻击序列的第一步。让我们来看看Web应用程序所有者及其用户面临的风险。
| 作为 Web 应用程序所有者 | 作为 Web 应用程序用户 |
|---|---|
| 您的Web应用程序始终在线,必须全天候24小时保持安全。 | 您的数据存储在网络应用程序中,可能存在安全隐患。 |
| 世界各地的人都可以随时访问您的应用程序。 | 一旦您的浏览器遭到入侵,您的所有帐户都将面临风险。 |
| 要及时了解如此多的新出现的威胁是一项挑战。 | 数据泄露可能导致身份盗窃或经济损失。 |
| 您有责任保护用户数据的安全。 | 您的隐私可能会永久受到侵犯。 |
真实案例
2017年,由于Apache漏洞 ,Equifax公司近1.5亿美国人的敏感客户数据遭到泄露。攻击者利用该漏洞,得以访问存储宝贵客户数据的内部数据库。
Capital One在2019年也遭遇过类似规模的数据泄露事件,当时配置错误的Web应用程序防火墙(WAF)导致超过1亿客户的敏感个人和财务信息泄露。此次配置错误使得内部人员能够访问公司的云基础设施和数据库。
员能够访问公司的云基础设施和数据库。
请回答以下问题。
过去二十年间,应用程序是否从桌面端转移到了网页端(yea/nay)?
Yea
谁最终负责确保Web应用程序中用户数据的安全?
Web App Owner
Web 基础架构
当您访问网站时,您的浏览器会向网络服务器发送请求。服务器处理该请求,验证访问权限,并向用户返回响应。该响应可以是网页、图像,也可以是搜索结果或您的帐户信息等数据。这种请求-响应循环是网络运行的基础。攻击者可以通过向服务器发送大量请求、绕过访问控制,甚至诱骗服务器执行恶意命令来滥用此请求-响应循环。
Web服务的组成部分
例如,任何像tryhackme.com这样的网络服务都需要三个主要组件才能运行。
- 应用程序:决定网站外观和功能的代码、图像、样式和图标。
- Web服务器:该组件托管应用程序。它监听请求并向用户返回响应。
- 主机:运行 Web 服务器和应用程序的底层操作系统, Linux 或 Windows。

接下来,我们将研究可用于保护这三个组件的安全措施。
Web服务器
当您访问网站时,您的网络浏览器会向网络服务器发送请求,如上所述。网络服务器监听传入的请求并返回相应的响应。网络服务器位于网站和应用程序的前端,是互联网基础架构的关键组成部分。由于它们公开暴露并处理所有传入的网络请求,因此网络服务器也成为攻击者的常见目标。
以下是一些您最常遇到的网络服务器。
- Apache:最流行的网络服务器,用于托管简单的网站和博客,最常见的是 WordPress。
- Nginx:高性能Web应用程序的行业标准。Netflix、Airbnb和GitHub等公司都在使用 它。
- Internet 信息服务 (IIS):微软开发的 Web 服务器,常用于企业环境。

请回答以下问题。
你的网络浏览器向服务器发送什么信息才能接收网页?
Request
最常用于托管 WordPress 网站的网络服务器是什么?
apache
运行 Web 服务器和应用程序的操作系统和环境叫什么?
Host Machine
保护网络
最佳实践
在保护网站和 Web 应用程序时,可以使用多种安全措施。一些解决方案提供可见性,而另一些则可以主动阻止或限制攻击,这通常被称为缓解措施。回顾任务 3,我们讨论了任何 Web 服务的三个基本组成部分:应用程序、Web 服务器和主机,现在让我们来考察每个组件可用的保护措施。
保护应用程序
- 安全编码:避免使用不安全的函数,确保正确处理错误,并删除敏感信息。
- 输入验证与清理:验证并清理用户输入,以防止注入攻击。
- 访问控制:根据用户角色限制访问权限。
保护Web服务器
- 日志记录:使用访问日志详细记录所有网络请求。
- Web应用程序防火墙(WAF):根据定义的规则过滤和阻止有害流量。
- 内容分发网络 (CDN):减少对服务器的直接暴露,并使用集成的 WAF。
保护主机
- 最小权限原则:使用低权限用户来提供服务。
- 系统加固:禁用不必要的服务并关闭未使用的端口。
- 防病毒:添加终端级保护,阻止已知恶意软件。
所有三个组件的安全提示
- 强身份验证:不要让任何人访问您的代码、管理面板或主机。
- 补丁管理:确保您的应用程序依赖项、Web 服务器和主机都是最新的。
日志记录
Web 服务器可以为收到的每个请求创建日志。我们称这些日志为访问日志,它们在安全方面极其重要,因为它们会跟踪与服务器的每次交互信息,包括客户端的 IP 地址、时间戳、请求的页面或数据、服务器的响应状态以及用户代理。这些字段在调查中发挥着重要作用,可以帮助分析人员检测潜在的恶意活动并追踪攻击者的行为。
让我们来看一系列可能在访问日志中出现的正常事件,以便了解我们可以观察到的数据类型。
请注意,GET请求用于从服务器检索资源,例如特定的网页。
POST请求用于向服务器提交数据,例如登录凭据。
- 用户通过客户端 IP
10.10.10.100访问网站的主页/index.html。 - 接下来,他们导航到登录页面
/login.html。 - 然后他们输入自己的凭证并提交表格,
POST请求即表示提交成功。 - 最后,他们通过以下方式访问他们的帐户页面
/myaccount.html:
虽然这一系列事件在意料之中,并不异常,但你可以看出这些日志的详细程度可以帮助分析人员和事件响应人员重建可能的攻击序列。

请回答以下问题。
网络安全中哪个概念是指阻止或限制威胁造成的损害?
Mitigation
哪些安全控制措施包括确保所有软件和组件都是最新版本?
Patch Management
防御系统
内容分发网络(CDN)
CDN将缓存内容存储在距离用户更近的服务器上,并通过这些服务器提供缓存内容,从而降低延迟。想象一下,您有一个位于中心位置的主服务器。该主服务器向全球各地的边缘服务器提供信息,以便您的客户能够更快、更安全地访问数据。除了速度之外,CDN 还能在安全性方面发挥作用,它充当用户和源服务器之间的缓冲区。
安全福利
- IP地址掩码:隐藏源服务器IP地址,使攻击者更难锁定目标。
- DDoS防护:CDN 可以吸收大量流量,从而降低拒绝服务攻击的效果。
- 强制使用 HTTPS:大多数 CDN 默认强制使用TLS加密通信。
- 集成式 WAF:许多 CDN,包括 Cloudflare CDN、 Amazon CloudFront 和 Azure Front Door,都集成了 Web 应用程序防火墙。
从本质上讲,CDN 使 Web 应用程序能够更高效、更安全地向客户提供数据。

Web应用程序防火墙(WAF)
WAF( Web应用防火墙)是一种强大的工具,可以作为网站和Web应用程序的另一层保护。它们会检查传入的HTTP流量,并根据安全规则阻止或记录潜在的有害请求。可以把它想象成酒吧或夜店的保安。每个想要进入的人(Web请求)都必须经过保安(防火墙)的检查。任何不符合标准要求的人(任何请求)都将被拒绝。
让我们仔细看看作为防御者我们可以使用的 WAF 类型,然后深入了解它们的功能。
- 基于云的(反向代理):位于 Web 服务器前端。这类 WAF 易于部署且具有出色的可扩展性。
- 基于主机:软件直接部署在 Web 服务器上,并为每个应用程序提供控制。
- 基于网络的:位于网络边界的物理或虚拟设备。更适合企业环境。
功能
如上所述,WAF(Web应用防火墙)会检查HTTP请求,以检测异常、攻击或已知的可疑模式。以下列出了一些常用的方法,以及可能被阻止的请求示例。
| WAF 功能 | 检测方法 | 例子 |
|---|---|---|
| 基于特征的检测 | 与已知的攻击模式或有效载荷相匹配。 | 请求的用户代理与已知工具匹配,sqlmap/1.8.1 |
| 基于启发式的检测 | 分析请求的上下文和行为 | 包含特殊字符的长查询字符串search?q=%3Cscript%20(1) |
| 异常与行为分析 | 标记偏离正常交通行为的情况 | 单个 IP 地址在短时间内反复尝试登录 |
| 位置和 IP 信誉过滤 | 利用位置和威胁情报来阻止IP地址 | 来自您正常业务区域之外的 IP 地址的请求 |
上表并不详尽,因为检测方法不断发展,并且可以根据 Web 应用程序所有者的具体需求创建自定义规则。
下图是 Cloudflare 控制面板的截图tryhackme.thm,重点展示了安全面板。图中显示了过去 24 小时内的所有请求,包括被集成 Web 应用防火墙拦截的请求。

防病毒软件(AV)
人们常常误解杀毒软件是一种万能的保护措施,但它们的主要目的是保护终端设备(例如台式机、笔记本电脑和服务器)免受已知恶意文件和程序的侵害。大多数杀毒软件都依赖于基于特征码的检测,这意味着它们会将文件与已知恶意软件或模式的数据库进行比对。
虽然网络攻击通常针对应用层而非主机,但正如任务 3 中所述,杀毒软件在主机保护中仍然发挥着重要作用。它们可以帮助检测恶意文件上传,例如 Web Shell、后渗透工具和其他恶意软件。杀毒软件只是更广泛的纵深防御策略中的一层,应与其他安全措施结合使用,以提供更强大的保护。
请回答以下问题。
哪种类型的Web应用程序防火墙与应用程序本身运行在同一系统上?
Host-Based
哪种常见的WAF检测技术通过将传入请求与已知的恶意模式进行匹配来实现?
Signature-Based
检测网络攻击
通过日志和网络流量分析,探索网络攻击及其检测方法。
客户端攻击

客户端攻击依赖于利用用户行为或用户设备的漏洞。这些攻击通常会利用浏览器漏洞或诱骗用户执行不安全操作,从而获取账户访问权限并窃取敏感信息。由于用户设备上可能存储着重要数据,因此客户端攻击一旦成功,就可能导致数据丢失。随着对动态、多功能 Web 应用程序的需求不断增长,企业正在集成更多第三方插件,这不仅扩大了浏览器的攻击面,也为客户端攻击提供了更多机会。
想象一下,你正在浏览自己最喜欢的电商网站,点击了一张感兴趣的产品图片。你浑然不知,攻击者已在页面中隐藏了一个恶意窗口,该窗口会在后台加载另一个网站。这个隐藏的网站运行恶意代码,窃取你的登录会话 cookie。一切看起来都很正常,但攻击者现在却能冒充你并访问你的账户!
SOC 局限性
分析人员可用的工具,例如服务器端日志和网络流量捕获,几乎无法提供用户浏览器内部活动的可见性。如上所述,客户端攻击发生在用户系统上,这意味着攻击者可以在不生成安全运营中心 ( SOC)可检测到的可疑HTTP请求或网络流量的情况下执行恶意代码、窃取信息或操纵环境。 因此, 如果没有额外的浏览器端安全控制或端点监控,从SOC 的角度来看,检测这些攻击通常很困难,甚至是不可能的。

常见的客户端攻击
- 跨站脚本攻击 ( XSS ) 是 最常见的客户端攻击,攻击者在受信任的网站上运行恶意脚本,并在用户的浏览器中执行。如果您的网站有一个未过滤输入的评论框,攻击者可以发布类似这样的评论:
Hello <script>alert('You have been hacked');</script>。当访客加载页面时,脚本会在他们的浏览器中运行,并弹出窗口。在实际攻击中,攻击者可能窃取 cookie 或会话数据,而不是无害的弹出窗口。 - 跨站请求伪造 ( CSRF ):浏览器被诱骗代表受信任的用户发送未经授权的请求。
- 点击劫持:攻击者在合法内容上叠加不可见的元素,使用户误以为自己正在与安全的内容进行交互。
请回答以下问题。
哪一类攻击依赖于利用用户的行为或设备漏洞?
Client-Side
最常见的客户端攻击是什么?
XSS
服务器端攻击

服务器端 攻击依赖于利用Web服务器、应用程序代码或支持网站或Web应用程序的后端系统中的漏洞。客户端攻击操纵用户与网站的交互,而服务器端攻击则侧重于利用系统本身的漏洞。攻击者通过利用缺陷和漏洞、服务器逻辑、错误配置或输入处理,可以获得访问权限、窃取信息并对正在运行的服务造成损害。
您最常用的网站很可能包含许多允许用户输入信息的表单。这些表单可能是需要输入用户名或密码的登录表单,也可能是用于搜索历史订单或特定产品的搜索表单。试想一下,如果网站处理其中一个表单的输入时出现错误,会造成怎样的后果?这种漏洞可能使攻击者能够访问存储在后端数据库中的敏感客户信息或财务信息。
捕获服务器端攻击
对于防御者而言,应对服务器端攻击的一大优势在于,只要知道从哪里入手,攻击就会留下痕迹。发送到应用程序的每个 Web 请求都会被服务器处理,并记录在日志或其他监控系统中。这些请求也会在网络中传输,这意味着网络流量可以揭示可疑行为。在接下来的任务中,我们将从日志和网络流量两方面识别服务器端攻击。

常见的服务器端攻击
- 暴力破解攻击是指攻击者反复尝试不同的用户名或密码,试图未经授权访问账户。攻击者通常使用自动化工具快速发送这些请求,从而能够尝试大量的凭据和常用密码。 2021年, T-Mobile 遭遇了一起由暴力破解攻击引发的数据泄露事件,导致超过5000万T-Mobile用户的个人身份信息( PII )被泄露。
- SQL 注入(SQLi)攻击是指攻击网站背后的数据库。当应用程序使用字符串拼接而非参数化查询来构建查询时,SQLi漏洞就会发生,攻击者可以利用该漏洞篡改预期的SQL命令,从而访问或操纵数据。2023年,MOVEit中的SQLi被利用,影响了超过2700家机构,其中包括美国政府机构、英国广播公司(BBC)和英国航空公司。
- 命令注入是一种常见的攻击,当网站未经检查就将用户输入传递给系统时,攻击者可以偷偷植入命令,使服务器以与应用程序相同的权限运行这些命令。
请回答以下问题。
哪一类攻击依赖于利用Web服务器中的漏洞?
Server-Side
哪种服务器端攻击允许攻击者滥用表单来转储数据库内容?
SQLi
基于日志的检测
日志是检测网络攻击的有力工具。发送到网络服务器的每个请求都会在其访问日志和错误日志中留下痕迹。防御者可以通过查看日志条目来发现扫描、漏洞利用或其他攻击的模式。在本任务中,您将回顾访问日志格式的基础知识,了解各种攻击如何在网络服务器访问日志中体现,然后在真实的攻击场景中练习您的技能。
访问日志格式
以下是一个访问日志示例条目。根据上下文,每个字段都可以指示良性流量或恶意流量。虽然并非所有访问日志都遵循此格式,但它们通常包含以下信息:
| 日志字段 | 示例指标 |
|---|---|
| 1. 客户端 IP 地址 | 已知恶意或超出预期地理范围 |
| 2. 时间戳和请求页面 | 在不寻常的时间提出的请求或在短时间内重复提出的请求 |
| 3. 状态码 | 反复404出现“找不到页面”的提示。 |
| 4. 响应大小 | 反应幅度明显小于或大于正常值 |
| 5. 推荐人 | 不符合常规网站导航的引用页面 |
| 6. 用户代理 | 过时的浏览器版本或常见的攻击工具(例如sqlmap,wpscan) |
![]() |
日志中的攻击
接下来,我们将分析一个简化的攻击序列示例。日志条目序列仅显示攻击者的请求;然而,在实际场景中,良性流量会占据日志条目的绝大部分,因此,培养敏锐的洞察力,在正常活动中识别恶意模式至关重要。此外,需要注意的是,在下面的示例中,SQL注入攻击中的查询字符串已被记录,因此您可以查看完整的SQL注入有效载荷。
- 攻击者使用目录模糊测试来检测潜在的可利用目录和表单。
200响应代码表示攻击者已成功找到目标。 - 接下来,攻击者利用
login.php暴力破解攻击找到的表单。请注意POST快速连续的重复请求。最后一个POST请求的响应代码不同,302 Found在本例中,该代码表示登录尝试成功。然后,页面重定向到用户的帐户页面/account。 - 攻击者一旦获得账户访问权限,就会尝试对表单进行两次 SQL 注入攻击。如果应用程序动态构建 SQL 查询
' OR '1'='1而不是使用参数化查询,攻击者就可以转储数据库。1' OR 'a'='a``/search

日志限制
访问日志虽然很有用,但它们并非总能完整记录请求的内容,尤其是请求体 POST 或 GET 请求内容。例如,登录尝试在访问日志中可能显示为:
10.10.10.100 [12/Aug/2025:14:32:10] "POST /login HTTP/1.1" 200 532 "/home.html" "Mozilla/5.0"
上述示例日志显示了请求方法、请求的页面和状态码,但没有显示请求中提交的实际凭据或有效负载。重要的是,访问日志不会记录实际的POST请求体数据(例如提交的凭据),因此调查人员只能看到请求已发生。 GET请求可能会记录完整路径和查询字符串,但某些日志格式根本不会包含这些信息。这完全取决于所使用的服务器软件和日志记录配置。
调查
小型在线银行平台TryBankMe遭遇数据泄露。攻击者入侵了该平台,并在暗网论坛上泄露了敏感的客户数据。管理层认为入侵始于公司公共网站,而找出具体入侵途径则需要您自行探索。
首先打开access.log桌面上的文件。
你的任务是分析日志,并追溯攻击者的步骤,以揭示此次入侵是如何发生的。祝你好运!
请回答以下问题。
攻击者在执行目录模糊测试时的用户代理是什么?

直接看目录爆破的时候用的ua是什么即可
FFUF v2.1.0
攻击者对哪个页面进行了暴力破解攻击?

# 统计一下即可知道
cut -d' ' -f7 access.log | sort -nr | uniq -c
/login.php
攻击者在表单上使用的完整、解码后的/changeusername.phpSQLi 有效载荷是什么?
拿到/account/changeusername.php?q=%25%27+OR+%271%27%3D%271解码即可

%' OR '1'='1
基于网络的检测
网络流量分析使分析人员能够检查客户端和服务器之间交换的原始数据。通过捕获和检查数据包,分析人员可以更详细地观察攻击行为,包括底层传输协议和应用程序数据本身。网络捕获比服务器日志更详细,揭示了每个请求和响应背后的数据。例如,这可能包括完整的HTTP标头、POST 请求体、Cookie 以及上传和下载的文件。
依赖加密的协议,例如 HTTPS 和SSH,限制了在无法访问解密密钥的情况下可以查看的数据包有效载荷内容。在本示例中,我们将重点关注HTTP流量。
网络流量攻击
我们先回顾一下上一个任务中的攻击序列,并比较它在 Wireshark 中的显示效果。您可以使用多种不同的过滤器来突出显示您感兴趣的字段。下面,我们10.10.20.200使用过滤器筛选了目标 IP 地址和 User-Agent http.user_agent。
回忆一下事件经过。
- 使用目录模糊测试查找有效的目录或表单
- 暴力破解尝试,数据包 13 成功登录
- SQL注入尝试

现在我们已经分析了事件顺序,接下来让我们查看数据包详情,以收集更多攻击证据。首先,我们来看一下暴力破解尝试。如果您还记得,日志显示我们多次POST请求该login.php表单。现在我们可以看到攻击者尝试登录时使用的实际用户名和密码。查看最后一次表单请求(数据包 13),我们知道这次请求成功了,可以看到攻击者找到了有效的密码password123。这个密码非常不安全,尤其是对于管理员帐户而言!

接下来,我们来更详细地分析一下攻击中的第一次 SQL 注入尝试。通过检查 HTTP 数据包,我们可以清楚地看到攻击者使用的有效载荷以及攻击结果。在本例中,有效载荷' OR '1'='1允许转储 Users 表,并以明文形式向攻击者显示用户的 First name 和 Surname!请注意,我们还可以使用 Wireshark 分析 MySQL 协议流量,并显示有效载荷和返回结果。

调查仍在进行中。
虽然您的日志分析发现了一些攻击证据,但您无法确定是哪个用户受到了攻击,也无法确定实际窃取了哪些数据。幸运的是,我们有攻击发生时的网络流量抓包数据。请深入查看traffic.pcap用户桌面上的文件,继续您的调查。在查看网络流量时,请牢记您之前调查中的攻击顺序。祝您一切顺利!
尖端:
在 Wireshark 中使用http过滤器,仅查看HTTP流量。
您还可以右键单击任何数据包 → 跟踪HTTP流,以重建客户端和服务器之间的完整请求和响应。
请回答以下问题。
攻击者在暴力破解攻击中成功识别出的密码是什么?

因为他输入完这个密码后就跳转页面了
astrongpassword123
攻击者利用 SQL 注入在数据库中找到了什么 flag?

THM{dumped_the_db}
Web应用程序防火墙

Web 应用防火墙 (WAF) 通常是网站和 Web 应用的第一道防线。到目前为止,我们主要关注的是检测和分析恶意活动。现在,我们将重点转向一种最有效的缓解工具。WAF 充当 Web 应用的守门人,它会检查完整的请求数据包,类似于 Wireshark,但它能够解密TLS流量并在其到达服务器之前进行过滤。
规则
WAF(Web应用防火墙)会检查并根据预定义的规则决定是否允许Web请求或完全阻止它。我们来看一下几种防火墙规则。
| 规则类型 | 描述 | 示例用例 |
|---|---|---|
| 阻止常见攻击模式 | 阻止已知的恶意载荷和指标 | 阻止恶意用户代理:sqlmap |
| 拒绝已知的恶意来源 | 利用 IP 信誉、威胁情报或地理位置封锁来阻止危险流量 | 屏蔽近期僵尸网络活动中的IP地址 |
| 自定义规则 | 根据您的具体应用需求量身定制 | 仅允许 GET/POST 请求/login |
| 限速与滥用预防 | 限制请求频率以防止滥用 | 限制每个 IP 地址每分钟的登录尝试次数为 5 次。 |
假设您注意到重复出现带有特定 User-Agent 字符串的GET请求。SQLMap是一款用于检测和利用SQL注入漏洞的自动化工具。在分析网络流量后,您发现这些请求包含 SQLi 有效载荷。/changeusername``sqlmap/1.9
您可以创建一条规则来阻止任何与 User-Agent 字符串匹配的内容sqlmap:
If User-Agent contains "sqlmap"
then BLOCK
这是一个简单的例子,现代的Web应用防火墙(WAF)会自动检测并阻止已知的可疑用户代理。不过,您可以根据具体的应用程序或威胁场景定制此类规则,从而在不影响网站正常流量的情况下阻止恶意活动。
挑战-应对机制
WAF并非总是需要直接拦截可疑请求。例如,它们可以使用验证码(CAPTCHA)来验证请求是否来自真实用户而非机器人。考虑到恶意机器人流量占全球网络流量的37%,这项功能尤为重要。这种方法尤其适用于那些更有可能拦截合法网络流量的防火墙规则。

整合已知指标和威胁情报
许多现代 Web 应用防火墙 (WAF) 解决方案都内置了旨在缓解OWASP Top 10安全风险的规则集,我们之前已经介绍过其中一些风险。WAF 还利用威胁情报源自动阻止来自已知恶意 IP 地址和可疑用户代理的请求。它们会定期更新以应对新出现的威胁,包括来自已知APT组织的威胁和最近发现的 CVE 漏洞。了解一下Cloudflare 如何基于全球威胁情报,维护来自僵尸网络、VPN、匿名器和恶意软件等来源的精心整理的 IP 列表。
请回答以下问题。
WAF(网络接入过滤器)检测和过滤哪些内容?
Web Requests
创建自定义防火墙规则,阻止任何User-Agent匹配项"BotTHM"。
IF User-Agent CONTAINS "BotTHM" THEN block
检测 Web Shell
Web Shell 概述
什么是 Web Shell?
要有效检测 Web Shell,重要的是要了解它们是什么,攻击者如何部署它们,以及它们利用的漏洞。
Web Shell 是一种上传到目标 Web 服务器的恶意程序,它使攻击者能够远程执行命令。Web Shell 通常既可以作为初始访问手段(通过文件上传漏洞),也可以作为持久化机制。
一旦获得对被入侵服务器的访问权限,攻击者就可以使用 web shell 沿着攻击链移动,执行侦察、提升权限、横向移动和窃取数据。
以下是一个名为 web shell 的简单示例awebshell.php,它可以通过 Web 界面远程运行命令。请注意,该 Web shell 位于/uploads目标服务器 10.10.10.100 的目录中。

Web Shell部署
攻击者要上传并执行 Web Shell,需要利用文件上传漏洞、系统配置错误或事先获得系统访问权限。当应用程序未能验证文件类型、扩展名、内容或目标位置时,就会出现这些漏洞。Web Shell 通常用作初始访问途径,但如果攻击者已经攻破系统并希望保持长期访问权限,它们也可以作为持久化机制。
想象一下,有一个简单的网站,允许用户上传宠物照片。该网站旨在存储图片。然而,如果开发过程中安全措施不足,攻击者可能会上传类似 Web Shellshell.php或Web Shellmydog.aspx的恶意程序,从而获得对服务器的命令执行权限。
野外实例
Hafnium 和 ProxyLogon
Hafnium是一个总部位于中国的 APT 组织,他们.aspx向 Windows Exchange 服务器上传了 web shell,这些 web shell 位于诸如 . 之类的目录中\inetpub\wwwroot\aspnet_client\。他们还被发现修改了.aspx诸如 . 之类的目录中的现有文件\install_path\FrontEnd\HttpProxy\owa\auth\。
一旦 Web Shell 成功部署,Hafnium 就会继续执行命令、进行侦察、转储凭据、通过新用户帐户进一步建立持久性、横向移动、窃取数据,并掩盖其踪迹以逃避检测。
Conti勒索软件攻击
者利用了Microsoft Exchange中类似的漏洞,将aspnetclient_log.aspx文件上传到与Hafnium相同的\aspnet_client\目录。在首次上传Web Shell后的几分钟内,他们又上传了一个备份Web Shell,并绘制出了网络中计算机、域控制器和域管理员的分布图。
请回答以下问题。
Web Shell 与 MITRE ATT&CK 持久化子技术中的哪一项相关?
T1505.003
针对 Microsoft Exchange 的 Web Shell 通常使用什么文件扩展名?
.aspx
Web Shell 的结构分析
合法函数滥用:
Web shell 依赖于对程序中合法函数的滥用。PHP
中的系统执行函数,例如 setup()、setup() 、 setup() 和 setup(),可以被滥用以获取命令执行权限。shell_exec()``exec()``system()``passthru()
幕后揭秘:
这是一个用 PHP 编写的简单 Web Shell。让我们来看看它的功能。
- 检查
cmdURL 中是否存在该参数。?cmd=whoami - 将用户提供的命令存储在变量中
$cmd - 使用以下命令执行命令
shell_exec() - 显示输出
- 用户界面的HTML代码
- 执行命令
- 输出

Web shell 的复杂程度和功能各不相同。它们可以是简单的单行命令程序,通过 URL 执行命令;也可以是功能齐全的界面,具有图形用户界面 (GUI)、密码保护和内置文件管理器。
Web Shell 的实际应用
我们已在目标机器上部署了一个 Web Shell http://MACHINE_IP:8080/files/awebshell.php。
您可以通过浏览器或命令行直接访问它,使用命令行工具curl。
如果您通过命令行访问 Shell,请务必对命令进行 URL 编码(/awebshell.php?cmd=<encoded_command>)。Cyber chef可以提供帮助。
例如: ls -la会变成ls%20-la
请回答以下问题。
进入 shell 并运行 whoami命令确定您有权访问哪个帐户。
www-data
ls列出目录内容并使用and命令查找 flag cat。
THM{W3b_Sh3ll_Usag3}
基于日志的检测
Web服务器日志
Web shell 依赖于对 Web 服务器的滥用,因此 Web 服务器日志自然是我们寻找证据的起点。我们将探讨在Apache和 Nginx 等常用 Web 服务器中应该关注哪些方面。了解正常行为和可疑行为之间的区别有助于发现恶意活动。
虽然 Web 服务器日志的格式因服务而异,但访问日志通常遵循类似的结构,并包含以下信息。
远程日志名称字段通常用连字符 (-) 表示,因为它是一个遗留字段,现在很少使用。但是,为了兼容性,它仍然会出现在访问日志中。同样,已验证用户字段通常也显示为连字符,除非服务器要求事先进行身份验证,在这种情况下,它可能包含实际的用户名。

网络指标
非常规HTTP方法 和 请求模式
- 频繁的 GET 请求可能意味着攻击者正在探测上传 shell 的有效位置。
- 在重复 GET 请求后,向有效的上传位置发出 POST 请求
- 对同一文件重复发出 GET 或 POST 请求可能表明存在 Web Shell 交互。
需要了解的请求方法。
| 请求方法 | 正常使用 | 可能存在滥用行为 |
|---|---|---|
| GET | 获取资源 | 用于侦察或与 Web Shell 交互 |
| POST | 向服务器提交数据 | 上传或与 Web Shell 交互 |
| PUT | 上传或替换服务器上的文件 | 上传一个 Web Shell |
| DELETE | 从服务器中移除资源 | 清理方法 |
| OPTIONS | 支持的请求方法 | 侦察 |
| HEAD | 类似于 GET 请求,但只返回请求头。 | 检测文件 |
让我们利用目前讨论过的指标,逐步分析一个潜在的 Web Shell 攻击序列。
请注意,每个请求都使用相同的客户端 IP 和用户代理。响应代码和时间戳也需要记录下来。
200 OK
404 Not Found

可疑的用户代理和 IP 地址
用户代理用于识别向 Web 服务器发出请求的客户端,并提供有关浏览器、设备和操作系统的信息。
- 修改后的用户代理:
Mozilla/4.0+(+Windows+NT+5.1)缩写为Mozilla/4.0 - 过时的用户代理:
Mozilla/4.0 (compatible; MSIE 6.0)MSIE 6.0 发布于 2001 年 - 被列入黑名单的用户代理:
curl/1.XX.X例如wget/1.XX.X - 可疑的IP地址:网络通常只接收内部流量,因此外部IP地址会被视为可疑地址。
查询字符串
是 URL 的一部分,用于将值与参数关联起来。`example.php?query=somequery
- 异常长的或可疑的查询字符串,尤其是包含类似
cmd=“或”之类的关键字。exec= - 编码后的查询字符串 经过 Base64 编码后
?query=whoami会变成这样。Cyber chef是一个优秀的工具,可以解码 Base64 以及许多其他形式的编码和混淆。?query=d2hvYW1p
缺少引荐来源网址
引荐来源网址显示用户在链接到当前页面之前访问的网址。
- 缺少引用页可能表明存在 Web Shell 活动。
- 来源网址缺失可能存在一些合理原因(例如,浏览器出于隐私考虑会屏蔽来源网址,或者直接访问某个网址)。
包含上述部分特征的可疑网络请求示例。
- 已知的恶意或不受信任的IP地址。
- 时间戳异常。可能已超出正常工作时间。
- 向恶意文件发送带有搜索查询字符串的 POST 请求。
- 没有来源网址。因此,此页面是直接访问的。(但这并非总是有效的指示因素)
- 可疑的用户代理字符串,通常与网络浏览器无关。

审计
这是一个 Linux 原生实用程序,用于跟踪和记录事件,从而创建审计跟踪。可以为其创建规则auditd,以确定哪些内容会被记录到日志中audit.log。规则可以高度配置,以匹配特定条件,例如特定程序何时运行或特定目录中的文件何时被修改。在下面的示例中,ausearch使用 cd 命令搜索与web_shell规则匹配的任何日志。
Ausearch 在审计日志中的应用
user@tryhackme$ ausearch -k web_shell
time->Wed Jul 23 06:20:36 2025 // A log matching the web_shell rule
"name = /uploads/webshell.php"
"OGID = www-data"
网络与审计相关性
有效检测 Web Shell 需要关联多个日志源。将 Web 访问日志和错误日志与 auditd 结合使用,可以提供更深入的洞察,并确认文件是否被创建、修改或执行,以及是由哪个用户或进程执行的。WebPOST日志中的可疑请求可以关联到包含syscallcreat或execvesyscall 的审计事件,表明某个脚本写入了文件或运行了命令。结合这些信息,有助于我们更清晰地了解攻击过程。
利用SIEM平台
安全信息和事件管理 ( SIEM ) 平台的一些优势包括:
- 集中式日志收集和关联,这在处理多种不同类型的日志时尤其有用。
- 可以创建有针对性的查询来发现恶意活动的迹象,包括 web shell。
- 使分析人员能够更高效地搜索和分析日志。
请回答以下问题。
URL 中哪一部分将值与参数关联起来,并且可以作为 web shell 活动的有效指标?
query strings
auditd 系统调用中,哪个可以确认在向某个服务器发出可疑的 POST 请求后,文件是否已写入磁盘/upload.php?
creat
超越日志
文件系统分析
攻击者的Web Shell必定存储在某个地方。分析Web服务器文件对于识别已上传的Web Shell或定位被修改以包含Web Shell有效载荷的文件至关重要。
需要注意的是,某些平台(例如WordPress和Django)将页面内容存储在数据库中,而不是文件系统中,因此恶意代码可能被注入到文章、主题或设置中,而不会出现在常规的文件系统搜索中。
以下是一些常见的 Web 服务器目录,Web shell 通常放置在这些目录中:
- Apache:
/var/www/html/大多数Linux发行版的默认服务器 - Nginx:
/usr/share/nginx/html/许多Linux系统中的默认配置
即使配置了自定义根路径,攻击者仍然可以猜测或扫描常见的上传目录,例如 /etc/uploads/、/etc/uploads/ /uploads/或/images/ /etc/ uploads/,/admin/就像我们在任务 3 中看到的那样。如果文件权限配置不安全,
临时目录(例如 /etc/ uploads /tmp /)也可能被滥用。
攻击者可能利用可疑或随机的文件名
来逃避检测。请警惕那些与标准应用程序文件名不同的文件名。
- 监控具有可执行扩展名的文件,例如
.php&.jsp - 警惕使用双重扩展名来伪装恶意文件
image.jpg.php
您可以使用一些实用命令find来搜索最近修改过的脚本。在下面的示例中,我们使用 --date 选项搜索/var/www目录中.php在两个特定日期之间修改过的文件-newerct。另一个实用工具 wp_config.php``grep可以用来追踪eval(文件中可疑的函数,例如 wp_config.php。在下面的示例中,我们使用它来搜索 WordPress 目录wp-content。
使用 find 和 grep 命令查找特定文件
user@tryhackme$ find /var/www -type f -name "*.php" -newerct "2025-07-01" ! -newerct "2025-08-01"
/var/www/html/uploads/awebshell.php // Web shell created between the dates above.
user@tryhackme$ grep -r "eval(" wp-content
/wp-content/uploads/awebshell2.php :eval(b64_dd($['cmd'])); // Web shell containing eval(
网络流量分析
网络流量分析使分析人员能够超越日志的局限,通过检查客户端和服务器之间交换的数据,更深入地了解攻击者的行为。通过检查数据包有效载荷,可以更详细地观察攻击者的行为。
日志分析中分析师需要关注的许多指标也可以应用于网络流量分析。
- 非常规HTTP方法和请求模式
- 可疑的用户代理和 IP 地址
- 编码有效载荷
- 请求体中的恶意代码或命令
- 意外的协议或端口
- 意外的资源使用
- Web 服务器进程生成命令行工具
数据包捕获提供了对确认攻击至关重要的重要细节。例如,在显示POST /upload.php请求的 PCAP 文件中,您可能会看到一个PHP Web Shell(webshell.php),其源代码清晰地显示在有效载荷中。这种细节有助于进一步验证攻击尝试。
一些有用的 Wireshark HTTP 过滤器。
http.request.method == “METHOD”
查找重复或异常的请求可能很有用。http.request.uri contains “.php”
有助于查找可疑或已修改的文件http.user_agent
用于查找异常或过时的用户代理
Wireshark HTTP过滤器完整列表。
在 Wireshark 中查看与任务 3 相同的攻击链。

Wireshark 中的攻击序列流程。

Wireshark 中的数据包显示了指示器和 shell 有效载荷。
请回答以下问题。
你会使用什么命令来查找 目录.php中的文件/var/www/?
find /var/www/ -type f -name "*.php"
你会使用哪个 Wireshark 过滤器来专门搜索PUT请求?
http.request.method == "PUT"
调查

调查/var/log/apache2/access.log
查看日志时,请注意以下事项:
- 重复或可疑的请求(尤其是对
.php文件的请求) - 异常请求模式(查找不同的响应代码)
- 不寻常的用户代理(例如
curl/0.00.0)
这也是使用诸如 grep筛选访问日志文件之类的工具的好机会。
例如,cat /var/log/apache2/access.log | grep "404"它可以帮助突出显示包含 404错误响应的日志。
请回答以下问题。
攻击者最有可能使用的IP地址是什么?

203.0.113.66
攻击者成功识别的第一个目录是什么?

/wordpress
.php攻击者用来上传 Web Shell 的文件名是什么?

upload_form.php
攻击者使用新上传的 Web Shell 执行的第一个命令是什么?
whoami
攻击者通过 Web Shell 获取访问权限后,使用命令将第二个文件下载到服务器上。这个文件的名称是什么?

linpeas.sh
攻击者在 Web Shell 中隐藏了一个秘密。
利用cat此方法分析 Web Shell 代码并找到 flag。

THM{W3b_Sh3ll_Int3rnals}
检测 Web DDoS 攻击
DoS 和 DDoS 攻击
拒绝服务 ( DoS ) 攻击的核心在于瘫痪网站或应用程序,使其无法正常使用。一旦发生这种情况,用户将无法登录、购物或访问服务,企业也会遭受经济损失和信任危机。
你是否曾经尝试访问自己喜欢的网站,却发现它一直加载不出来,或者反复出现验证码?该网站可能正遭受拒绝服务攻击,攻击者会用大量流量淹没它,迫使防御者紧急应对以维持其可用性。
DoS攻击可以针对系统的不同层级发起。然而,在本次会议中,我们将重点关注OSI模型的应用层(第7层) ,网站和Web应用程序通常是攻击目标。
拒绝服务(DoS)

任何DoS攻击,无论规模大小,只要能阻止Web服务按预期运行,都被视为成功。我们先来看看即使是简单的定向攻击是如何导致网站无法访问的。
想象一下,你的网站是一个销售自行车零件的热门电商网站,网站上有一个搜索表单。这个表单接收用户输入,查询数据库,并返回匹配结果。如果应用程序未能正确验证或处理输入,攻击者就可以提交意外或格式错误的数据,导致应用程序在处理请求时卡顿或崩溃。这样一来,一个简单的搜索框就可能被滥用,发起拒绝服务攻击。如果表单没有正确过滤或验证搜索内容,攻击者还可以向同一个搜索表单发送大量请求,甚至发送一个大规模的单次请求,从而造成拒绝服务攻击。
分布式拒绝服务(DDoS)
基本DoS攻击的局限性在于它依赖于单台机器和单条互联网连接。虽然一台计算机可以发出大量请求,但其影响范围受限于其CPU、内存、带宽和网络性能。
为了扩大攻击规模,攻击者转向分布式拒绝服务 ( DDoS ) 攻击,并利用僵尸网络——一支由他们控制的、已被入侵的设备组成的大军。这些计算机、物联网设备甚至服务器通常都感染了恶意软件,并由攻击者秘密控制。一旦接到指令,这些僵尸网络就会向目标网站或 Web 应用程序发起大量流量攻击,其攻击效率远超单台机器。
现在想象一下你的自行车零件网站。它很受欢迎,每天流量稳定,但它的设计并非为了承受短时间内数百万次的请求。攻击者指示其僵尸网络攻击你的网站,突如其来的流量迅速耗尽了你的资源,导致网站瘫痪。
拒绝服务攻击的类型
让我们来探讨几种拒绝服务攻击类型。这些攻击可以由单个攻击者发起(DoS 攻击),也可以通过僵尸网络进行分布式拒绝服务攻击(DDoS 攻击)。
| DoS攻击类型 | 描述 |
|---|---|
| 懒猴 | 发送大量不完整的HTTP请求以占用服务器资源 |
| HTTP洪水攻击 | 发送大量HTTP请求以使服务器过载 |
| 缓存绕过 | 绕过 CDN 边缘服务器并强制源服务器响应 |
| 超大查询 | 强制服务器处理大型、资源密集型请求 |
| 登录/表单滥用 | 登录尝试或密码重置操作过多,导致身份验证逻辑过载 |
| 输入验证错误滥用 | 利用设计不佳的输入处理 |
请回答以下问题。
哪一类攻击依赖于中断网络服务的可用性?
Denial-of-Service
攻击者利用被入侵的机器网络发起 DDoS 攻击,我们该如何称呼这个网络?
Botnet
攻击动机

既然您已经了解了攻击者如何发起DoS和DDoS攻击,接下来我们来看看他们为什么要这样做。乍一看,短暂的网络服务中断似乎无关紧要,但对于依赖持续可用性的组织而言,后果可能十分严重,导致收入损失、用户不满以及声誉受损。
可能的攻击动机
| 动机 | 描述 | 示例场景 |
|---|---|---|
| 财务损失 | 中断服务以停止或减少销售和收入 | 在节假日销售高峰期向电子商务网站发起攻击 |
| 勒索 | 要求支付款项以制止当前的攻击 | 以勒索赎金威胁银行的DDoS攻击 |
| 黑客行动主义 | 因社会或政治抗议而造成的混乱 | 在选举季攻击政府网站 |
| 注意力分散 | 在其他攻击发生时,转移防守方的注意力。 | 在攻击其他基础设施的同时发起DDoS攻击 |
| 竞赛 | 干扰竞争对手的服务,以提高其成本或夺取市场份额 | 竞争对手在产品发布期间发起DDoS攻击。 |
| 钱包被拒 | 强迫受害者承担服务使用费用。 | 攻击者反复访问AWS S3数据,每次请求都会产生费用。 |
| 名誉损害 | 导致客户对公司失去信任 | 游戏服务器在上线当天崩溃 |
注:这并非攻击者动机的完整列表。根据其资源和目标,攻击者可以同时实现多个目标,也可以追求其他目标。
例子
2015年除夕夜,BBC遭遇DDoS攻击,导致其网站瘫痪。由于请求超时或返回内部错误信息,网站读者数小时内无法访问文章。声称对此次攻击负责的黑客组织“新世界黑客”(New World Hacking)表示,他们发动此次DDoS攻击只是为了测试自身攻击能力。
2023年,微软遭遇大规模的七层DDoS攻击,导致Azure、OneDrive和Outlook服务中断。黑客组织“匿名者苏丹”(Anonymous Sudan)声称对此次攻击负责。攻击者利用HTTP洪水攻击和Slowloris等技术瘫痪了微软的Web服务器,给全球微软用户造成了严重影响。
请回答以下问题。
攻击者的哪种动机旨在使客户对公司失去信心?
# 名誉损失
Reputational Damage
2023 年针对微软的 DDoS 攻击最可能的动机是什么?
# 黑客行动主义
Hacktivism
日志分析
在调查拒绝服务攻击时,Web 服务器日志是重要的证据来源。无论是Apache、NGINX 还是 Microsoft IIS,所有主流 Web 服务都会以某种标准化的日志格式记录 Web 请求。通过检查这些日志,分析人员和响应人员可以发现有助于区分正常用户流量和恶意活动的模式。本文将探讨潜在 DoS和DDoS攻击的一些关键指标,并重点介绍依赖日志进行检测的优势和局限性。
从之前的任务中,我们知道拒绝服务攻击通常依赖于向目标发送大量的HTTP请求,但也可以利用专门构造的 Web 请求来停止服务。
请查看以下指标:
| 指标 | 例子 | 描述 |
|---|---|---|
| 高请求率 | 10.10.10.100→ 1000GET /login |
资源密集型页面(例如 登录页面/login)会收到大量请求,导致身份验证过程不堪重负。登录页面是常见的攻击目标,因为每个请求都可能触发密码检查和数据库查询。 |
| 奇怪的用户代理 | curl/7.6.88→/index反复 |
攻击者会伪造过时或不常见的用户代理,以融入网络环境或绕过过滤器。例如,使用诸如curl或 之类的工具来检测流量,可以作为自动化攻击的预警信号。Python-urllib/3.x |
| 地理异常 | IP地址的来源遍布世界各地 | 合法流量通常来自少数几个真实用户所在的地区。而全球分布式僵尸网络则可能使用来自世界各地的 IP 地址。 |
| 突发时间戳 | 1 秒内发出 50 个请求 →/search |
同一秒内请求数量的突然激增会造成不自然的流量模式,这表明存在自动化流量。 |
| 服务器错误(5xx) | 503 Service Unavailable错误数量显著激增 |
500服务器错误响应( - )的突然激增511表明资源已达上限,服务正承受着巨大的攻击流量。 |
| 逻辑滥用 | GET /products?limit=999999 |
攻击者精心构造查询语句,使服务器过载,迫使其加载大量信息,从而降低所有人的访问速度。 |
分析人员应寻找构成DDoS攻击图景的多层次信号。例如,假设攻击者控制着一个全球僵尸网络,目标是单个网站。您可能会看到来自不同地理区域的大量IP地址的请求。这些请求可能会使用相同的User-Agent字符串或不同的User-Agent字符串来攻击多个资源密集型端点,以使其看起来更合法。维护一份常用指标的监控列表,以便随时关注,对于分析人员来说是一项非常有价值的工具。
目标资源
如果攻击者意图破坏我们之前讨论过的Web服务,他们很可能会重点攻击那些每次请求消耗服务器资源最多或对维持网站功能至关重要的端点。像/login搜索表单这样的页面是主要目标,因为每次请求都会迫使服务器查询数据库、验证输入并返回结果。这使得处理这些请求的成本远高于处理产品页面或图片等静态内容。
常用目标端点及原因:
/login涉及身份验证过程/search需要复杂的数据库查询/api端点——动态内容分发的关键/register或者/signup- 需要数据库写入和验证/contact或者/feedback- 需要数据库条目,并可能触发电子邮件通知/cart或者/checkout——需要会话管理、库存检查和支付处理
对数样本
让我们来看一个精简版的访问日志示例,了解一下 DoS 攻击在事件发生后可能呈现的情形。
- 正常用户流量——每隔几秒钟,用户就会请求一个页面并按预期收到响应。
- DoS攻击- 从[此处插入IP地址]开始
10:01:10,可以看到该IP地址203.0.113.55开始向[此处插入IP地址]发送重复GET请求。/login.php - 网络服务器宕机- 用户请求页面时收到
503响应,表明服务不可用。
这段日志片段经过高度精简,而 DoS 或 DDoS 攻击可能会同时向日志中发送成百上千个请求。

动手实践
您的自行车零件网站遭受了拒绝服务攻击。请打开access.log用户桌面上的文件开始调查。日志中包含正常用户流量和攻击者流量的混合数据。在梳理日志时,请注意对同一页面的重复请求,并牢记您在此任务中学到的指标。祝您好运!
请回答以下问题。
攻击者的IP地址是什么?

203.12.23.195
攻击者反复向哪个页面发起请求?
/login

攻击发生后,合法用户会收到什么错误代码?
503
利用安全信息和事件管理 (SIEM)
安全信息和事件管理 ( SIEM ) 平台通过整合多个日志源并查询有用字段,显著提高了日志分析的效率。用户无需在日志文件中滚动浏览无穷无尽的原始条目,即可按 IP 地址、用户代理或响应代码筛选和排序日志。这种功能使得识别流量模式变得更加容易。
在下面的截图中,您可以看到Splunk根据十分钟内对服务器的所有请求创建的时间图表。
- 正常用户请求——每分钟向各个页面发出少量请求
- 拒绝服务攻击——
/login.php在一分钟内 - 请求页面

通过查看相同的请求,但按用户代理(useragent)和 IP 地址(clientip)字段进行筛选,您可以查看有关请求来源的更多详细信息。

动手实践
这次,您的网站疑似遭受了DDoS攻击。您将使用Splunk来调查发生了什么!
使用桌面上的快捷方式打开 Splunk 实例,或直接访问它。http://10.81.143.222:8000
在本练习中,您将分析在疑似攻击期间收集的 Web 访问日志。这些日志包含正常用户流量和潜在恶意请求的混合数据。首先,打开Splunk中的 “搜索与报告” 应用,并在主索引中运行搜索。在图形用户界面 (GUI)的左侧,您将看到从日志文件中提取的字段。这些字段在您的调查过程中将非常有用。index="main"
最常被问到的问题是什么uri?
/search

哪个clientip目标收到的请求最多uri?

203.0.113.7
攻击你网站的僵尸网络使用了多少个IP地址?

index=main
| search clientip="203.0.113.*"
| dedup clientip
| stats count(clientip)
60
useragent攻击流量最常使用哪种方式?

Java/1.8.0_181
使用该timechart命令可视化请求。
攻击期间每秒发出的请求峰值是多少?

index=main| timechart span=1s count by request
207
攻击发生后,哪个合法(非攻击性)实体clientip获得了第一个响应状态?503

10.10.0.27
防御
攻击者不断寻找可利用的弱点,但防御者拥有各种工具和方法来保持系统的韧性。本文将探讨可用于预防和缓解攻击的策略,以确保我们的网站和Web应用程序尽可能免受拒绝服务攻击。
应用层防御
安全开发实践
安全的网站始于安全的代码。搜索框和表单必须验证输入,以防止滥用。不妨把搜索表单想象成一位图书管理员,根据用户的请求查找书籍。如果图书管理员有明确的规则,例如“只搜索标题不超过 50 个字符的书籍”,他们就能快速响应。如果没有这些规则,就可能有人要求图书管理员搜索过长或包含特殊字符的奇怪标题,从而拖慢他们的速度,并延误其他用户的请求。同样,Web 应用程序也需要输入验证,以防止攻击者提交旨在使系统过载的特殊查询。
挑战
阻止自动化流量的一种方法是在授予访问权限前要求用户完成验证。这可以是验证码(CAPTCHA),用户需要解决一些难题,例如点击图片或勾选复选框。对人类用户来说,这只是很小的一步,但对机器人来说,它可以阻止或减缓攻击。
网站还可以使用 JavaScript 验证,这些验证会在后台静默运行,以确认访问者是真实用户还是自动化流量。合法用户通常不会注意到这些验证,但自动化工具和僵尸网络往往无法通过,因此这些验证可以有效地过滤恶意流量。

网络和基础设施防御
内容分发网络(CDN)
CDN 通过缓存内容并从距离用户最近的边缘服务器提供内容来帮助管理服务器负载。这降低了延迟,使源服务器只需处理一小部分请求,而 CDN 则处理大部分请求。因此,CDN 承担了大部分缓解DDoS攻击的责任。它们还提供负载均衡功能,将流量分配到各个服务器,确保没有单个服务器过载,并在某个服务器不可用时重新路由请求。
以下是Cloudflare CDN 控制面板中显示的16 TB DDoS攻击示例。
- 30 天总带宽- 这显示的是过去 30 天的总流量。如果您的网站通常每月流量只有几百 GB,突然达到 16 TB 则表明存在异常情况。
- CDN边缘服务器缓存的总带宽——这表示CDN边缘服务器成功传输的流量总量。几乎所有带宽都被缓存,表明Cloudflare在攻击流量导致后端服务器过载之前就将其吸收。
- DDoS攻击导致流量激增——图表中的峰值是DDoS攻击的特征。如果没有CDN,大量请求将直接冲击源服务器。

除了吸收流量之外,CDN 还为分析人员提供强大的可视化功能,包括网站流量的直观图表和诊断信息。这使您可以按地理位置、流量和来源模式快速细分请求,从而帮助区分恶意流量和合法用户流量。

Web应用程序防火墙(WAF)
CDN通常会集成WAF来保护客户的服务器。WAF会检查传入流量,并根据情况允许、质疑或阻止请求。WAF基于整合了已知攻击指标和威胁情报的规则运行。现代WAF解决方案已经非常擅长缓解DoS和DDoS攻击,因为它们知道该注意哪些方面。此外,还可以开发自定义规则来辅助防御定向威胁。
例如,您可以实施一条限速防火墙规则,将请求次数限制为/login.php每分钟五次。如果发起请求的 IP 地址请求页面超过五次,则会在一段时间内阻止其再次发起请求,或者要求其进行验证以证明该请求是人类发起的。

大规模缓解措施
现代防御解决方案不仅可以拦截拒绝服务攻击,还能利用其庞大的分布式基础设施来吸收和平衡海量流量。2023年,谷歌成功缓解了一次峰值流量高达每秒3.98亿次的DDoS攻击。Cloudflare声称成功缓解了有史以来规模最大的DDoS攻击,该攻击峰值流量达到11.5 Tbps,持续时间仅35秒。这些案例表明,服务提供商如何利用全球网络和流量过滤技术,防止即使是规模最大的攻击也导致关键服务中断。
绕过安全措施
尽管 CDN、缓存和 WAF 提供了强大的保护,但攻击者常常试图绕过这些防御措施。一种常见的技术是附加随机查询参数。例如,您的 CDN 可能在某个 URL 处提供缓存页面/products,但如果攻击者在查询参数后附加一个随机字符串(例如/products?a=abcd,则您的 CDN 无法提供缓存页面),则源服务器将被迫响应。同样,更改用户代理、伪造引用页面或从不同的地理区域发起请求也可以帮助攻击者绕过 WAF 的过滤规则。
请回答以下问题。
什么样的安全挑战可以通过要求用户解决一个简单的谜题来阻止机器人?
# 验证
captcha
CDN的哪项功能可以将流量分散到多个服务器上以防止过载?
# 负载均衡
load-balancing
本文来自博客园,作者:竹等寒,转载请注明原文链接。


浙公网安备 33010602011771号