文件包含漏洞

文件包含漏洞(FIle Inclusion Vulnerability)是指应用程序中存在的一种安全漏洞,攻击者通过利用漏洞可以在应用程序中执行任意代码。文件包含漏洞通常出现在动态网页中,攻击者通过在URL中注入恶意代码,使应用程序将恶意代码作为正常代码执行。

通俗来讲,就是说开发人员开发程序的时候,每次都需要使用多个文件中的代码,很不方便。为了更方便一点,开发人员将被包含的文件设置成为一个变量,然后这样的话可以非常方便的调用这些文件。但是开发人员并没有限制用户是否也可以调用这些文件,这导致了攻击者会利用这个特征进行一些而已操作。注意这些文件包含本身没有漏洞,而是开发人员的疏忽而导致的漏洞。

利用条件

  1. include()等函数通过动态变量的方式引入包含文件

当使用include语句时,被包含的文件中的PHP代码会被执行,而其中的HTML或文本内容会直接输出到页面中

如:eval(“include ‘php://filter/convert.base64-encode/resource=flag.php’;”);

  1. include会尝试包含处理后的文件流

  2. 由于返回的是base64编码的字符串,并非PHP代码

  3. PHP会触发警告并将编码后的字符串作为文本输出

  1. 用户能够控制该动态变量

本地包含

  1. 读取敏感文件

  2. 利用封装协议读源码

  3. 包含图片Getshell

  4. 截断包含

  5. 包含Apache日志Getshell

日志包含

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

利用方法

通过日志文件getshell

  1. 通过burpsuite发送的请求包产生日志数据
  2. 包含日志文件
  3. 写入一句话木马getshell

使用代理工具抓包,在HTTP请求头中插入一句话木马,日志文件会将HTTP请求头的内容(包括其中的一句话木马)当作网站的访问记录保存,再次访问日志文件的时候,其中的一句话木马就会执行,然后就可以使用蚁剑等工具getshell了