滲透測試---webshell與上傳漏洞~文件上傳漏洞與防御思路


php文件上傳源代碼:

前端上傳頁面:upfile.php

上傳處理程序:upload.php

php文件上傳過程分析:

文件長傳檢測控制方法:(繞過方法)

  1. 通過JavaScript檢測文件擴展名(上傳時改為jpg,繞過前端,再抓包改為php)
  2. 服務器端檢測文件傳輸類型content-type(上傳php文件,抓包修改content-type為jpg)
  3. 服務器端擴展名檢測,設置黑白名單(未在黑名單包括,例如特殊執行文件.asa/.cer等可以在IIS執行)(上傳jpg文件,利用中間件解析漏洞,使其被作為可執行文件執行)(通過截斷符號,例如00,上傳a.php0x00.jpg,服務器端從后往前讀是jpg文件,保存文件從前往后讀,00截斷被當作php文件)
  4. 服務器端文件頭內容檢測,通過getimagesize()函數解析文件頭部代碼(在文件頭中添加固定標識)(講一句話木馬嵌入到圖片中,構造圖片碼,上傳文件,再通過解析漏洞或其他方法還原為可執行文件)

圖片格式文件頭標識:

 

00截斷演示:

上傳1.jpg文件,使用burpsuite攔截抓包修改文件名為1.phpp.jpg

 

修改Hex中文件名中phpp的最后一個p編碼為00后,在Raw中看到變化。

 

 

關閉攔截,查看輸出結果。

 

防御思路:

既要做前端的檢測,也要做后端的檢測,但檢測有可能會被繞過,可以對上傳的圖片進行壓縮,改變一句話木馬,使圖片碼失效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM