type
status
date
slug
summary
tags
category
icon
password
文件包含漏洞
程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某个函数的时候,直接使用?php include fuction.php?调用此文件,无需再次编写,这种调用文件的过程通常称为包含。
文件包含漏洞产生原理
文件包含函数加载的参数没有经过过滤或严格定义,可以被用户控制,包含其他恶意文件,导致了执行非预期代码。
通过include()或require()语句,可以将PHP文件的内容插入另一个PHP文件(在服
务器执行它之前)。
include和require语句是相同的,除了错误处理方面:
require会生成致命错误(E_COMPILE_ERROR)并停止脚本
·include只生成警告(E_NARNING),并且脚本会继续
文件上传漏洞-MIME介绍
MlME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。常见的MIME类型,比如:
超文本标记语言文本。html,.html text/html
普通文本。txt text/plain
RTF文本。rtf application/rtf
GlF图形。gif image/gif
JPEG图形。ipeg,jpg image/jpeg
文件上传漏洞-$_FILES()函数
通过使用PHP的全局数组$_FILES,你可以从客户端计算机向远程服务器上传文件。
第一个参数是表单的input name,第二个下标可以是"name","type","size","tmp_name"或"error".就像这样:
- \_FILES\["file"\]\["name"\] 被上传的文件的名称 -_FILES["file"]["type"]被上传文件的类型 -\_FILES\["file"\]\["size"\]被上传文件的大小,以字节计算 -_FILES["file"]["tmp_name"]存储在服务器的文件的临时副本的名称 -$_FILES["file"]["error"]由文件上传导致的错误代码
使用$_FILES()函数验证文件格式,是通过对前端post请求中的表头中包含的类型进行对比,使用DP进行抓包修改表头可以绕过验证。
文件上传漏洞-getimagesize0
Getimagesize()返回结果中有文件大小和文件类型,如果用这个函数来获取类型,从而判断是否是图片的话,会存在问题。(通过读取文件的十六进制的字符串进行判断,因为不同类型的文件十六进制的前几位基本是固定的。)
因为图片头可以被伪造。
通过将图片和和执行文件执行进行绑定即可。
图片木马的制作:
方法1:直接伪造头部GIF89A
方法1.CMD:copy /b test..png+muma.php cccc..png
方法2.使用GIMP(开源的图片修改软件),通过增加备注,写入执行命令
使用的方法一生成的图片转换为十六进制后分为两个部分,前半段为图片的十六进制,后半段为执行文件的十六进制。
在上传图片木马后,可通过使用包含漏洞进行执行。
防范措施
不要在前端使用S实施上传限制策略
通过服务端对上传文件进行限制:
1进行多条件组合检查:比如文件的大小,路径,扩展名,文件类型,文件完整性
2对上传的文件在服务器上存储时进行重命名(制定合理的命名规则)
3.对服务器端上传文件的目录进行权限控制(比如只读),限制执行权限带来的危害
不安全的文件下载概述
文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。
此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。
所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。 切记:所有与前端交互的数据都是不安全的,不能掉以轻心!
你可以通过“Unsafe file download”对应的测试栏目,来进一步的了解该漏洞。
自带防御;魔术引导
内置函数:int等
自定义关键字:select 自定义全局过滤器
WAF防护软件:安全狗,宝塔等