posts - 4,comments - 0,views - 20252

首先,上传的文件路径必须的清楚的,文件可被访问并且能执行。

文件上传验证的种类

1.客户端js验证

通常我们看见网页上会有一段js脚本,用它来验证上传文件的后缀名,其中分为黑白名单的形式,一般情况下只验证后缀名。

判断:当你在浏览器中浏览加载文件,但没有点击上传按钮时就会弹出对话框,比如:只允许上传.jpg/.jpeg/.png后缀名的文件,可此时并没有发送数据包。

2.服务器端验证

*文件头content-type字段校验(image/gif)

前面情况同上(客户端js验证),可用burpsuite抓包改包,即将content-type字段改为image/gif。

*文件内容头校验(gif89a)

几个常见的文件头对应关系:
(1) .JPEG;.JPE;.JPG,”JPGGraphic File”

(2) .gif,”GIF 89A”

(3) .zip,”Zip Compressed”

(4) .doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfile”

*文件后缀名绕过

       黑名单验证:

       (1)大小写绕过,如pHp,aSp等。

       (2)可能被解析的文件扩展名,如jsp:jspx,jspf ;asp:asa,cer,aspx ;php:php2 php3 php4 ;exe:exee。

       白名单验证:

(1)0x00截断绕过

(2)解析调用/漏洞绕过                     

3.  配合文件包含漏洞

前提:校验规则只校验当文件后缀名为asp/php/jsp的文件内容是否为木马。

绕过方式:(这里拿php为例,此漏洞主要存在于PHP中)

(1)先上传一个内容为木马的txt后缀文件,因为后缀名的关系没有检验内容;

(2)然后再上传一个.php的文件,内容为<?php Include(“上传的txt文件路径”);?>

此时,这个php文件就会去引用txt文件的内容,从而绕过校验,下面列举包含的语法:

#PHP   

<?php Include("上传的txt文件路径");?>

#ASP   

<!--#include file="上传的txt文件路径" -->

#JSP   

<jsp:inclde page="上传的txt文件路径"/>

or 

<%@include file="上传的txt文件路径"%>

详细参考:文件包含漏洞(绕过姿势)

4.  配合服务器解析漏洞绕过

详细可参考:http://thief.one/2016/09/21/服务器解析漏洞/

5.  配合操作系统文件命令规则

6.  CMS、编辑器漏洞

7.  配合其他规则

8.  WAF绕过

参考:http://www.mamicode.com/info-detail-2116088.html

http://www.cnblogs.com/lgf01010/p/9516445.html

posted on   青i  阅读(2476)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示