文件上传漏洞
- 文件上传漏洞是指由于程序在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件(恶意文件)
靶场实操
Pass-01 前端验证绕过
存在文件类型检测,仅允许jpg\png\gif类文件上传
- JS代码运行在我们本地,所以通过浏览器禁用js即可绕过检测(更标准做法是上传jpg文件抓包改后缀)
Pass-02 Content-Type方式绕过
- 后端检测,仅能上传image\jpg类型文件
- 首先上传一个 图片马 可以是 jpg格式的
- 使用burp抓取上传文件包
- 可以直接在数据包中修改
filename
后面的参数
例如把 filename="1.jpg"
修改为 filename="1.php"
phpinfo()成功 [上传php木马文件成功后都可以测试一下是否能phpinfo()]
Pass-03 黑名单绕过
- 禁止了一些文件类型,以及格式的检测
- php执行不单只有
.php
后缀的文件才可以执行php代码,还可以写.php3
、.php4
、.php5
、.phtml
- jsp代码可以通过
.jsp
、jspx
、jspf
后缀文件执行 - asp代码可以通过
.asp
、.asa
、.cer
、.aspx
后缀文件执行 - exe还可以通过
.exee
文件执行
- 上传.phtml后缀的一句话木马文件
- 更改文件类型后连接菜刀
Pass-04 .htaccess文件绕过
.htaccess分布式配置文件(针对不同文件夹可以有不同的规则,默认不开启)
限制了文件类型及格式
编写.htaccess文件(意思是上传的jpg文件可以当做php执行)
首先上传.htaccess文件,再上传写了一句话木马的jpg文件
Pass-05 后缀大小写绕过
- 禁用文件类型,一些格式检测
- 上传包含一句话木马的jpg文件,抓包改文件后缀,并更改大小写(大小写格式没有被包含在代码限制中)
Pass-06 文件后缀(空)绕过
- 过滤了文件类型,增加了强制小写
- 上传包含一句话木马的jpg文件,抓包修改文件名并在后缀加上空格
- php和php 不是一个情况
Pass-07 文件后缀(点)绕过
- 文件类型过滤,转小写,增加了收尾去空
- 同样上传包含木马的jpg文件,抓包修改后缀并在结尾加一个.
Pass-08 ::$DATA(Windows文件流绕过)
- 文件类型过滤,转小写和收尾去空,并增加了祛除结尾的点
- 文件备用流中如123.php::$DATA等同于123.php
>> 浏览器输入时需要删除::$DATA
Pass-09 构造文件后缀绕过
- 文件类型过滤,转小写和收尾去空,祛除结尾的点,增加了祛除字符串
- 没有循环检测,尝试增加后缀复杂度,上传jpg文件抓包更改后缀并增加如. .的方式上传
Pass-10 双写文件后缀绕过
- 文件类型限制,有替换功能,出现限制的文件类型后直接删除关键词
- 但同样没有循环检测,上传文件修改后缀为如pphphp,检测会删除中间的php,剩下的p和hp可以组成php后缀
Pass-11 00截断绕过
Pass-12 00截断绕过(二)
- %00是url编码,通过抓包修改16进制将%00塞到数据中
Pass-13 图片马绕过
- 检测文件内容信息,根据标识符判断是否是一个图片文件
- 图片马:图片和木马结合。图片必须越小越好,本地测试成功再使用
- 准备一张图片和一句话木马的php文件,将两个文件合并输出为图片马(/b是指二进制)
Pass-14 getimagesize图片类型绕过
- 同样制作一个图片马
>> 夹心图片马:图+马+图
Pass-15 php_exif模块图片类型绕过
- php_exif 用于读取标头查看图片信息
- 同样上传图片马
Pass-16 二次渲染绕过
- 二次渲染:把图片重新渲染一次,根据图片把图片重做一次,可以清除掉其中写入的代码
- 图片有一些基础属性是无法改变的,如图片的开头标头不会变(jpg\png很难绕过二次渲染,gif属性多好绕过)
- 在hex中编辑写入一句话木马
Pass-17 条件竞争绕过
【条件竞争在本地搭建环境复现】
- 对上传和访问进行爆破(因为只需要频繁访问直到创建了小木马文件即可)
Pass-19 move_uploaded_file()截断
- 也是一个00截断,抓包修改路径,通过hex修改00
Pass-20 IIS6.0解析漏洞(一)
- iis是web容器,如IIS\APACHE\NGINX
- 该漏洞仅存在于IIS 6.0版本。解析漏洞在于可以根据漏洞以特殊访问手法或特殊后缀名可以被当做后端代码执行(例如类似的.htaccess)
- IIS 6.0 => Windows Server 2003全版本默认安装自带IIS 6.0(ASP站点可以尝试一下这个漏洞)
- asa\cdx\cer在这个版本中都会当做asp执行
Pass-21 IIS6.0解析漏洞(二)
- IIS 6.0在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞,如:test.asp;.jpg 会被当做asp进行解析 | test.asp/123.jpg 被当做asp进行解析
- 上传包含asp一句话木马的jpg文件,抓包修改文件后缀
Pass-22 IIS6.0解析漏洞(三)
- 如果上传文件存在文件夹名存在.asp,则会认为该文件夹中所有文件都是asp文件
Pass-23 CGI解析漏洞(四)