一。双文件上传利用php
双文件上传意思是经过上传两个或多个文件去突破html
利用方式:web
在存在双文件上传漏洞的页面中,查看上传的页面。shell
方法:(1)f12找到上传的post表单,action属性是指定上传检测页面,通常是写的绝对路径,好比:xxx.asp/xxx.php。服务器
(2)补全url: https://www.xxx.com/xxx.php(asp)post
(3)构造本地post提交表单url
1 <form action="https://www.xxx.com/xxx.asp(php)" method="post" 2 name="form1" enctype="multipart/form‐data"> 3 <input name="FileName1" type="FILE" class="tx1" size="40"> 4 <input name="FileName2" type="FILE" class="tx1" size="40"> 5 <input type="submit" name="Submit" value="上传"> 6 </form>
利用时只需改action的值为指定上传页面便可。spa
(4)第一个上传文件是符合条件的(.jpg;.png;.gif等);第二个上传文件是一句话木马或者webshellcode
这样就能够突破上传限制,成功上传木马到服务器。orm
原理:
上传点支持多文件上传,可是却只对第一个文件作了过滤
因此上传只对第一个文件后缀名进行检测,对第二个文件不进行检测直接上传到服务器。
看一段存在双文件上传漏洞代码
1 for i=0 to ubound(arrUpFileType) 2 if fileEXT=trim(arrUpFileType(i)) then 3 EnableUpload=true 4 exit for 5 end if 6 next
一开始EnableUpload=false,可是进入上面的for循环以后,它判断了文件类型是否合法。若是合法,EnableUpload值为True,因此当第一个文件是合法文件时,就不在检测日后的文件。
双文件上传漏洞是一个比较老的漏洞,其修复也很简单,就是只支持一个文件上传便可。
今天偶尔看到这个漏洞,虽然知道利用方法,可是利用原理仍是不懂,因此拿出来仔细看看这个漏洞。
利用方法其实不少:也能够在上传时抓包,把反应包复制一份,再把filename改为任意名字,如:filename1 这样也能够突破上传限制。
原文出处:https://www.cnblogs.com/Da4er/p/11559922.html