向Web应用程序的转变带来了诸多显著优势,包括更高的可访问性、更快的更新速度、更好的兼容性以及更低的用户资源占用。试想一下,您可以通过浏览器浏览在线市场和社交网络、玩游戏、编辑图像和视频,甚至运行虚拟机。然而,这些优势也带来了安全方面的权衡。网络越强大、覆盖范围越广,攻击者可利用的机会也就越多。
Web应用程序是攻击者最常利用的入口点之一,因为它们始终可用且暴露在外。它们通常连接到后端系统,例如数据库和其他基础设施,这为攻击者提供了极具破坏性的攻击机会。一个存在漏洞的Web应用程序通常是更大规模攻击序列的第一步。让我们来看看Web应用程序所有者及其用户面临的风险。
作为 Web 应用程序所有者作为 Web 应用程序用户您的Web应用程序始终在线,必须全天候24小时保持安全。您的数据存储在网络应用程序中,可能存在安全隐患。世界各地的人都可以随时访问您的应用程序。一旦您的浏览器遭到入侵,您的所有帐户都将面临风险。要及时了解如此多的新出现的威胁是一项挑战。数据泄露可能导致身份盗窃或经济损失。您有责任保护用户数据的安全。您的隐私可能会永久受到侵犯。真实案例
2017年,由于Apache漏洞 ,Equifax公司近1.5亿美国人的敏感客户数据遭到泄露。攻击者利用该漏洞,得以访问存储宝贵客户数据的内部数据库。
Capital One在2019年也遭遇过类似规模的数据泄露事件,当时配置错误的Web应用程序防火墙(WAF)导致超过1亿客户的敏感个人和财务信息泄露。此次配置错误使得内部人员能够访问公司的云基础设施和数据库。
员能够访问公司的云基础设施和数据库。
请回答以下问题。
过去二十年间,应用程序是否从桌面端转移到了网页端(yea/nay)?
在保护网站和 Web 应用程序时,可以使用多种安全措施。一些解决方案提供可见性,而另一些则可以主动阻止或限制攻击,这通常被称为缓解措施。回顾任务 3,我们讨论了任何 Web 服务的三个基本组成部分:应用程序、Web 服务器和主机,现在让我们来考察每个组件可用的保护措施。 保护应用程序
安全编码:避免使用不安全的函数,确保正确处理错误,并删除敏感信息。
输入验证与清理:验证并清理用户输入,以防止注入攻击。
访问控制:根据用户角色限制访问权限。
保护Web服务器
日志记录:使用访问日志详细记录所有网络请求。
Web应用程序防火墙(WAF):根据定义的规则过滤和阻止有害流量。
内容分发网络 (CDN):减少对服务器的直接暴露,并使用集成的 WAF。
保护主机
最小权限原则:使用低权限用户来提供服务。
系统加固:禁用不必要的服务并关闭未使用的端口。
防病毒:添加终端级保护,阻止已知恶意软件。
所有三个组件的安全提示
强身份验证:不要让任何人访问您的代码、管理面板或主机。
补丁管理:确保您的应用程序依赖项、Web 服务器和主机都是最新的。
日志记录
Web 服务器可以为收到的每个请求创建日志。我们称这些日志为访问日志,它们在安全方面极其重要,因为它们会跟踪与服务器的每次交互信息,包括客户端的 IP 地址、时间戳、请求的页面或数据、服务器的响应状态以及用户代理。这些字段在调查中发挥着重要作用,可以帮助分析人员检测潜在的恶意活动并追踪攻击者的行为。
让我们来看一系列可能在访问日志中出现的正常事件,以便了解我们可以观察到的数据类型。
请注意,GET请求用于从服务器检索资源,例如特定的网页。
POST请求用于向服务器提交数据,例如登录凭据。
功能
如上所述,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 局限性
接下来,我们来更详细地分析一下攻击中的第一次 SQL 注入尝试。通过检查 HTTP 数据包,我们可以清楚地看到攻击者使用的有效载荷以及攻击结果。在本例中,有效载荷' OR '1'='1允许转储 Users 表,并以明文形式向攻击者显示用户的 First name 和 Surname!请注意,我们还可以使用 Wireshark 分析 MySQL 协议流量,并显示有效载荷和返回结果。
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=)。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 ShellDELETE从服务器中移除资源清理方法OPTIONS支持的请求方法侦察HEAD类似于 GET 请求,但只返回请求头。检测文件让我们利用目前讨论过的指标,逐步分析一个潜在的 Web Shell 攻击序列。
请注意,每个请求都使用相同的客户端 IP 和用户代理。响应代码和时间戳也需要记录下来。
200 OK
404 Not Found
可疑的用户代理和 IP 地址
用户代理用于识别向 Web 服务器发出请求的客户端,并提供有关浏览器、设备和操作系统的信息。
这是一个 Linux 原生实用程序,用于跟踪和记录事件,从而创建审计跟踪。可以为其创建规则auditd,以确定哪些内容会被记录到日志中audit.log。规则可以高度配置,以匹配特定条件,例如特定程序何时运行或特定目录中的文件何时被修改。在下面的示例中,ausearch使用 cd 命令搜索与web_shell规则匹配的任何日志。
Ausearch 在审计日志中的应用
user@tryhackme$ ausearch -k web_shelltime->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 通常放置在这些目录中:
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(
Web应用程序防火墙(WAF)
CDN通常会集成WAF来保护客户的服务器。WAF会检查传入流量,并根据情况允许、质疑或阻止请求。WAF基于整合了已知攻击指标和威胁情报的规则运行。现代WAF解决方案已经非常擅长缓解DoS和DDoS攻击,因为它们知道该注意哪些方面。此外,还可以开发自定义规则来辅助防御定向威胁。
例如,您可以实施一条限速防火墙规则,将请求次数限制为/login.php每分钟五次。如果发起请求的 IP 地址请求页面超过五次,则会在一段时间内阻止其再次发起请求,或者要求其进行验证以证明该请求是人类发起的。