文件上傳詳細版

文件上傳造成因素:

文件路徑過濾不嚴格,可能通過遍歷目錄來獲得文件,也可能通過文件上傳對重要文件案進行覆蓋,還可能對文件拓展名和文件類型過濾不嚴格,可以上傳任意文件到web公開目錄上,進而遠程控制服務器

繞過

這篇文章判斷漏洞類型的圖片很言簡意賅一文解讀文件上傳漏洞 - 2xixi3 - 博客園

前端-js繞過

原理:

我理解的前端一般就是過濾文件拓展名,如果不符合過濾條件就會攔截在前端(上傳后F12網絡就看不到數據流),所以目的是先過去再解析

這是上傳png之類的有文件流

這是其他類型文件根本上傳不到后端

參考【文件上傳繞過】——前端檢測_前端js驗證漏洞_實驗四:文件上傳漏洞【實驗名稱】文件上傳漏洞【實驗目的】繞過javascript驗證檢-CSDN博客

方法:

(1)直接網頁禁用js

(2)bp抓包放包,把jpg圖片碼上傳抓包改為.php

常見的也就這兩種方法

后端

檢查后綴

黑名單

可能會限制.php/.asp,隨便上傳文后綴件名例如.stp,可以就是黑名單

(1)上傳可解析特殊后綴

(2)上傳.htaccess文件,其實就是改變目錄配置,在目標目錄上上傳一個命令文件作用于該目錄及其所有子目錄,【前提看web站點架構為:php+apache , 保證文件上傳到本地 , apache開對.htaccess支持;(bp抓包看請求頭來判斷)】

<FilesMatch "evil.gif">
SetHandler application/x-httpd-php   #在當前目錄下,如果匹配到evil.gif文件,則被解析成PHP代碼執行
AddHandler php5-script .gif          #在當前目錄下,如果匹配到evil.gif文件,則被解析成PHP代碼執行
</FilesMatch>

(3) 后綴大小寫繞過

(4)點繞過:隨便輸后綴名不行就是白名單1.php.(Windows 系統下,文件后綴名最后一個點會被自動去除,Linux 系統下不會)

(5)空格繞過(Windows系統下,對于文件名中空格【demo.php(空格)】會被作為空處理,程序中的檢測代碼卻不能自動刪除空格,從而繞過黑名單。)

(6)::$DATA:?? a.php::$DATA(在windows下,無法直接測試::$DATA,因為windows不允許后綴名中存在特殊字符;因為windows會將 a.php::$DATA認為NTFS文件的一個數據流而不是文件,因此會被當成非法文件名)

(7)配合解析漏洞

Apache:

一般解析:后綴名無法識別就像上解析(從右到左)eg:a.php.a.s會解析成a.php

換行解析:在2.4.0~2.4.29版本里有一個解析漏洞,如果在文件名后面加一個換行符x0A服務器依舊會把文件當成php解析,但是可以繞過黑名單(注意:不能是\x0D\x0A,只能是一個\x0A)

IIS:

上傳文件抓包在server Microsoft里的版本是IIS/6.0,三個方法,一個創建.asp目錄,在目錄上上傳1.php木馬文件,會當作asp解析;一個圖片第三個,直接改名;另一個是.asp;.jpg會被當作.asp解析(省略分號后面的部分)? 至于怎末創建.asp目錄,bp抓包上傳請求

    POST /upload.php HTTP/1.1...Content-Disposition: form-data; name="file"; filename="shell.jpg"Content-Disposition: form-data; name="path"; filename="image.asp"  // 嘗試創建目錄

至于怎末上傳文件到指定目錄

Content-Disposition: form-data; name="path"; filename="image.asp"  // 指定目錄

也可以用穿越目錄(沒過濾../的情況下)

Content-Disposition: form-data; name="file"; filename="../image.asp/shell.jpg"

IIS/7.0

制作圖片碼,打開圖片,訪問圖片路徑并且在后加上 /.php

Nginx:

解析漏洞:Server是nginx/1.17.8上傳 圖片碼,在訪問路徑下加上.php

換行解析:nginx因為00截斷錯誤地解析了請求的 URI ,將獲取到用戶請求的文件名解析為對應的腳本程序,導致出現權限繞過、代碼執行等連帶影響(版本Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7)上傳圖片碼抓包,服務器通常有以下配置

location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;include fastcgi_params;
}

參考資料:“文件上傳”配合中間件“解析漏洞”_中間件解析漏洞配合文件上傳-CSDN博客

?白名單

反之白名單

(1)MIME繞過(HTTP請求頭中的Content-Type屬性繞過,eg:Content-Type: text/html

(1)(2)(3)補充知識看:文件上傳漏洞總結(含原因+防御措施)+白名單+黑名單+內容、頭+解析漏洞/修補方案_00截斷修復方案-CSDN博客

(2)%00截斷:%00被服務器解碼為0x00發揮了截斷作用

(3)0x00截斷:利用ASCII碼為0這個特殊字符,讓系統認為字符串已經結束

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77153.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77153.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77153.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華為網路設備學習-19 IGP路由專題-路由策略

一、 二、 注意&#xff1a; 當該節點匹配模式為permit下時&#xff0c;參考if else 當該節點匹配模式為deny下時&#xff1a; 1、該節點中的apply子語句不會執行。 2、如果滿足所有判斷&#xff08;if-match&#xff09;條件時&#xff0c;拒絕該節點并跳出&#xff08;即不…

智能指針之設計模式4

前面的文章介紹了使用工廠模式來封裝智能指針對象的創建過程&#xff0c;下面介紹一下工廠類 enable_shared_from_this的實現方案。 4、模板方法模式 在前面的文章分析過&#xff0c;enable_shared_from_this<T>類是一個工廠基類&#xff0c;提供的工廠方法是shared_f…

【Nova UI】十、打造組件庫第一個組件-圖標組件(下):從.svg 到 SVG Vue 組件的高效蛻變?

序言 在組件庫開發的精彩旅程中&#x1f680;&#xff0c;我們已經成功打造并完善了圖標組件體系&#xff0c;賦予其強大的功能和豐富的表現力&#x1f389;。然而&#xff0c;隨著業務版圖的不斷擴張&#x1f310;&#xff0c;手動逐個編寫 SVG Vue 組件的傳統方式&#xff0…

Golang | 倒排索引

文章目錄 倒排索引的設計倒排索引v0版實現 倒排索引的設計 通用搜索引擎 v.s. 垂直搜索引擎&#xff1a; 通用搜索引擎&#xff1a;什么都可以搜索&#xff0c;更加智能化垂直搜索引擎&#xff1a;只能搜自家數據庫里面的內容&#xff0c;一般都帶著搜索條件&#xff0c;搜索一…

Windows 10 上運行 Ollama 時遇到 llama runner process has terminated: exit status 2

在 Windows 10 上運行 Ollama 時遇到 llama runner process has terminated: exit status 2 錯誤&#xff0c;可能是由多種原因引起的。以下是逐步解決方案&#xff1a; 1. 檢查 Ollama 服務狀態 按 Win R 輸入 services.msc&#xff0c;找到 Ollama 服務&#xff0c;確保其狀…

PCI 總線學習筆記(五)

PCI 總線學習系列&#xff0c;參考自 技術大牛博客&#xff1a; PCIe 掃盲系列博文連載目錄篇 書籍&#xff1a;王齊老師的《PCI Express 體系結構導讀》 下面的文章中加入了自己的一些理解和實際使用中遇到的一些場景&#xff0c;供日后查詢和回憶使用 PCI 總線定義了兩類配置…

Spring Cloud Alibaba VS Spring Cloud

??Spring Cloud Alibaba 與 Spring Cloud 組件對比? ??服務發現與注冊中心? 功能???Spring Cloud???Spring Cloud Alibaba?對比說明??核心組件?EurekaNacosNacos 支持動態配置管理、健康檢查更靈活&#xff0c;且提供 DNS 服務發現能力。????健康檢查??…

Java—— 常見API介紹 第五期

JDK8以后新增的時間相關類 Date類ZoneId&#xff1a;時區Instant&#xff1a;時間戳ZoneDateTime&#xff1a;帶時區的時間 日期格式化類 SimpleDateFormat DateTimeFormatter&#xff1a;用于時間的格式化和解析 日歷類 Calendar LocalDate&#xff1a;年、月、日LocalTime…

Java與Kotlin在Android開發中的全面對比分析

趨勢很重要 語言發展背景與現狀 Android操作系統自2008年正式發布以來&#xff0c;Java長期作為其主要的開發語言。這種選擇源于Java語言的跨平臺特性、成熟的生態系統以及廣泛開發者基礎。然而&#xff0c;隨著移動開發需求的快速演變&#xff0c;Java在Android開發中逐漸暴…

第一部分:git基本操作

目錄 1、git初識 1.1、存在的問題 1.2、版本控制器 1.3、git安裝 1.3.1、CentOS平臺 1.3.2、ubuntu平臺 2、git基本操作 2.1、創建倉庫 2.2、配置git 3、工作區、暫存區、版本庫 4、基本操作 4.1、場景一 4.2、場景二 4.3、修改文件 5、版本回退 6、撤銷修改 …

正則表達式與python使用

一、Python正則表達式基礎 1. 導入模塊 Python通過 re 模塊實現正則表達式功能&#xff0c;需先導入模塊&#xff1a; import re2. 核心語法 普通字符&#xff1a;直接匹配字面值&#xff08;如 a 匹配字符 a&#xff09;。元字符&#xff1a; \d&#xff1a;匹配數字&…

從FP32到BF16,再到混合精度的全景解析

筆者做過目標檢測模型、超分模型以及擴散生成模型。其中最常使用的是單精度FP32、半精度FP16、BF16。 雙精度"FP64"就不說了&#xff0c;不太會用到。 #1. 單精度、半精度和混合精度 單精度&#xff08;FP32&#xff09;、半精度&#xff08;FP16&#xff09;和混合…

Hot100方法及易錯點總結2

本文旨在記錄做hot100時遇到的問題及易錯點 五、234.回文鏈表141.環形鏈表 六、142. 環形鏈表II21.合并兩個有序鏈表2.兩數相加19.刪除鏈表的倒數第n個節點 七、24.兩兩交換鏈表中的節點25.K個一組翻轉鏈表(坑點很多&#xff0c;必須多做幾遍)138.隨機鏈表的復制148.排序鏈表 N…

不在同一個局域網的遠程桌面連接怎么設置?本地內網計算機讓其他網絡遠程訪問6種常用方法

遠程桌面是一種重要的技術&#xff0c;它允許用戶通過網絡遠程訪問和控制另一臺計算機的桌面界面。但是&#xff0c;當被控制端和控制端不在同一個局域網內時&#xff0c;就需要進行一些額外的配置。本文將詳細介紹在不同局域網下設置遠程桌面的步驟&#xff0c;以幫助讀者順利…

天機學堂day10作業,完善兌換優惠券功能

UserCouponServiceImpl /*** 兌換碼兌換優惠券* param code*/TransactionalOverridepublic void exchangeCoupon(String code) {//1、校驗code是否為空if (StringUtils.isBlank(code)) {throw new BadRequestException("非法參數&#xff01;");}//2、解析兌換碼&…

JAVA工程師面試題(七)

1、遞歸實現1,1,2,3,5,8,….第30個數是多少&#xff1f; public static int Foo(int i) { if (i < 0) return 0; else if(i > 0 && i < 2) return 1; else return Foo(i -1) Foo(i - 2); }…

Qt基礎009(HTTP編程和QJSON)

文章目錄 軟件開發網絡架構BS架構/CS架構 HTTP基本概念QT的HTTP編程JSON數據概述QT生成JSON數據QT解析JSON數據 軟件開發網絡架構 BS架構/CS架構 ? 在計算機網絡和軟件開發中&#xff0c;CS架構&#xff08;Client-Server Architecture&#xff0c;客戶端-服務器架構&#x…

高精度電流檢測革命:同軸分流器的創新應用與技術演進

一、精密測量原理與結構創新 基于電磁場分布重構技術的新型同軸分流器&#xff0c;突破了傳統電流測量的物理限制。該器件采用三維環形電阻矩陣結構&#xff0c;通過多層級導電環的精密排列&#xff0c;實現了電流路徑的渦流自補償。區別于常規分流器的平板式設計&#xff0c;其…

【使用層次序列構建二叉樹(數據結構C)】

使用層次序列構建二叉樹&#xff08;C語言實現&#xff09; 在數據結構學習過程中&#xff0c;二叉樹的構建方式通常有遞歸建樹&#xff08;前序/中序&#xff09;和層次建樹&#xff08;廣度優先&#xff09;兩種。本文將介紹一種基于輔助隊列實現的層次建樹方法&#xff0c;并…

設置Rocky Linux盒蓋不休眠的3個簡單步驟

在 Rocky linux&#xff08;和其他基于 RHEL 的發行版&#xff09;中&#xff0c;當你關閉筆記本電腦的蓋子時&#xff0c;默認行為通常是使系統休眠。如果你想更改這一行為&#xff0c;例如&#xff0c;使系統在關閉蓋子時只是鎖定&#xff0c;你可以按照以下步驟操作&#xf…