Web渗透09_文件包含漏洞
1 文件包含漏洞描述
开发人员编写代码时独立性好是一个很重要的要求,这边一个数据库类,那边一个模型类。几百行的整体代码,在整合时两行行代码就可以包含进来使用。文件包含有助于独立的代码之间的配合!有时引入外部一个插件,也要用到文件包含。以较少的代码量去开发整个应用。不仅方便,代码量少,还美观易阅读。
文件包含常用到include import。这些写在文件头部的包含代码,在预编译时会完整的拷贝到当前文件中来。 下面这段c++代码几乎是绝大多数计算机专业学习程序设计的第一段代码,输出 Hello World!。看似只有7行代码,如果大家真的有看过预编译完成后的代码,就会发现,这段代码中#include<iostream>这一行变成了整整 6000 多行代码。
#include<iostream>
using namespace std;
int main(int argc, char** argv)
{
cout << "Hello world!\n";
return 1;
}
1.1 漏洞产生原因
一些开发人员为了方便将文件包含的路径设置为变量,进行动态调用,来应对一些复杂的情况。这种并非写死的调用,若被发现编写漏洞,那么客户端甚至都可以控制包含的文件,造成文件包含漏洞。
1. Web存在动态文件包含
2. 包含路径客户端可控
若存在这个漏洞,一切防御措施都是无效的,一句话木马或者大马过不了安全狗,但是这个漏洞却可以让这些木马过安全狗。
文件包含是所有脚本语言都有的功能,但是在php的应用中漏洞相对出现的可能性较大。 asp jsp中少一点。下面详述以下PHP文件包含漏洞。
1.2 C编译原理
每个编写 C语言 的应用都有一个 gcc 编译器。这个是在 VC VS Dev 里可以找到的。
.c-> 预处理器(cpp) -> .i -> 编译器(ccl) -> .s -> 汇编器(as) .o -> 链接器(ld) -> .exe


2 PHP文件包含
2.1 函数
| 函数 | 区别 |
|---|---|
| include | 包含文件,包含失败产生警告并继续运行 |
| include_once | 文件仅被包含一次,包含失败产生警告并继续运行 |
| require | 包含文件,包含失败产生错误并结束运行 |
| require_once | 文件仅被包含一次,包含失败产生错误并结束运行 |
2.2 相关配置
allow_url_fopen = On (允许打开URL文件,预设启用)
本选项激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象例如文件。默认的封装协议提供用 ftp 和 http 协议来访问远程文件,一些扩展库例如 zlib 可能会注册更多的封装协议。
index.php?path=./info.php # 以本地相对或绝对路径包含
allow_url_include = Off (禁止引用URL文件,新版增加功能,预设关闭)
本选项激活了 URL 形式的 fopen 封装协议使得可以凭借include, include_once, require, require_once.访问 URL 对象例如文件。
index.php?path=https://www.baidu.com/robos.txt # http ftp方式的地址包含
两者中 后者影响力更大
2.3 包含特点
- 无视文件类型,以文件源编码的格式打开 (包含图片打开是图片的编码)
- 无条件执行文件中存在的PHP代码
图片木马的又一种执行方式。
2.4 空字符绕过限制
CVE-2006-7243 在PHP版本小于5.3.4且关闭了魔术引号的配置 magic_quotes_gpc=off 。利用空字符 也就是00截断绕过对包含文件后缀名的限制。
PHP编程中会遇到一些模板视图的包含,下面这个简单的程序对所包含文件后缀名有一个限制。
<?php
if(isset($_GET['path'])){
include $_GET['path'] . ".html";
}else{
echo $_GET['path'];
}
?>
http://1.2.3.4/index.php?path=info.php%00即可截断后面的.html。造成PHP文件代码执行。
3 PHP文件包含利用
3.1 包含敏感文件
?path=c:\windows\system32\drivers\etc\hosts
3.2 直接包含本机图片木马
?path=/upload/image/Muma.jpg包含一句话木马。用菜刀对该页面进行连接。
4 PHP封装协议
4.1 file://
可以利用PHP的file://协议访问服务器本地文件系统。
?path=file://c:\windows\system32\drivers\etc\hosts
4.2 php://
可以利用PHP的php://协议传输服务器本地任意PHP文件内容。
?path=file://filter/read=convert.base64-encode/resource=info.php这段代码将info.php的内容以base64的编码进行输出,解码即可查看源码内容。
<?php phpinfo();?>
5 其他的一些方法
利用日志文件,通过burp抓包修改,通过get请求,于日志文件中写入一句话木马。再包含日志文件即可执行。

代码审计,通过Seay代码自动审计系统可以发现很多漏洞,其中就能发现包括文件包含漏洞。结合一些其他漏洞,把木马文件包含进去就行。

Web渗透09_文件包含漏洞的更多相关文章
- web安全原理-文件包含漏洞
前言 起来吃完早饭就开始刷攻防世界的题,一个简单的文件包含题我竟然都做不出来我服了 拿出买的书开始从头学习总结文件包含漏洞! 一.文件包含漏洞 文件包含漏洞 文件包含函数的参数没有经过过滤或者严格的 ...
- 风炫安全web安全学习第三十四节课 文件包含漏洞防御
风炫安全web安全学习第三十四节课 文件包含漏洞防御 文件包含防御 在功能设计上不要把文件包含的对应文件放到前台去操作 过滤各种../,https://, http:// 配置php.ini文件 al ...
- 风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击
风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击 文件包含漏洞 参考文章:https://chybeta.github.io/2017/10/08/php文件包含漏洞/ 分类 ...
- 记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)
题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag i ...
- PHP文件包含漏洞攻防实战(allow_url_fopen、open_basedir)
摘要 PHP是一种非常流行的Web开发语言,互联网上的许多Web应用都是利用PHP开发的.而在利用PHP开发的Web应用中,PHP文件包含漏洞是一种常见的漏洞.利用PHP文件包含漏洞入侵网站也是主流的 ...
- PHP文件包含漏洞攻防实战
本文对PHP文件包含漏洞的形成.利用技巧及防范进行了详细分析,并通过一个真实案例演示了如何利用PHP文件包含漏洞对目标网站进行渗透测试,最终成功获取到网站的WebShell. PHP是一种非常流行的W ...
- phpmyadmin任意文件包含漏洞分析(含演示)
0x01 漏洞描述 phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发. 最新的CVE-2014-8959公告中,提到该程序多个版本存在任意文件包含漏洞,影响版本如下: ...
- Nagios Looking Glass 本地文件包含漏洞
漏洞名称: Nagios Looking Glass 本地文件包含漏洞 CNNVD编号: CNNVD-201310-682 发布时间: 2013-10-31 更新时间: 2013-10-31 危害等级 ...
- php安全开发(1)文件包含漏洞
开发过程总结的漏洞: 一,,如何造成包含漏洞:在通过函数包含文件时,由于没有对包含的文件名进行有效的过滤处理,被攻击者利用从而导致了包含了Web根目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶 ...
- Kali学习笔记31:目录遍历漏洞、文件包含漏洞
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 目录遍历漏洞: 应用程序如果有操作文件的功能,限制不严 ...
随机推荐
- Windows系统下硬盘S.M.A.R.T硬盘检测工具——硬盘检测工具(CrystalDiskInfo)
CrystalDiskInfo是由日本人hiyohiyo个人开发的小工具,能全面详细直观的检查硬盘的健康状态及各种参数. 绿色版软件. 官方下载地址: https://crystalmark.info ...
- php curl访问https 域名接口一直报错的问题
这两天一直在对接一个https的接口 通过本地postman完美链接后再服务器一直报错 出现问题:linux 下 curl可以正常访问 但是PHP请求一直返回false 测试方法:var_dump(c ...
- stm32中NVIC如何配置?
1.NVIC优先级分组 2.初始化NVIC // NVIC优先级分组 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); // NVIC初始化 NVIC_I ...
- Wetab新标签页:内置实用小组件的浏览器扩展,重新定义浏览器主页
除了社交媒体,浏览器可能是我们日常工作.学习和生活中最常用的平台之一.然而,在使用浏览器的过程中,我们经常被书签管理.标签管理等问题所困扰.例如,书签栏混乱不堪,无法快速查找到所需书签. 为了和浏览器 ...
- 圣诞节快乐,教你用shell脚本实现一颗圣诞树。【小酷炫】
前言 圣诞节到了! 一口君在这祝各位粉丝朋友圣诞节快乐! 祝各位考研的同学金榜题名! 祝找工作的朋友offer接到爆! 祝各位老板新年大发财源! 在此一口君特地用shell脚本画了一个圣诞树! 先来看 ...
- Linux嵌入式所有知识点-思维导图-【一口君吐血奉献】
一.前言 很多粉丝问我,我的Linux和嵌入式当初是如何学习的? 其实彭老师在最初学习的过程中,走了相当多的弯路: 有些可以不学的花了太多的时间去啃 有些作为基础必须优先学习的,却忽略了, 结果工作中 ...
- CVSS(Common Vulnerability Scoring System)打分规则解读
CVSS(Common Vulnerability Scoring System)提供了一种根据漏洞的主要特征进行打分,反映其严重性的方法.CVSS 已成为被广泛使用的标准. 下面是CVSS 3.1版 ...
- ArcGIS创建渔网工具的使用方法
本文介绍在ArcMap软件中,通过"Create Fishnet"工具创建渔网,从而获得指定大小的矢量格网数据的方法. 首先,我们在创建渔网前,需要指定渔网覆盖的范围.这里 ...
- 关于vscode自动格式化的坑(Prettier - Code formatter)
在入坑vscode的时候在网上找了一些扩展包,其中有一款名为Prettier - Code formatter的代码格式化工具,其作用为当按下ctrl+s的时候自动进行格式化(当你进行格式化操作的时候 ...
- Navicat 15 for MySQL 破解教程
Navicat 15 for MySQL安装包和注册机下载: 安装包:https://kohler.lanzouh.com/irtcd05za1zc 注册机:https://kohler.lanzou ...