文件包含漏洞相关

  1. 参考文章
  2. 漏洞相关函数
  3. 本地文件包含漏洞常用文件名
  4. 远程文件包含漏洞
  5. 伪协议
  6. 绕过方式

参考文章

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()

includerequire区别主要是,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端口信息

image-20210420135604161

/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远程文件)

伪协议

image-20210419204006954

还有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 . 添加了文件后缀

  1. 使用文件名+ ? 号绕过
  2. 使用文件名+ #号绕过
  3. 文件名+ 空格绕过

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1944270374@qq.com