文件包含漏洞函数、伪协议、利用过程……

举报
黑色地带(崛起) 发表于 2023/02/16 23:03:50 2023/02/16
【摘要】 ​文件包含函数1、php:1.1、include()找不到文件,只生成警告(E_WARNING),并且脚本会继续include 'filename';1.2、include_once()在脚本执行期间包含并运行指定文件,如果该文件中的代码已经被包含了,则不会再次包含。如同此语句名字暗示的那样,只会包含一次,且 include_once 会返回 true。include_once("test....

文件包含函数

1、php:

1.1、include()

找不到文件,只生成警告(E_WARNING),并且脚本会继续

include 'filename';


1.2、include_once()

在脚本执行期间包含并运行指定文件,如果该文件中的代码已经被包含了,则不会再次包含。如同此语句名字暗示的那样,只会包含一次,且 include_once 会返回 true。

include_once("test.php")


1.3、fopen()

打开文件或者 URL


1.4、require()

找不到文件,会生成致命错误(E_COMPILE_ERROR)并停止脚本

require 'filename';


1.5、require_once()

在脚本执行期间包含并运行指定文件,如果该文件中的代码已经被包含了,则不会再次包含。


2、jsp/Servlet:

2.1、ava.io



2.2、file()

Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。

File对象代表磁盘中实际存在的文件和目录,通过构造方法创建一个File对象,创建File对象成功后,可以使用函数方法操作文件。


2.3、java.io

Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。


2.4、filereader()

FileReader类从InputStreamReader类继承而来。该类按字符读取流中数据。可以通过构造方法创建需要的对象,创建FIleReader对象成功后,可以参照函数方法操作文件。

3、asp:

(动态包含)

3.1、include file

3.2、include virtual



php伪协议

1、12个php支持的伪协议

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、php://filter为例

2.1、原理:

php://filter可获取指定文件源码,如果再利用包含函数漏洞,php://filter流会被当作php文件执行,一般对其进行编码,使其不被执行,获取到编码后解码,从而达到任意文件的读取。


2.2、参数:

resource=<要过滤的数据流>    必须的。指定了要筛选过滤的数据流

read=<读链的筛选列表>    可选。设定一个或多个过滤器名称,以管道符(|)分隔。

write=<写链的筛选列表>    可选。设定一个或多个过滤器名称,以管道符(|)分隔

<;两个链的筛选列表>    任何没有以read= 或 write= 作前缀的筛选器列表会视情况用于读或写链


2.3、形式:

php://filter/read=convert.base64-encode/resource=[文件路径]

php://filter/resource=[文件路径]






利用过程:

1、pikachu(Fiel Inclusion-local)

 1.1、第一步:分析是否存在文件包含

当把每个选项都选一遍,可以发现filename=file1.php中的file从file1-file5

并且参数名为file1.php

这就是一个文件的包含



1.2、第二步:用burpsuite对变量进行爆破(小插曲)

其实要是有这个变量,可以用burpsuite抓包后

发送到intruder对变量进行爆破,看能不能获得其他信息

编辑


把1添加上载荷位置编辑


再设置payload(有效载荷) 

数字型(number),设置6-50把(因为1-5都放前面让我们看见了,也就没什么东西)

再开始攻击

编辑


然后分析攻击的结果

编辑



1.3、第三步:分析使用的函数

其实这个file6.php是一个账号和密码

编辑

 根据报错,可以看见,使用的是include()函数进行,文件包含编辑



1.4、第四步:读取敏感文件


本地文件读取

文件包含的是include里面的文件(我在它的上一目录新建了一个txt文件进行测试读取)

所以要注意文件读取的路径

../test.txt

编辑



系统文件读取

(这个C:要在最前面,然后一个一个文件夹往后退出去)

C:/../../../../../../../../../windows/WindowsUpdate.log

编辑

 还可以

结合上传漏洞,然后文件包含,把恶意代码以脚本运行,从而达到预期操作



2、pikachu(Fiel Inclusion-remote)

2.1、配置:

这一关要打开allow_url_include

编辑

 编辑


将Off改为On编辑


然后再重启

编辑

就好了

编辑




2.2、第一步:分析是否存在文件包含

发现存在include文件包含函数

编辑



2.3、第二步:利用文件包含漏洞

可以直接包含一个含有一句话马文件,被包含后解析执行

(也可以包含一个含有新建shell.php文件并写入恶意代码,被包含后解析执行)


假设我这是在远程服务器新建的文件(让你假设你就和我一起想)

编辑


 在文件里面写入一句马,连接密码写的pass

编辑



再进行远程文件包含

http://127.0.0.1:8080/pikachu-master/test.txt

(假设这个是远程的URL地址)

编辑


2.4、第三步:中国蚁剑连接

 再用中国蚁剑进行连接(菜刀也行)

我觉得蚁剑更强大一些

编辑

 编辑


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。