男女做爽爽爽网站-男女做羞羞高清-男女做爰高清无遮挡免费视频-男女做爰猛烈-男女做爰猛烈吃奶啪啪喷水网站-内射白浆一区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

【WEB開發】文件上傳常見防御與突破總結

admin
2025年5月13日 23:39 本文熱度 42

一、簡介

文件上傳是指用戶上傳了一個可執行腳本,并通過此腳本文件獲得了執行服務器端命令的能力。通過就是上傳一句話木馬,然后通過菜刀來連接服務器。要完成這個攻擊,需要下面的三個條件:

1.上傳的文件能夠被web容器解釋執行,所以文件上傳后所在的目錄要是web容器所覆蓋到的路徑。

2.用戶能夠從web上訪問這個文件,如果文件上傳了,但用戶無法通過web訪問,或者無法使得web容器解釋這個腳本,那也不能稱之為漏洞、

3.用戶上傳的文件沒有被安全檢查,格式化,圖片壓縮等功能改變了內容;如果改變了內容則可能導致攻擊不成功。

PS:文件上傳功能在大多數的web應用中都存在,比如用戶頭像上傳,文章內容的圖片,視頻,音頻,附件上傳,一些cms系統上傳模板文件,數據庫備份文件,插件文件等地方

二、防御

在實際的測試過程中,我們總是發現程序對上傳了文件做了各種限制,導致文件上傳不成功。常用的限制文件上傳的方式有:

1.黑名單過濾(根據文件擴展名)

2.白名單過濾(根據文件擴展名)

3.檢測上傳文件的文件頭(服務器端MIME類型檢測)

4.服務器內容檢測,檢測是否有惡意代碼

5.服務端目錄路徑檢測(檢測和path相關的參數)

三、繞過限制上傳

找到了下面的一個圖片,總結的挺全的。

1.黑名單方式

1)文件大小寫繞過:嘗試使用大小寫來進行上傳,如ASP,PHp等文件名2)名單列表繞過用名單里沒有的名單進行攻擊,例如可以上傳php2,php3,php4,inc,pwml,asa,cer等文件。

能被解析的文件擴展名列表:jsp jspx jspfasp asa cer aspxphp php2 php3 php4 perl(pl)exe exee

3)特殊文件名繞過在windows中空格是不允許的,上傳文件以后會自動去掉空格,如上傳test.asp_(下劃線代替空格)4)0x00截斷繞過假如這時候獲取到的文件名是 test.asp[\0].jpg(asp后面為 0x00) 而在 gettype()函數里處理方式是從后往前掃描擴展名,所以判斷為jpg;在很多語言的函數中,比如在c,PHP等語言的常用字符串處理函數中,0x00被認為是終止符。

5).htaccess文件攻擊

但是Apache版本高于2.3.9上傳.htaccess就不在生效。(實際測試生效)

配合名單列表繞過,上傳一個自定義的.htaccess,就可以輕松繞過各種檢測

該文件僅在Apache平臺上存在,IIS平臺上不存在該文件,該文件默認開啟,啟用和關閉在httpd.conf文件中配置。該文件的寫法如下:

<FilesMatch "_php.gif">?SetHandler application/x-httpd-php</FilesMatch>

保存為.htaccess文件。該文件的意思是,只要遇到文件名中包含有”_php.gif”字符串的,統一按照php文件來執行。該文件在Apache里默認是啟用的,如果沒啟用,啟用方法見:http://www.jb51.net/article/25476.htm 然后就可以上傳一個帶一句話木馬的文件,例如a_php.gif,會被當成php執行。該方法其實不是漏洞,是Apache的特性。該方法常用于黑客入侵網站之后,不想被發現,留一個隱蔽的后門。在PHP手冊中提到一句話,move_uploaded_filesection,there is awarning which states‘If the destination file already exists,it will be overwritten.’服務器端如果采用了黑名單的形式限制上傳,但是黑名單中卻沒有.htaccess文件,那么我們可以上傳.htaccess文件覆蓋掉原來的文件。

6)解析調用/漏洞繞過

這類漏洞直接配合上傳一個代碼注入過的非黑名單文件即可,再利用解析調用/漏洞。如下面的解析漏洞

Apache解析漏洞:Apache對于文件名的解析是后往前解析的,直到遇到一個Apache認識的文件類型。比如:phpshell.php.rar.rar.rar.rar,Apache不認識rar這個文件類型,所有會一直遍歷到php。Apache認識的文件類型定義在Apache的mime.type文件中。(Apache 1.x,2.x)

nginx和iis7.5/7.0解析漏洞

此解析漏洞其實是php的配置錯誤導致。

php為了支持path info模式創造了fix_pathinfo這個選項,當它被打開時,fpm就會判斷請求的文件是否存在,如果不存在就去掉最后一個\開始的內容,再次查看文件是否存在,不存在再去掉從\開的內容,循環往復。所以當請求http://192.168.1.100/admin/upload/shell.jpg/.php這么個文件時,fpm會把/.php去掉把shell.jpg當作php執行。

后來出現了seccurity.limit_extensions選項,這個選項默認配置.php文件才能被fpm執行。

利用條件:1、fast-cgi模式運行2、Fix_pathinfo為1 (默認為1)3、seccurity.limit_extensions選項允許。(默認只解析.php

ISS文件解析漏洞

1);截斷,當文件名為abc.asp;xx.jpg時,iis6會將此文件解析為abc.asp2)文件夾拓展名出錯,導致/*.asp/目錄下的所有文件都作為asp文件進行解析。(iss6)

7)PHP CGI路徑解析問題:nginx配置fastcgi使用PHP時,會存在文件解析漏洞。


2.白名單檢測

1).htaccess文件攻擊

白名單檢測可以通過.htaccess的文件方式來進行利用


四、文件頭檢測

1)偽造一個合法的文件頭,而將真實的php代碼附在合法的文件頭以后。圖像文件相關信息檢測常用的就是 getimagesize()函數

2)我們可以通過抓包,將content-type字段改為image/gif

POST /upload.php HTTP/1.1TE: deflate,gzip;q=0.3Connection: TE, closeHost: localhostUser-Agent: libwww-perl/5.803Content-Type: multipart/form-data; boundary=xYzZYContent-Length: 155--xYzZYContent-Disposition: form-data; name="userfile"; filename="shell.php"Content-Type: image/gif (原為 Content-Type: text/plain)php system($_GET['command']);?>--xYzZY-

3) 在木馬內容基礎上再加了一些文件信息,有點像下面的結構

GIF89a<?php phpinfo(); ?>


五、文件加載檢測

繞過方法:

針對渲染加載測試:代碼注入繞過

針對二次渲染測試:攻擊文件加載器


六、配合操作系統文件命令規則

(1)上傳不符合windows文件命名規則的文件名

1、文件名長度最大為255個英文字符。(或者是127個中文字符+1個英文字符)2、全路徑最大長度最大為260個字符。3、訪問文件不區分大小寫(部分應用程序使用時除外),顯示文件時有大小寫。4、開頭不能使用空格,其他地方可以。5、文件名不能包含:< > | / \ * ? :  test.asp.  test.asp(空格)  test.php:1.jpg  test.php::$DATA  shell.php::$DATA…….會被windows系統自動去掉不符合規則符號后面的內容。

(2)linux下后綴名大小寫

?在linux下,如果上傳php不被解析,可以試試上傳pHp后綴的文件名。1、文件名最大長度為2552、全路徑長度最大為4096(16級最大文件長度)3、區分大小寫4、除“/”之外所有字符都可以使用5、linux不以文件擴展名區分文件類型,對linux來說一切皆文件。

七、zip數據包可能導致的問題

1.未處理解壓文件

2.為遞歸檢測上傳目錄導致繞過

3.條件競爭繞過

4.解壓產生異常退出實現逃過

5.解壓特殊文件實現繞過(../)

繞過方式做一個總結

操作

說明

前端禁用JS

前端限制,禁用JS,去除input標簽的accept屬性

修改文件后綴

抓包工具,修改文件后綴為黑名單之外的后綴

修改文件后綴

修改文件后綴為index.jpg.php

修改文件后綴

%00截斷,比如index.php%00.jpg

修改文件后綴

文件名末尾添加::$DATAwindows會把::$DATA之后的數據當成文件流,不會檢測后綴名.且保持::$DATA之前的文件名

修改文件后綴

linux主機上的文件名大小寫敏感,文件后綴大小混寫

修改文件后綴

在文件末尾添加空格,黑名單的方式沒法兒檢測

修改文件類型

抓包工具,修改Content-Type:image/png

修改文件后綴

修改文件名shell.php:.jpg,上傳后會得到一個空的文件shell.php,然后修改文件名為shell.>>>或者shell.<shell.<<<shell.>><再上傳,重寫shell.php

換行解析

Apache2.4.0~2.4.29換行解析漏洞%0d%0a(CR,LF(回車,換行))

未知后綴名

Apache配置AddHandler application/x-httpd-php .php不當導致未知后綴腳本執行

后綴名正則替換

這種需要構造,使得替換之后的可以重組成為新的可執行后綴,雙后綴名繞過

修改上傳路徑

name="upload_file/1.php%00"; filename="shell.jpg"

條件競爭

條件競爭刪除/重命名文件時間差繞過

圖片馬

copy code.jpg/b + shell.php/b hourse.jpg

圖片重繪包含馬

做一個就好了

上傳壓縮包

配合PHP偽協議、文件協議等讀取執行本地文件

數據庫寫文件

UDFselect查詢輸入


八、防止文件上傳的方式

在做實際項目的時候,一般我們只會關注7,8,9。

文件權限做控制,上傳文件做控制,訪問權限做控制。

九、總結

本篇文章總結了常見的文件上傳方式,以及在一些過濾情況下的繞過方式,最后還說了如何通過正確的方式去防止文件上傳漏洞。


閱讀原文:原文鏈接


該文章在 2025/5/14 9:29:03 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 麻豆app2.24.15.15安卓版下载 | 伧理片午夜伧理片毛片日本 | 色咪咪网站 | 久久久久久夜精品 | 中文字幕精品波多野结衣 | 日韩一区二区三区射精百度 | 日本波多野结衣字幕久久 | 国产小视频免费在线观看 | 国产一卡2卡3卡4卡有限公司 | 国产99久久亚洲综合精品 | 自拍偷拍欧美亚洲 | 青青久久精品一本一区人 | 毛片黄色视频 | 国产真实乱子伦清晰对白 | 国产精品一区二区免费在线 | 韩国高清一区二区午夜无码 | 亚洲国产福利精品一区二 | 久久国产亚洲欧美久久 | 综合天天 | 一级毛片在线直接观看 | 成人精品免费视频大 | 欧美日韩国产在线激情综合 | 亚洲国产一成久久精品国产成人综合 | 日韩人妻高清精品视频 | 久久久久久九九99精品 | 国产高清在线露脸一区 | 久久99国产精品成人 | 高潮喷水精品无码喷水av | 中文字幕精品一区久久久久 | 黄色网址www | 国产深夜男女无套内射 | 欧美日韩一区中文在线 | 久青草国产在视频在线观看 | 高清国产拍精品5g | 国产精品一区二区精品一区二区精品一区二区精品 | 97夜夜澡人人爽人人 | 高清日韩电影免费在线观看视频播放中文字幕 | 国产精品边做奶水狂喷小说 | 2021全国精品卡一卡二 | 亚洲国产精品无码久久电影 | 久996视频精品免费观看 |