常见web安全类攻击的定义及对应防御方法(二)

1.文件包含漏洞

定义:

攻击者通过向 Web 应用程序中的文件包含函数提供恶意文件名来执行未经授权的操作。比如读取敏感文件、执行系统命令、获取数据库信息等。这种漏洞通常出现在PHP等动态网页语言中,当应用程序使用用户提供的输入直接包含文件时容易发生。

文件包含:在各种开发语言中都提供了内置的文件包含函数,可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。

根据不同的配置环境,文件包含漏洞分为如下两种情况:
(1)本地文件包含漏洞(LFI):仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击者更多的会包含一些固定的系统配置文件,从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞,从而形成更大的威力。
(2)远程文件包含漏洞(RFI):能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码,这种情况很严重。

如何防御:

(1)限制包含文件的目录

限制被包含的文件只能在某一文件内,一定要禁止目录跳转字符,如:“../”;

(2)使用白名单来验证文件名

验证被包含的文件是否是白名单中的一员;

(3)使用安全的文件包含函数

在代码中使用安全的文件包含函数,如include_once()或require_once(),避免使用可变变量作为文件包含的路径。

2.缓冲区溢出攻击

定义:

攻击者通过向程序中的缓冲区输入数据中输入超出缓冲区大小的数据来修改程序的执行流程。

原理主要是利用程序中存在的缓冲区溢出漏洞。当程序没有仔细检查用户输入的参数时,攻击者可以通过输入超出缓冲区边界的恶意数据来破坏程序的正常执行流程。这些数据可以覆盖程序中的其他数据或函数返回地址,导致程序执行攻击者指定的恶意代码。

例如,在一个简单的C语言程序中,如果程序使用固定大小的缓冲区来接收用户输入,而攻击者输入的数据超过该缓冲区的容量,就会发生缓冲区溢出。攻击者可以构造恶意输入,覆盖函数返回地址,使程序在执行完毕后跳转到攻击者指定的恶意代码处执行。

如何防御:

(1)栈随机化

栈随机化是一种在每次程序运行时改变栈内存布局的技术,从而增加攻击者预测和利用栈中特定位置信息的难度。具体来说,当程序开始执行时,操作系统会在栈上分配一段随机大小的空间,这个空间不用于存储任何有效的数据或代码,但会导致后续栈帧的位置在每次程序运行时都有所变化。

通过这种方式,攻击者很难确定他们插入的恶意代码或指向这段代码的指针应该放在栈的哪个位置。即使攻击者能够成功插入恶意代码,由于栈位置的随机性,他们也很难确保这段代码能够被执行。因此,栈随机化能够有效地降低缓冲区溢出攻击的成功率。

(2)堆栈保护器

在最新的GCC版本中,通过加入一种称为“栈保护者”(stack protector)的机制用于检测缓冲区溢出是否发生。具体来说,编译器会在栈帧中的局部缓冲区与栈状态之间存储一个特殊的金丝雀(canary)值,也称为哨兵值(guard value)。这个值是程序每次运行时随机产生的。

在函数返回或恢复寄存器状态之前,程序会检查这个金丝雀值是否被篡改。如果值被改变,说明有缓冲区溢出发生,程序会立即异常终止,从而防止攻击者利用这个溢出执行恶意代码。通过栈破坏检测,系统能够在攻击者利用缓冲区溢出漏洞之前发现并阻止攻击。

(3)限制可执行代码区域

限制可执行代码区域是一种用于消除攻击者向系统插入可执行代码能力的机制。其基本思想是,只有那些包含编译器产生的代码的存储器区域才允许执行代码,而其他区域则只能用于存储数据。

通过限制可执行代码区域,系统能够防止攻击者利用缓冲区溢出漏洞向程序中插入恶意代码并执行。即使攻击者能够成功地将恶意代码写入某个内存区域,由于该区域不允许执行代码,这些代码也无法被执行。

3.端口扫描

定义:

攻击者通过扫描网络上的计算机来查找开放的端口,从而找到可以攻击的目标。

如何防御:

(1)使用网络防火墙

(2)隐藏不需要开放的端口

(3)使用入侵检测系统(IDS)和入侵防御系统(IPS)

IDS 和 IPS 都是网络安全设备,它们的作用是监视网络活动并响应潜在威胁。IDS 被用来监视网络流量并生成警报,以便安全团队能够及时进行调查。IPS 则可以根据预设规则自动阻止潜在的攻击。这是两个不同的设备,其中 IDS 被用来监视网络流量并生成警报,而 IPS能够自动响应潜在的威胁。

4.中间人攻击

定义:

攻击者在用户与服务器之间插入自己的计算机,从而窃取数据或执行未经授权的操作。

如何防御:

(1)使用 HTTPS 协议

(2)使用数字证书验证

(3)使用公钥基础设施(PKI)

5.密码破解攻击

定义:

攻击者通过暴力猜测密码来访问受保护的资源。

如何防御:

(1)使用强密码策略

(2)使用多因素身份验证

(3)使用哈希函数加密存储密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值