哈哈鱼
漏洞

文件包含漏洞是怎么造成的

分享
  • delay 2 高级测评师 CISM-WSE 官方采纳
    delay2 高级测评师 CISM-WSE
    官方采纳

    文件包含漏洞是一种最常见的漏洞类型,它会影响依赖于脚本运行时的web应用程序。当应用程序使用黑客控制的变量构建可执行代码的路径时,文件包含漏洞会导致黑客任意控制运行时执行的文件。

    文件包含漏洞的成因:

    在包含文件时候,为了灵活包含文件,将被包含文件设置为变量,通过动态变量来引入需要包含的文件时,用户可以对变量的值可控而服务器端未对变量值进行合理地校验或者校验被绕过,这样就导致了文件包含漏洞。通常文件包含漏洞出现在PHP语言中。

    文件包含漏洞的防御:

    设置白名单

    代码在进行文件包含时,如果文件名可以确定,可以设置白名单对传入的参数进行比较。

    过滤危险字符

    由于Include/Require可以对PHP Wrapper形式的地址进行包含执行(需要配置php.ini),在Linux环境中可以通过”…/…/”的形式进行目录绕过,所以需要判断文件名称是否为合法的PHP文件。

    设置文件目录(配置php.ini)

    PHP配置文件中有open_basedir选项可以设置用户需要执行的文件目录,如果设置目录的话,PHP仅仅在该目录内搜索文件。

    关闭危险配置(配置php.ini)

    PHP配置中的allow_url_include选项如果打开,PHP会通过Include/Require进行远程文件包含,由于远程文件的不可信任性及不确定性,在开发中禁止打开此选项,PHP默认是关闭的。

    总结

    任意文件包含漏洞出现的主要原因是在能够解析处理脚本文件的函数上,没有对输入的变量进行过滤,导致任意文件包含,进而导致恶意代码执行。在开发处理这类功能函数上,一定要遵循编程规范;在代码核心处,对变量进行过滤限制,设置文件路径或者白名单,避免执行任意文件包含。

  • 帅末 2 官方采纳
    帅末2
    官方采纳

    任意文件包含漏洞形成的原因主要有以下三种:

    • 是由于开发人员编写源码,开放着将可重复使用的代码插入到单个的文件中,并在需要的时候将它们包含在特殊的功能代码文件中,然后包含文件中的代码会被解释执行。

    • 由于并没有针对代码中存在文件包含的函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端解释执行。

    • 文件包含攻击中Web服务器源码里可能存在inlcude()此类文件包含操作函数,可以通过客户端构造提交文件路径,是该漏洞攻击成功的最主要原因。

    降低计算机病毒或者漏洞危害的措施有以下这些:

    • 安装和维护防病毒软件:防病毒软件可识别恶意软件并保护我们的计算机免受恶意软件侵害。安装来自信誉良好的供应商的防病毒软件是预防和检测感染的重要步骤。始终直接访问供应商网站,而不是点击广告或电子邮件链接。由于攻击者不断地制造新病毒和其他形式的恶意代码,因此保持我们使用的防病毒软件保持最新非常重要。

    • 谨慎使用链接和附件:在使用电子邮件和网络浏览器时采取适当的预防措施以降低感染风险。警惕未经请求的电子邮件附件,并在单击电子邮件链接时小心谨慎,即使它们貌似来自我们认识的人。

    • 阻止弹出广告:弹出窗口阻止程序禁用可能包含恶意代码的窗口。大多数浏览器都有一个免费功能,可以启用它来阻止弹出广告。

    • 使用权限有限的帐户:浏览网页时,使用权限有限的账户是一种很好的安全做法。如果我们确实受到感染,受限权限可防止恶意代码传播并升级到管理账户。

    • 禁用外部媒体自动运行和自动播放功能:禁用自动运行和自动播放功能可防止感染恶意代码的外部媒体在我们的计算机上自动运行。

    • 更改密码:如果我们认为我们的计算机受到感染,应该及时更改我们的密码(口令)。这包括可能已缓存在我们的网络浏览器中的任何网站密码。创建和使用强密码,使攻击者难以猜测。

    • 保持软件更新:在我们的计算机上安装软件补丁,这样攻击者就不会利用已知漏洞。如果可用,请考虑启用自动更新。

    • 资料备份:定期将我们的文档、照片和重要电子邮件备份到云或外部硬盘驱动器。如果发生感染,我们的信息不会丢失。

    • 安装或启用防火墙:防火墙可以通过在恶意流量进入我们的计算机之前阻止它来防止某些类型的感染。一些操作系统包括防火墙;如果我们使用的操作系统包含一个防火墙,请启用它。

    • 使用反间谍软件工具:间谍软件是一种常见的病毒源,但可以通过使用识别和删除间谍软件的程序来最大程度地减少感染。大多数防病毒软件都包含反间谍软件选项,确保启用。

    • 监控账户:寻找任何未经授权的使用或异常活动,尤其是银行账户。如果我们发现未经授权或异常的活动,请立即联系我们的账户提供商。

    • 避免使用公共Wi-Fi:不安全的公共Wi-Fi可能允许攻击者拦截我们设备的网络流量并访问我们的个人信息。

  • Anna艳娜 2 CISO 高级信息系统项目管理师 PMP
    Anna艳娜2 CISO 高级信息系统项目管理师 PMP

    程序开发人员通常会把可重复使用的函数写到单个文件中,在使用其它函数时,直接调用此文件,而无需再次编写,这种调用文件的过程一般称为包含。程序开发人员都希望代码更加灵活,所以通常会将被包含的文件设置为变量,用来进行动态调用。正是这种灵活性, 从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。如果允许客户端用户输入控制动态包含在服务器的文件中,那么就会导致恶意代码的执行以及敏感信息的泄露,PHP的文件包含分为本地包含和远程包含。

  • Anna艳娜 2 CISO 高级信息系统项目管理师 PMP
    Anna艳娜2 CISO 高级信息系统项目管理师 PMP

    程序开发人员通常会把可重复使用的函数写到单个文件中,在使用其它函数时,直接调用此文件,而无需再次编写,这种调用文件的过程一般称为包含。程序开发人员都希望代码更加灵活,所以通常会将被包含的文件设置为变量,用来进行动态调用。正是这种灵活性, 从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。如果允许客户端用户输入控制动态包含在服务器的文件中,那么就会导致恶意代码的执行以及敏感信息的泄露,PHP的文件包含分为本地包含和远程包含。

  • 写回答