龙空技术网

十大常见web漏洞——文件包含漏洞

科技兴 171

前言:

今天兄弟们对“web十大漏洞”可能比较珍视,看官们都想要学习一些“web十大漏洞”的相关资讯。那么小编同时在网络上网罗了一些关于“web十大漏洞””的相关知识,希望大家能喜欢,你们快快来学习一下吧!

之前我们讲过文件上传漏洞,当一个网站文件上传限制做的十分到位,攻击者无法轻易上传他们想要上传的文件之后,他们就另辟蹊径,将恶意代码镶嵌在正常文件之中,上传后执行,就可以运行其中的的恶意代码,这就造成了文件包含漏洞。

藏在文件里的恶意代码

那么,攻击者是如何将恶意代码藏入文件里的呢?

我们还是以图片文件为例,正常情况下,我们浏览图片会用专门的图片查看器或画图工具,但是当我们用一些程序编辑器或者记事本打开图片时,就会看到一些乱码,如图用记事本打开.jpg型文件:

用记事本打开0.jpg

攻击者可以将恶意代码放入这些乱码之中,通常情况下会在开始或者最后,为了混淆视听,攻击者还会加入其它无关代码,来帮助隐藏这些恶意代码,当我们用图片浏览工具查看这些包含了恶意代码的图片时,肉眼看不出和正常图片的任何差别,当攻击者上传了这些所谓的“图片”文件到站点服务器以后,就会想办法执行其中的恶意代码,从而达到控制站点服务器的目的。

除了以上包含外,还有在请求地址参数中包含指定地址文件的包含,PHP常见的导致文件包含的函数如下:include(),include_once(),require(),require_once(),fopen(),readfile(),例如:,这是我现在在头条编辑文章的地址,其中有个“pgc_id”参数,值为“6826537800523842052”,当我把值换成“”时,而参数传输过程中经过以上几种函数,它就有可能会执行webshell.php文件,可能是在你网站服务器根目录下生成一个一句话木马,从而连接这个木马来控制你站点服务器,如果这个指定地址的文件是在站点服务器本地计算机里,这就叫做“本地文件包含”,如果这个指定地址的文件不在站点服务器本地计算机里,这就叫做“远程文件包含”。

文件包含漏洞防御

1、设置白名单

代码在进行文件包含时,如果文件名可以确定,可以设置白名单对传入的参数进行比较。

2、过滤危险字符

由于Include/Require可以对PHP Wrapper形式的地址进行包含执行(需要配置php.ini),所以需要判断文件名称是否为合法的PHP文件。

3、设置文件目录

PHP配置文件中有open_basedir选项可以设置用户需要执行的文件目录,如果设置目录的话,PHP仅仅在该目录内搜索文件。

4、关闭危险配置

HP配置中的allow_url_include选项如果打开,PHP会通过Include/Require进行远程文件包含,由于远程文件的不可信任性及不确定性,在开发中禁止打开此选项,PHP默认是关闭的。

标签: #web十大漏洞 #web10大漏洞