文件上传

注意:无文件解析安全问题上,格式解析是一对一的(不能 jpg 解析 php)

比如:文件上传时,写了一个一句话木马的PHP文件,将后缀改为了.jpg去上传,那么他将不能执行一句话木马,除非他有后缀解析漏洞或者有解析错误配置。

 

文件上传安全指的是攻击者通过利用上传实现后门的写入连接后门进行权限控制的安全问题。
 
对于如何确保文件上传这类安全问题,一般会从原生态功能中的文件内容,文件后缀,文件类型等方面判断,但是漏洞可能不仅在本身的代码验证逻辑中出现安全问题,也会在语言版本,语言函数,中间件,引用的第三方编辑器等存在缺陷地方配合利用。另外文件上传也有多个存储逻辑(保存逻辑,逻辑不同造成权限不同),不同的文件存储方案也会给攻击者带来不

前端JS

1.查看源代码,查看是否是JS验证

2.也可以抓包验证,如果上传图片文件经过bp且上传.php文件直接显示禁止上传是,则是JS验证,因为抓包是抓数据出去的包,经过浏览器,在发送给对方服务器,服务器回显,发送对方服务器则会经过bp工具,而上传.php文件没有抓包成功,是因为验证就在浏览器产生了,没有发送出去,所以是前端验证。

做法:先上传.jpg文件抓包,然后把文件名改成.php,再连接后门

.htaccess/.user.ini

.htaccess是一个修改解析配置的文件

用法:

服务器是nginx

上传配置文件 .htaccess 或者 .user.ini

这个是文件上传很常规的操作,这两个配置文件都可以让其它类型的文件被当做 php 文件进行解析,具体哪个能用,取决于题目环境的实际情况。

 

文件类型

通过文件类型判断文件后缀

上传.gif抓包:

Content-Disposition:form-data;  name="file";  fliename="1.gif"

Content-type:image/gif

上传.php抓包

Content-Disposition:form-data;  name="file";  fliename="1.php"

Content-type:application/octet-stream

管理员是通过文件类型判断是什么文件

可以通过抓包修改

文件头

通过文件头判断文件后缀

检测文件头

通过添加文头

注意:也要修改文件类型

后缀检测

 黑名单/白名单验证

通过文件后缀判断文件后缀

1.黑名单:检测上传文件后缀是不是在黑名单,在就不通过,不在就通过

没有迭代的问题,只检测一次,无循环

例如:shell.php上传成功将显示成shell.

可以通过重复绕过:例如:shell.pphphp上传成功将显示shell.php

2.白名单:检测上传文件后缀是不是在白名单,在就通过,不在就不通过

00截断

 这种方法只适用于:

1.magic_quotes_gpc=off

2.PHP版本小于5.3.4

文件路径后面添加a.php%00(%00就是截断的意思)

如果路径不在post后面,而在下面则需要将%00进行url的解码过程

原因是:url上面%00自动解码一次

post下面%00需要手工解码一次

 条件竞争

逻辑缺陷:先上传,后面判断,处理逻辑(正常逻辑:先判断,后上传)

处理方法:传入访问既创建代码-〈?php fputs(fopen ('cmd.php','w'),'〈php eval($_REGUEST[1]);?〉');?〉

二次渲染

二次渲染会造成图片里面的代码不存在

检测方式:用010editor将原图片和上传后下载下来的图片进行二进制比较,会出现匹配和差异

做法:要将后门代码放入匹配的位置

函数缺陷

函数:move_uploaded_file($temp_file,$img_path)

条件:目录保存的文件名可控

做法:上传后门文件shell.php在上传框将后缀改成.php/.

 

posted @ 2024-11-22 16:46  x’c  阅读(40)  评论(0)    收藏  举报