文件包含漏洞
漏洞简述
文件包含就是为了将写好的代码功能更好的重复使用,用文件包含函数,将写好的功能代码直接引入到另一个代码页中,这样另一个代码页就不需要在写一遍重复的功能性代码。
漏洞产生原因
文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
文件包含函数
PHP中文件包含函数有以下四种:
include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。
而include_once(),require_once()这两个函数,与前两个的不同之处在于这两个函数只包含一次,适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包括一次以避免函数重定义,变量重新赋值等问题。
远程与本地包含的区别
本地文件包含就是通过浏览器包含web服务器上的文件,这种漏洞是因为浏览器包含文件时没有进行严格的过滤允许遍历目录的字符注入浏览器并执行。
远程文件包含就是允许攻击者包含一个远程的文件,一般是在远程服务器上预先设置好的脚本。 此漏洞是因为浏览器对用户的输入没有进行检查,导致不同程度的信息泄露、拒绝服务攻击 甚至在目标服务器上执行代码。
本地文件包含与远程文件有着相同的原理,但前者只能包含服务器上存在的文件,而后者可以包含远程服务器上的文件。
动态包含
在使用文件包含的时候,为了更灵活的包含文件,将文件包含的名字处设置为变量,而这个变量是通过GET方式来获取的值,这样既可通过前端所输入的文件名进行包含对应的文件。
漏洞危害
读取WEB程序配置文件
利用这个漏洞并且知道WEB程序的路径便可以读取一些重要的配置文件获取重要信息,例如数据库连接的账号密码等等
利用文件上传漏洞组合getshell
利用文件上传处上传含有恶意代码的合法文件,然后利用文件包含漏洞,将恶意代码解析达到getshell的目的
包含日志文件getshell
这种漏洞利用方式下需要有一定的权限,需要Burp配合修改数据包防止转义。
漏洞防御
Last updated
Was this helpful?