一。雙文件上傳利用
雙文件上傳意思是通過上傳兩個或多個文件去突破
利用方式:
在存在雙文件上傳漏洞的頁面中,查看上傳的頁面。
方法:(1)f12找到上傳的post表單,action屬性是指定上傳檢測頁面,一般是寫的絕對路徑,比如:xxx.asp/xxx.php。
(2)補全url: https://www.xxx.com/xxx.php(asp)
(3)構造本地post提交表單
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的值為指定上傳頁面即可。
(4)第一個上傳文件是符合條件的(.jpg;.png;.gif等);第二個上傳文件是一句話木馬或者webshell
這樣就可以突破上傳限制,成功上傳木馬到服務器。
原理:
上傳點支持多文件上傳,但是卻只對第一個文件做了過濾
所以上傳只對第一個文件后綴名進行檢測,對第二個文件不進行檢測直接上傳到服務器。
看一段存在雙文件上傳漏洞代碼
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 這樣也可以突破上傳限制。