learning center banner

Web攻击是什么?

一篇关于常见网络安全攻击方法、防御机制和解决方案的文章。

网络攻击是指针对网站、网络服务或网络应用程序的恶意活动,旨在窃取数据、破坏服务、欺骗用户或其他恶意目的。在数字时代,网络安全已成为企业和个人用户不能忽视的重要问题。随着网络攻击手段的不断演变,理解和防范常见网络攻击显得尤为重要。最终目标是维护网络应用程序的顺畅运行,使企业和用户能够防止网络损害、数据盗窃和不道德的竞争行为。

网络攻击的常见方式有哪些?

网络应用程序可能面临多种攻击类型和方法,具体取决于攻击者的目标、目标组织工作的性质以及网络应用程序中的特定安全漏洞。常见的攻击类型包括:

1. DDoS攻击

分布式拒绝服务(DDoS)是一种常见的网络攻击方式。其目的是通过请求过载服务器,直到它开始减慢速度并最终拒绝为合法用户提供服务。DDoS攻击可以按不同方式进行分类,但通常将其分为三种类型:

  • 1. 流量攻击:僵尸网络向资源发送大量虚假流量。这种类型的攻击可能使用ping洪水、伪造数据包洪水或UDP洪水。基于流量的攻击以每秒比特数(BPS)进行测量。
  • 2. 应用层攻击:应用层攻击利用HTTP GET和HTTP POST等常见请求。这些攻击影响服务器和网络资源,因此可以用更少的带宽实现与其他类型的DDoS攻击相同的破坏效果。在这一层区分合法流量和恶意流量是困难的,因为流量并未被伪造,看起来是正常的。应用层攻击以每秒请求数(RPS)进行测量。
  • 3. 网络层攻击:网络层攻击,也称为协议攻击,向目标发送大量数据包。网络层攻击不需要开放的传输控制协议(TCP)连接,并且不针对特定端口。网络层攻击以每秒数据包数(PPS)进行测量。网络层攻击的示例包括:
  1. Smurf攻击:试图通过使用互联网控制消息协议(ICMP)数据包并利用IP漏洞来淹没服务器。
  2. SYN洪水:发起连接到服务器而不关闭该连接,从而使服务器不堪重负。这种攻击使用大量伪造IP地址的TCP握手请求。

虽然大多数攻击都是基于流量的,但也有“低速且缓慢”的DDoS攻击,通过发送小而稳定的请求流来逃避检测,这可以在长时间内不被察觉地降低性能。低速且缓慢的攻击针对基于线程的Web服务器,使数据传输给合法用户非常缓慢,但并不够慢到导致超时错误。一些用于低速且缓慢攻击的工具包括Slowloris、R.U.D.Y.和Sockstress。

2. 跨站请求伪造(CSRF)

 CSRF攻击利用网站对用户浏览器的信任。攻击者诱使已登录用户点击链接或访问页面,这会在用户不知情的情况下对另一个已登录的网站执行恶意操作,使用用户的身份。

在成功的CSRF攻击中,攻击者使受害用户无意中采取行动。例如,这可能是更改其帐户上的电子邮件地址、更改其密码或进行资金转移。根据操作的性质,攻击者可能能够完全控制用户的帐户。如果被攻陷的用户在应用程序中具有特权角色,则攻击者可能能够完全控制所有应用程序的数据和功能。要使CSRF攻击成为可能,必须满足三个关键条件:

  1. 相关操作:应用程序中存在攻击者有理由诱导的操作。这可能是特权操作(例如修改其他用户的权限)或任何针对用户特定数据的操作(例如更改用户的密码)。
  2. 基于Cookie的会话处理:执行涉及发出一个或多个HTTP请求,而应用程序仅依赖会话Cookie来识别发出请求的用户。没有其他机制用于跟踪会话或验证用户请求。
  3. 无不可预测的请求参数:执行的请求不包含攻击者无法确定或猜测的参数值。例如,当导致用户更改密码时,如果攻击者需要知道现有密码的值,则该功能不会受到攻击。

例如,假设一个应用程序包含一个允许用户更改其帐户上电子邮件地址的功能。当用户执行此操作时,他们发出如下HTTP请求:

POST /email/change HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Cookie: session=yvthwsztyeQkAPzeQ5gHgTvlyxHfsAfE

email=wiener@normal-user.com

这满足了CSRF所需的条件:

  1. 更改用户帐户上电子邮件地址的操作对攻击者来说是有吸引力的。执行此操作后,攻击者通常能够触发密码重置并完全控制用户的帐户。
  2. 应用程序使用会话Cookie来识别发出请求的用户。没有其他令牌或机制来跟踪用户会话。
  3. 攻击者可以轻松确定所需操作的请求参数的值。

在这些条件成立的情况下,攻击者可以构造一个包含以下HTML的网页:

<html>
    <body>
        <form action="https://vulnerable-website.com/email/change" method="POST">
            <input type="hidden" name="email" value="pwned@evil-user.net" />
        </form>
        <script>
            document.forms[0].submit();
        </script>
    </body>
</html>

如果受害用户访问攻击者的网页,将发生以下情况:

  1. 攻击者的页面将触发对易受攻击网站的HTTP请求。
  2. 如果用户已登录到易受攻击的网站,则他们的浏览器将自动在请求中包含其会话Cookie(假设未使用SameSite Cookie)。
  3. 易受攻击的网站将正常处理请求,将其视为由受害用户发出的请求,并更改其电子邮件地址。

 3. 跨站脚本(XSS)

跨站脚本(也称为XSS)是一种网络安全漏洞,允许攻击者干扰用户与易受攻击的应用程序之间的交互。它使攻击者能够绕过同源策略,该策略旨在将不同网站彼此隔离。跨站脚本漏洞通常允许攻击者冒充受害用户,执行用户能够执行的任何操作,并访问用户的任何数据。如果受害用户在应用程序中拥有特权访问权限,攻击者可能能够完全控制所有应用程序的功能和数据。

跨站脚本通过操纵易受攻击的网站,使其返回恶意JavaScript代码给用户。当恶意代码在受害者的浏览器中执行时,攻击者可以完全破坏他们与应用程序的交互。 XSS攻击主要有三种类型。这些是:

反射型XSS:恶意脚本来自当前的HTTP请求。

反射型XSS是最简单的跨站脚本变种。当应用程序在HTTP请求中接收数据并以不安全的方式将该数据包含在即时响应中时,就会出现反射型XSS。

以下是反射型XSS漏洞的一个简单示例:

https://insecure-website.com/status?message=All+is+well.
<p>状态:一切都很好。</p>

该应用程序未对数据进行任何其他处理,因此攻击者可以轻松构造这样的攻击:

https://insecure-website.com/status?message=<script>/*+恶意代码+*/</script>
<p>状态:<script>/* 恶意代码 */</script></p>

如果用户访问攻击者构造的URL,则攻击者的脚本将在用户的浏览器中执行,在该用户与应用程序的会话上下文中。此时,脚本可以执行任何操作,并检索用户可以访问的任何数据。

存储型XSS:恶意脚本来自网站的数据库。

存储型XSS(也称为持久性或二次XSS)发生在应用程序从不受信任的来源接收数据,并以不安全的方式将该数据包含在后续HTTP响应中。

相关数据可能通过HTTP请求提交给应用程序;例如,博客文章的评论、聊天室中的用户名或客户订单中的联系信息。在其他情况下,数据可能来自其他不受信任的来源;例如,显示通过SMTP接收到的邮件的Web邮件应用程序、展示社交媒体帖子营销应用程序或展示网络流量中的数据包数据的网络监控应用程序。

以下是存储型XSS漏洞的一个简单示例。一个留言板应用程序允许用户提交留言,这些留言会显示给其他用户:

<p>你好,这是我的留言!</p>

该应用程序未对数据进行任何其他处理,因此攻击者可以轻松发送攻击其他用户的留言:

<p><script>/* 恶意代码 */</script></p>

DOM型XSS:漏洞存在于客户端代码而不是服务器端代码中。

DOM型XSS(也称为DOM XSS)发生在应用程序包含一些客户端JavaScript,该JavaScript以不安全的方式处理来自不受信任的来源的数据,通常通过将数据写回DOM。

在以下示例中,应用程序使用一些JavaScript从输入字段读取值,并将该值写入HTML中的元素:

var search = document.getElementById('search').value; var results = document.getElementById('results'); results.innerHTML = '你搜索的内容是:' + search;

如果攻击者能够控制输入字段的值,他们可以轻松构造一个恶意值,使其自己的脚本执行:

你搜索的内容是:<img src=1 onerror='/* 恶意代码 */'>

在典型情况下,输入字段的值将从HTTP请求的某个部分填充,例如URL查询字符串参数,允许攻击者通过恶意URL发送攻击,方式与反射型XSS类似。

4. SQL注入攻击(SQLI)

SQL注入(SQLi)是一种网络安全漏洞,允许攻击者干扰应用程序对其数据库的查询。这可能使攻击者查看他们通常无法获取的数据。这可能包括属于其他用户的数据,或应用程序可以访问的任何其他数据。在许多情况下,攻击者还可以修改或删除这些数据,导致应用程序的内容或行为发生持久性变化。在某些情况下,攻击者可以将SQL注入攻击升级为危害底层服务器或其他后端基础设施。它还可以使他们执行拒绝服务攻击。

成功的SQL注入攻击可能导致未经授权访问敏感数据,例如密码、信用卡详细信息和个人用户信息。多年来,SQL注入攻击已在许多高调的数据泄露事件中被利用。这些事件造成了声誉损害和监管罚款。在某些情况下,攻击者可以获得持续的后门进入组织的系统,导致长期妥协,在很长一段时间内可能不会被发现。

基本SQL注入:假设一个应用程序的登录表单通过以下SQL查询验证用户:

SELECT * FROM users WHERE username = '$username' AND password = '$password';

如果应用程序未正确清理用户输入,则攻击者可以在用户名或密码字段中输入精心制作的输入,例如:

' OR '1'='1

这将使SQL查询变成:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '' OR '1'='1';

因为 '1'='1' 始终为真,这个查询将返回所有用户,可能导致未经授权访问。

使用注释终止查询:攻击者可能会使用SQL注释符号 -- 或 /* */ 来终止查询条件的一部分,导致查询返回所有数据。例如:

' OR 1=1 -- 

这将导致查询的密码检查部分被注释掉,从而绕过安全检查。

联合查询注入:攻击者可以使用UNION运算符将他们的恶意查询与原始查询结合,这可能导致数据库返回额外的敏感信息。例如:

' UNION SELECT * FROM users WHERE '1' = '1

延迟注入:攻击者可以通过插入导致数据库延迟响应的命令来测试应用程序是否容易受到SQL注入。例如,在MySQL中:

' OR SLEEP(10) --

如果在执行此查询后,应用程序延迟了10秒,可能表示它容易受到SQL注入攻击。

网络应用程序的重要防御策略有哪些?

如上所述,网络应用程序受到各种方式和类型的攻击。因此,防御策略也是多样且不断变化的。随着系统漏洞和攻击方法的不断升级,现代互联网威胁形势非常严峻。如果没有满足其特定业务需求的某些“芯片”安全服务,任何企业、单位或个人都有可能受到攻击。

  1.  DDoS 保护 DDoS保护是指当服务因恶意流量激增而被淹没,导致服务器超负荷的情况。根据实时网络流量监控,一旦发现DDoS攻击,流量立即被清洗和过滤。DDoS保护还提供基于攻击配置文件、行为模式分析、AI智能识别和其他保护算法的预设防御策略,以保持服务器稳定运行。
  2. 网络应用程序防火墙(WAF) WAF过滤和监控Web应用程序与互联网之间的HTTP流量,以保护Web应用程序的安全。它通常保护Web应用程序免受各种形式的攻击,如跨站请求伪造、跨站脚本(XSS)、文件包含和SQL注入。WAF对Web系统非常重要,因为新的漏洞出现得太快且悄无声息,几乎所有系统本身无法自动捕获它们。
  3. 机器人管理(BOT管理)它使用机器学习和其他专业检测方法来区分自动化流量和人类用户,并阻止前者访问Web应用程序。
  4. 客户端安全:检查新的第三方JavaScript依赖项和我们Web应用程序所依赖的第三方代码的更改,帮助更快地捕获恶意前端漏洞。
  5. 攻击面管理:使用攻击面管理工具绘制和测试网页的漏洞,识别潜在安全风险,并手动点击验证这些风险的存在。

腾讯EdgeOne如何防止网络攻击对Web应用程序的影响?

边缘安全加速平台EO(腾讯EdgeOne,以下简称EdgeOne)在多个城市运营全球网络。它基于腾讯的边缘计算节点,提供加速和上述多种安全服务,包括DDoS保护、Web应用程序防火墙、机器人管理和其他安全解决方案。它保护电子商务和零售、金融服务、内容信息和游戏等行业,提高用户体验。

EdgeOne可以在任何数据中心运行,从源头拦截攻击。它的功能补充了网站的服务和性能,因此使用它不仅可以加速服务,还可以保护服务免受更多网络攻击。此外,所有EdgeOne服务适用于各种Web基础架构,通常只需简单配置即可启动。

了解更多关于 加速服务和访问安全服务 或注册 EdgeOne。我们现在推出了免费试用,点击这里联系我们以获取更多信息。