文件上传

2022-03-08 13:48:33 浏览数 (1)

文件上传

上传文件的流程: 网页上传 -> 目标服务器的缓存目录 -> 移动到代码规定的目录 -> 重命名(开发) 移动上传文件函数: move_uploaded_file()

1.前端验证绕过: 可以通过burp抓包,删除js验证代码,即可绕过。

2.content-type方式绕过: 通过burp抓包,修改content-type类型为img/jpeg格式

3.黑名单绕过: 具体看黑名单内容,可以用大小写绕过、双写绕过、文件后缀点绕过 如何判断白名单和黑名单: .aaaaaaaaa 如果可以上传就是黑名单,如果不可以上传就是白名单。

  1. .htaccess绕过 上传一个img(实际是php)再上传含有将img文件当做php文件处理的代码的.htaccess文件,即可将img解析为php

5.后缀大小写绕过: 将php改为phP、PhP、pHP、PHp等都可以绕过

6.文件后缀空: 通过burp抓包,在文件名后缀加上一个空格,因windows会自动消除空格,但在后台检测有空格和没空格完全不一样,所以达成绕过

7.文件后缀点绕过: 与文件后缀空同理,用burp抓包,在文件名后缀加上一个点。

DATA(Windows文件流绕过): 利用NTFS文件流,windwos会将含有::DATA的文件默认存储,但在后台检测会检测1.php::DATA,可以达成绕过

9.构造文件后缀绕过: 当后缀.和空都不能用时,可以尝试一下 1.php. . 来绕过 消除文件后面的点和空,windwos自动消除点,达到绕过

10.双写文件后缀绕过 黑名单机制 文件后缀 windwos文件流被写入检测,可以通过pphphp来绕过,检测清除原本有的php,pphphp变成了php.达成绕过

  1. 截断: url编码实际上本质是十六进制,这里是get传参,所以直接在url栏中写,00在计算机中相当于结束标识、计算机识别到十六进制00的时候会自动停止。

12.00截断: get会对网站url传参进行16进制解码,而post不会,所以在传参之后,直接用burp修改16进制

13.图片马: 对图片的内容进行检测, 并不是单单检测文件后缀名 图片马就是将一句话木马和图片合并在一起 为了绕过检测末尾的图片马,可以使用 图片 木马 图片 还可以图片 木马 zip

14.getimagesize 利用getimagesize()函数判断图片大小、格式、高度、宽度等、其实和图片马没有什么太大区别。

15.php_exif模块图片类型绕过 利用php_exif模块检测图片类型,和图片马没什么区别

16.二次渲染绕过: 会对图片进行二次渲染,修复代码。 可以写在gif图片头部(第三行开始写)

17.条件竞争绕过: file_put_contents() 把一个字符串写入文件 利用有这个函数的文件可以生成一个新的文件。 例如:file_put_contents(‘2.php’,‘’) 生成一个2.php文件内容是一句话木马。 因为这里是先上传再检测,在上传之后,检测删除之前,利用file_put_contents()及时生成一个2.php文件就可以了。 18. 条件竞争绕过(2): 和17一样,需要换成图片马。

19.move_uploaded_file()文件移动截断: 和00截断差不多.

20.IIS6.0解析漏洞(一) 解析漏洞: 中间件是根据后缀来区分交给谁来处理。 IIS6.0解析漏洞: IIS是中间件 asp一句话木马: <%eval request(“alva”)%> iis6.0中 默认配置 .asa .cer .cdx 都会当做asp进行处理 上传一个图片马,使用burp抓包进行修改后缀为asa即可。

21.IIS6.0解析漏洞(二) 使用分号,截断 IIS6.0 -> 1.asp;1.jpg -> 可以理解为00截断的变形。 上传一个图片马,把文件名改为 a.asp;1.jpg上传 检测会直接检测到后缀,但在中间件来说,认为a.asp就结束了,所以直接当成asp来解析。

22.IIS6.0文件解析漏洞(三) 将jpg文件放入名为a.asp目录中,iis会将a.asp文件夹中所有文件当做asp解析。 只在iis6.0中有 5.1 和7.5 都没有。 asp站点 iis6.0版本 一般来说aspx的站点会兼容asp

23.PHP-CGI解析漏洞 php和web容器交互有两种方法。 php与nginx交互的时候,php会在本地开一个9000的端口反代,php与nginx交互是通过9000端口 nginx默认以CGI方式支持php解析。 CGI:通用网关接口 在图片地址后面加上/.php即可。

靶场1-前端验证

代码语言:javascript复制
第一关是前端验证绕过,可以利用burp suite抓返回包,将前端验证的js代码删除达到绕过

成功上传文件,现在打开图片地址测试一下是否成功 可以看到成功了

靶场2-Content-Type验证

代码语言:javascript复制
第二关是用Content-Type绕过打开源码,发现这个是后端验证的,会验证上传的文件类型是什么,这里验证的是否为图片,所以直接上传php然后修改content-type为image/jpeg即可成功上传

靶场3-黑名单机制

代码语言:javascript复制
黑名单机制,禁止上传asp、aspx、jsp这时候需要知道:在php中,默认状态下php3 php4 php5 phtml都会被解析为php,所以可以尝试以上方法上传文件。

靶场4-.htaccess文件绕过

代码语言:javascript复制
查看源码得知,php3 php4 php5、大小写方法等全部被设置规则了。.htaccess文件,是一个分布式配置文件,针对于当前目录改变配置的方法,在特定的目录中放一个包含一个或多个指令的文件。.htaccess可以做文件夹密码保护、扩展名伪静态化、禁止特定ip的用户等,此文件规则高于Apache的规则例如:AddType application/x-httpd-php .jpg   这个指令表示 jpg文件当做php文件来执行首先上传一个jpg文件,再将写入AddType application/x-httpd-php .jpg的htaccess文件上传上去

此时在看看是否生效。

靶场5-后缀大小写绕过

代码语言:javascript复制
查看源码发现这里大小写规则并没有写全

直接将木马文件后缀改为PhP

成功绕过

靶场6-文件后缀(空)绕过

代码语言:javascript复制
查看源码,发现只是将文件名换为小写和删除末尾的点,并没有去空格直接上传php文件,使用burp抓包修改

靶场7-文件后缀(点)绕过

代码语言:javascript复制
查看靶场源码,这里只把文件转为小写和去空,没有过滤点,在windows中,后缀.会自动被去掉,所以可以通过在后缀加个点达成绕过

靶场8-::$DATA Windows文件流绕过

源码中,大小写、首尾去空、删除点都被写入规则 我先试了试上传一个php 然后在burp中修改为 php. . 发现这样也能上传,并且生效

代码语言:javascript复制
但毕竟要跟题目对应,这里要求使用 Windows文件流绕过,咱就应题而答Windows文件流绕过,利用ntfs交换数据流(ADS),ADS是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件可以存在多个数据流,通俗点说就是将某个文件“寄宿”在另一个文件上,而在资源管理器中只能看到宿主文件,看不到寄宿文件。

这里保存的时候其实默认 3.txt:$DATA 因为系统默认,所以不会显示

可以看到确实能够生效,对于后端检测来说,3.txt和3.txt:DATA肯定是不一样的,所以这里可以直接上传 alva.php:DATA

在访问的时候,直接访问alva.php 因为保存在windows系统上之后::$DATA这串字符就不存在了,实际上保存的是alva.php

靶场9-构造文件后缀绕过

代码语言:javascript复制
通过查看源码,发现文件末尾点和首尾空格、大小写、windows文件流都被写入规则,但这里只删除文件末尾的一个点,我们用 . .的方式还是可以绕过的。

靶场10-双写文件后缀绕过

代码语言:javascript复制
这个双写文件后缀绕过,看着就很熟悉。没错xss也有这样的绕过方法  <scscriptript>alert(1)</scscriptript>
代码语言:javascript复制
既然这里是替换,那就让他替换呗,我多写一次不就行了嘛

.

靶场11-截断绕过

代码语言:javascript复制
通过查看源码发现,这里将格式限制为jpg等图片格式,但这里进行了移动文件重命名进行保存,可以使用截断,00在计算机来说可以说是结束标识。这里会先检测是否是jpg,然后再移动文件位置,进行重命名,在移动的时候可以通过修改路径,在后面添加00截断后面的。相当于将文件重命名的时候,重命名为alva.php    这里经过测试,不用删除重命名之后的时间文件名也可以生效

靶场12-00截断绕过

代码语言:javascript复制
这里也是00截断,其实跟靶场11的一样,get会去对url栏中的数据进行16进制解码,实际上url编码本质就是16进制,这里用的是post传参,不会对数据进行16进制解码,所以直接用burp抓包修改它的16进制

上传成功,查看是否生效

代码语言:javascript复制
同11,删除与不删除重命名之后的日期都可以生效

靶场13-图片马绕过

代码语言:javascript复制
这个靶场这里会对图片的内容进行检测,而并不是单单检测文件后缀名,这时候就可以用图片马来绕过,将真实的图片与一句话木马合并在一起,这样既可以用图片方式打开也可以用php方式打开。有时候有些检测会检测末尾,这种情况可以使用 图片 木马 图片,将木马放在中间。在cmd中将php和图片合并 命令如下: copy 1.jpg/b   2.php 3.jpg实际上是将两者转换为二进制,然后进行粘合

合并成功,现在测试测试上传是否成功

靶场14-getimagesize图片类型绕过

这一关使用了一个getimagesize()函数,来返回图片内容,比如高度宽度等 其实和靶场13差不多。

代码语言:javascript复制
这里我上传的是一个gif图片马

靶场15-php_exif模块图片类型绕过

这里用exif模块的imagetype判断图片类型是否为gif、jpg、png格式 直接上传上一关的gif图片马,上传成功

靶场16-二次渲染绕过

代码语言:javascript复制
二次渲染:会对图片进行二次修改,上传之后会被处理,这时候用普通的图片马就会被直接处理掉,这里可以将一句话木马写在gif图片的头部。

打开发现图片有点变化,直接上传试试

成功绕过

靶场17-条件竞争

代码语言:javascript复制
条件竞争这里,源码是先上传之后再检测,这时候木马会被删除,但是可以使用file_put_contents()函数生成一个新的木马文件,检测只会检测上传的文件,不会检测这个文件。语法:    <?php file_put_contents('2.php','<?php @eval($_REQUEST[8])?>');?>直接上传一个alva.php内容是上面的内容,让他生成一个一句话木马文件2.php,只要上传速度够快,电脑删除的速度就跟不上我。先随便上传一个文件得到路径,然后利用burp循环8000次上传,和8000次访问。

得到路径 抓包开跑,跑线上环境,很明显,我脸被打烂了,跑不过来 可恶!竟然真的跑不过来。 老老实实本地搭建吧。。

上传的文件内容。 开始本地抓包跑…… 开始源码错误,后来修改测试了一下上传的文件的源码直接放入文件夹去访问,是可以成功生成2.php的,循环很多次后还是没跑出来,我直接放弃了,希望辅导员见谅啊啊啊啊啊,末尾附上我的上传文件和生成的文件。确实是没问题的,线程30的50都没能跑出来

靶场18-条件竞争(2)

代码语言:javascript复制
和条件竞争1差不多,这里需要上传图片马,由于17我死都没跑出来这里也没能复现了。

靶场19-move_uploaded_file()截断

代码语言:javascript复制
这里其实和00截断一样,这里重命名了上传的文件,直接抓包

靶场20-IIS6.0解析漏洞(一)

代码语言:javascript复制
IIS是一种web中间件,6.0是iis的版本号。解析漏洞的原理:中间件是根据文件的后缀名来决定由什么进行处理的。这里上传一个图片格式的文件,然后使用burp抓包修改后缀为`.asa、.cer、.cdx`,因为这里使用的是白名单机制,asp并没有在白名单中。而iis6.0中默认配置`.asa .cer .cdx`会当做asp进行处理

将一句话木马文件和图片进行合并。

图片显示正常且十六进制中存在一句话木马。 burp开启抓包,上传文件,修改后缀

文件上传成功。

靶场21-IIS6.0解析漏洞(二)

代码语言:javascript复制
通过查看页面源码,发现这里白名单中并不存在.asa .cer .cdx,并且还会判断图片大小要小于200KB这时候第一种方法就不能使用了这里有另外一种方法,类似于00截断,就像写php一样,用;号当做结束标识,这时候可以将文件名改为alva.asp;1.jpg,在iis解析的时候,解析到asp后识别到有个分号结束,就自动将asp进行处理

上传成功,使用菜刀找到flag进行提交

靶场22-IIS6.0解析漏洞(三)

代码语言:javascript复制
查看源码理解了一下,发现这里好像是固定jpg后缀才行,要求上传jpg那我就上传jpg嘛。
代码语言:javascript复制
诶,发现这里竟然直接上传成功并且能够连上菜刀,还能找到flag
代码语言:javascript复制
其实这里也是利用了iis6.0的解析漏洞,这个漏洞在其他一些版本并不存在,将目录名命名为a.asp,那么这个a.asp文件夹里面的所有文件都会以asp的方式来解析。

靶场23-PHP-CGI解析漏洞

代码语言:javascript复制
在nginx中,默认以CGI方式处理php。 在IIS7.0、IIS7.5、Lighttpd等也经常会出现这样的漏洞。只要在图片地址后面加上一个/.php,就会直接当做php进行执行,绕过解析。上传一个含有php一句话木马的文件即可。

0 人点赞