文件上传绕过小结
前端检测绕过
关闭JS或者自己写一个上传页面,也可以根据情况使用其他方法。比如如果检测的是文件类型和文件后缀,可以先把要传的木马文件改一下后缀,抓包的时候在改回来。
内容检测绕过
常见的比如检测PHP的标签:<?php
,对于这种情况,在开启了相应配置时,可以采用短开标签,比如<?=
。或者没检测大小写的话切换大小写。如果还不行可以考虑<script language="php">
这种常用于phtml的标签。
对于检测文件头是否是图片的,可以在文件开头补上GIF89a。
还有一些其他的内容检测手段,具体情况可以具体分析。
黑名单绕过
一般黑名单都是检测文件类型和文件后缀。文件类型实在是太容易修改了,直接改content-type即可,这里主要讨论关于文件后缀的绕过。黑名单这东西很难写的特别全,我们主要是利用他的这个点。比如限制了php,我们可以上传phtml,php3,php5等等,甚至可以上传.user.ini,.hatccess这种配置文件。还可以利用一些解析漏洞来进行绕过,下面单独讲一些解析漏洞。
解析漏洞
解析漏洞只有在特定的版本存在,有时间我在补充版本。
IIS解析漏洞
以.asp .asa等作为后缀命名的文件夹下面的文件,都会被当作可执行文件解析,而不会考虑这些文件夹下文件的后缀。
;后面的部分不被解析,比如1.asp;1.jpg,但是如果你利用黑名单检测,你的代码检测到的最终后缀将是jpg。
IIS畸形解析漏洞
比如上传了一个1.jpg,访问的时候输入1.jpg/1.php,会被当作PHP执行。
特定版本和设置的nginx也存在上述漏洞。
apache解析漏洞
一些apache解析文件时,从后往前来确定文件的后缀是啥,比如xxx.php.rar会按照php进行解析。
未完待续
白名单绕过
白名单是最难绕的,一般也是靠解析漏洞或者他没限制传配置文件来绕。比如利用%00截断,传输.user.ini。当然,也可以结合文件包含漏洞来解析木马。
结合文件包含
如果有文件包含,白名单都不管用,任何被包含的文件,都会被解析,文件名是啥都无所谓了。