挖漏洞之文件上傳

(一)漏洞原理

文件上傳漏洞是指由于程序員在對用戶文件上傳部分的控制不足或者處理缺陷,而導致的用戶可以越過其本身權限向服務器上上傳可執行的動態腳本文件。這里上傳的文件可以是木馬,病毒,惡意腳本或者WebShell等。
“文件上傳”本身沒有問題,有問題的是文件上傳后,服務器怎么處理、解釋文件。如果服務器的處理邏輯做的不夠安全,則會導致嚴重的后果。

(二)基礎測試方法

一般來講,開發者一般都會對文件上傳部分,進行檢測和過濾,用于檢測文件類型的方法有很多種,按照下面方法,一步一步測試

1、總的測試思路

  • 第一步查看前端js,如果是在前端js實現文件上傳,可以刪掉綁定方法,直接上傳文件
  • 第二步查看是否是黑白名單檢測:黑名單是禁止上傳文件,白名單是只允許上傳文件

????????如果是白名單:尋找可控參數

? ? ? ? 如果是黑名單,可以嘗試找非黑名單以外的有害文件,可以是大小寫不同的可執行文件,比如PhP,也可以是系統配置文件,比如.htaccess文件

??

2、基于白名單的測試

1、針對后綴名測試,可能在邏輯上發生錯誤,從而引發文件上傳漏洞,比如

? ? ? ? 加雙后綴:變成file.php.jpg?或 file.jpg.php,繞過檢測

? ? ? ? 后綴名加空格:變成file.php ,系統無法正確識別實際擴展名“.php”,從而繞過白名單檢測

????????后綴名加點:變成file.php. 這個方法真針對window系統,win系統中對文件名后綴有點的,會省略掉,.php.就變成.php

? ? ? ? 后綴名加入%00,進行截斷比如file.php,變成file.php%00,(這個方法跟版本有關,老版本可能有)

??

2、上傳圖片碼,比如只允許圖片上傳的,把圖片和木馬集合在一起

3、修改檢測值

????????文件頭,比如JPEG (jpg)的文件頭: FFD8FF,在圖片制作的時候,修改文件

????????contnet-type值,修改MIME類型為符合上傳格式類型,比如png是image/png

4、數組新式上傳,如果系統采用數組方式上傳,就自己加上一個值,進行上傳

3、基于黑名單的測試

如果是黑名單檢測文件上傳,可以采用以下測試方法:

1、也是對文件后綴名進行測試,在邏輯上文件上傳漏洞:

? ? ? ? 更改后綴大小寫:比如php變成Php,有可能沒有禁止Php

????????修改后綴名:比如php,換成php3,這是有可能php3沒有被禁止

? ? ? ? 后綴名后加入::$DATA,比如file.php變成file.php::$DATA,這是NTFS交換數據流繞過,# 其中一個冒號表示創建文件,兩個冒號表示寫入文件內容

????????雙寫文件后綴名,比如.php 變成.pphphp,如果存在檢測php文件后替換成空,可以采用這個方法

2、 修改contnet-type值,修改MIME類型為符合上傳格式類型,比如png是image/png

3,上傳系統文件,有時候開發者忽略網站配置文件,

????????php網站.htaccess,讓其上傳圖片也可以當作文件執行

? ? ? ? ..user.ini文件,讓包含一個文件

(三)進階測試方法

有寫開發者只關注禁止上傳腳本文件這一點,只運行上傳符合業務需求的文件,從而針對性的開發,這雖然提升了黑客上傳腳本文件,直接getshell,但是忽略其他漏洞,其實由于文件上傳這一個功能點,可以導致其他漏洞,如下

1)webshell,上傳腳本文件可以webshell

2)xss:

????????文件名插入payload造成xss、

????????上傳html文件造成xss文件(html文件里注入payload)

????????上傳svg文件(一種圖像類型),在屬性中插入payload造成xss漏洞

????????上傳gif文件(一種圖片),在圖片頭注入payload造成xss漏洞

????????上傳pdf文件,在文件中屬性-添加編輯動作內容插入payload,造成xss

????????上傳word文檔,在xml文件部分中,選擇任意文件的文件名中插入大量A,在 hexeditor中找到大量存在41(A的十六進制),把payload轉為十六進制插入,上傳word文檔造成xss

3)xxe(docx、xlsx、svg等本質是xml文件)

????????上傳直接上傳xml文件,造成xxe

????????上傳xlsx文件,在xlsx中找到下xml文件處插入payload,造成xxe

????????上傳docx文件,在xml文件處插入paylaod,造成xxe

????????上傳svg文件,造成xxe

4)命令注入

????????上傳csv文件,在csv插入payload,在導出csv文件中,打開執行命令導致命令執行

????????上傳圖片,對圖片進行二次渲染,插入命令,導致rce

5)目錄遍歷

?????? 上傳壓縮包,服務器對其加壓,可能存在Zip Slip目錄走訪漏洞

6)ssrf

?????? 上傳 ?.URL 文件,打開可能會Windows 上的 SSRF SMB連接,導致ssrf

?????? 導出pdf文件導致ssrf,在發票打印、行程打印、車票打印、保單下載會有導出pdf文件功能,對響應參數進行注入url導致ssrf漏洞

7)DOS攻擊

?????? 上傳圖片,修改文件像素大小,改為無限大,導致DOS

?????? zip遞歸炸彈和非遞歸炸彈

?????? 上傳png文件,解壓造成dos

8)目錄遍歷

?????? 將文件名注入../../../../etc/passwd等paylaod,造成目錄遍歷

9)注入漏洞,

?????? 對文件名注入各種payload,比如sleep(10).png,造成sql注入,注入<h1>test<h1>.png,造成html注入

具體請看:https://mp.weixin.qq.com/s/nMLoTN28WzocRLy8nkq3qw

(四)利用方法

1、上傳腳本文件,直接getshell,獲取目標服務器的控制權

2、造成其他攻擊,參考上面的進階測試方法

(五)防御方法

  • 文件類型驗證:限制允許上傳的文件類型,只允許上傳通過驗證的文件類型,而排除可執行文件、腳本文件或其他危險類型的文件。
  • 文件大小限制:限制上傳文件的大小,以防止攻擊者上傳大文件并消耗服務器資源。
  • 文件名驗證與隨機重命名:對上傳的文件名進行驗證和過濾,防止惡意文件名的使用。同時文件重命名,在保存文件時,使用隨機生成的文件名替換用戶上傳的文件名,避免可預測的文件路徑或文件名暴露
  • 文件內容檢查:在接收到文件后,進行文件內容的檢查和分析,如通過安全掃描工具檢測文件中是否包含惡意代碼。
  • 存儲安全:將上傳的文件存儲在安全的位置,并確保文件無法直接執行,只有只讀的權限
    ?

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

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

相關文章

從線性回歸到神經網絡

目錄 一、線性回歸關鍵思想 1、線性模型 2、基礎優化算法 二、線性回歸的從零開始實現 1、生成數據集 2、讀取數據集 3、初始化模型參數 4、定義模型 5、定義損失函數 6、定義優化算法 7、訓練 三、線性回歸的簡潔實現 1、生成數據集 2、讀取數據集 3、定義模型…

論文代碼閱讀:TGN模型訓練階段代碼理解

文章目錄 [toc] TGN模型訓練階段代碼理解論文信息代碼過程手繪代碼訓練過程compute_temporal_embeddingsupdate_memoryget_raw_messagesget_updated_memoryself.message_aggregator.aggregateself.memory_updater.get_updated_memoryMemoryget_embedding_moduleGraphAttentionE…

什么是W3C標準? 什么要遵循?

Hi i,m JinXiang ? 前言 ? 本篇文章主要介紹HTML5中W3C的標準&#xff0c;需要遵循的規則以及部分理論知識 &#x1f349;歡迎點贊 &#x1f44d; 收藏 ?留言評論 &#x1f4dd;私信必回喲&#x1f601; &#x1f349;博主收將持續更新學習記錄獲&#xff0c;友友們有任何問…

【AIGC】Midjourney高級進階版

Midjourney 真是越玩越上頭&#xff0c;真是給它的想象力跪了~ 研究了官方API&#xff0c;出一個進階版教程 命令 旨在介紹Midjourney在Discord頻道中的文本框中支持的指令。 1&#xff09;shorten 簡化Prompt 該指令可以將輸入的Prompt為模型可以理解的語言。模型理解語言…

Git初學入門指令

git基本指令 初始化&#xff1a; git init查看狀態&#xff1a; git status新建文件&#xff1a; touch <filename>加入暫存區&#xff1a; git add . 或者 git add -A 表示全部加入暫存區 git add <filename>單個文件加入暫存區加入倉庫&#xff1a; …

PCIe中斷總結-各個中斷的區別

1.簡介&#xff1a; PCIe中斷支持三種傳輸方式&#xff1a; ? Legacy: 也稱傳統中斷&#xff0c;Legacy PCI中斷機制,每個PCI設備最多支持四個中斷信號(邊帶信號:INTA# INTB# INTC# INTD#) ? MSI(Message Signaled Interrupt): Post Memory Write,只支持32個中斷向量 ? MSI…

力扣labuladong一刷day35天

力扣labuladong一刷day35天 文章目錄 力扣labuladong一刷day35天一、98. 驗證二叉搜索樹二、700. 二叉搜索樹中的搜索三、701. 二叉搜索樹中的插入操作四、450. 刪除二叉搜索樹中的節點 一、98. 驗證二叉搜索樹 題目鏈接&#xff1a;https://leetcode.cn/problems/validate-bi…

【Linux】如何對文本文件進行有條件地劃分?——cut命令

cut 命令可以根據一個指定的標記&#xff08;默認是 tab&#xff09;來為文本劃分列&#xff0c;然后將此列顯示。 例如想要顯示 passwd 文件的第一列可以使用以下命令&#xff1a;cut –f 1 –d : /etc/passwd cut&#xff1a;用于從文件的每一行中提取部分內容的命令。-f 1&…

Sql server數據庫數據查詢

請查詢學生信息表的所有記錄。 答&#xff1a;查詢所需的代碼如下&#xff1a; USE 學生管理數據庫 GO SELECT * FROM 學生信息表 執行結果如下&#xff1a; 查詢學生的學號、姓名和性別。 答&#xff1a;查詢所需的代碼如下&#xff1a; USE 學生管理數據庫 GO SELE…

為什么需要 Kubernetes,它能做什么?

傳統部署時代&#xff1a; 早期&#xff0c;各個組織是在物理服務器上運行應用程序。 由于無法限制在物理服務器中運行的應用程序資源使用&#xff0c;因此會導致資源分配問題。 例如&#xff0c;如果在同一臺物理服務器上運行多個應用程序&#xff0c; 則可能會出現一個應用程…

【QED】高昂的貓 Ⅰ

目錄 題目背景題目描述輸入格式輸出格式 測試樣例樣例說明數據范圍 思路核心代碼 題目背景 這是小橘。因為它總是看起來很高傲&#xff0c;所以人送外號“高昂的貓”。 題目描述 "錒狗"的房間里放著 n n n ( 1 ≤ n ≤ 1 0 9 ) (1 \leq n \leq 10^9) (1≤n≤109)個…

C# 使用CancellationTokenSource 取消Task執行

寫在前面 在Task創建并執行后&#xff0c;如果狀態發生了變化&#xff0c;需要取消正在執行中的Task&#xff0c;除了使用主線程上的共享變量來判斷之外&#xff0c;更優雅的方式就是就是用CancellationTokenSource來取消任務的執行。 代碼實現 public static void CancelTas…

主流MQ [Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ]

主流MQ [Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ] 一&#xff0c;MQ對比圖 下面是 Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ 的更詳細和專業的對比&#xff1a; 特性/功能KafkaRabbitMQZeroMQRocketMQActiveMQ語言JavaErlangCJavaJava協議自有協議AMQP自有協…

算法工程師-機器學習面試題總結(6)

目錄 1.Bagging的思想是什么&#xff1f;它是降低偏差還是方差&#xff0c;為什么&#xff1f; 2.可否將RF的基分類模型由決策樹改成線性模型或者knn&#xff1f;為什么&#xff1f; 3.GBDT梯度提升和梯度下降有什么區別和聯系&#xff1f; 4.如何理解Boosting和Bagging&am…

基于ssm高校實驗室管理系統的設計與實現論文

摘 要 互聯網發展至今&#xff0c;無論是其理論還是技術都已經成熟&#xff0c;而且它廣泛參與在社會中的方方面面。它讓信息都可以通過網絡傳播&#xff0c;搭配信息管理工具可以很好地為人們提供服務。針對高校實驗室信息管理混亂&#xff0c;出錯率高&#xff0c;信息安全性…

散列卡片懸停變為整齊列表

效果展示 CSS 知識點 transform 屬性運用 頁面整體布局 <ul><li><div class"box"><img src"./user1.jpg" /><div class"content"><h4>Hamidah</h4><p>commented on your photo.<br />…

Excel 數據處理記錄

20231203 excel中的字符串以符號間隔開了&#xff0c;如何將其中的字符串挑出&#xff0c;分別放到其他單元列&#xff1a; 在Excel中打開你的表格&#xff0c;選中包含以符號間隔的字符串的單元格。在頂部菜單中&#xff0c;找到“數據”選項&#xff0c;并選擇“分列”。在…

電腦主板支持的cpu型號匯總

一、如何選擇不同的主板和對應CPU 1、看針腳&#xff1a;網上有相應的參數&#xff0c;只要CPU能安裝到主板中&#xff0c;基本就兼容&#xff0c;這主要取決CPU插槽和主板插槽十分一致。 2、看型號&#xff1a;桌面處理器&#xff0c;只有Intel和AMD兩大平臺&#xff0c;他們對…

dlib是什么?

dlib C Libraryhttp://dlib.net/ dlib是什么&#xff1f; Dlib is a modern C toolkit containing machine learning algorithms and tools for creating complex software in C to solve real world problems. It is used in both industry and academia in a wide range of…

基于SSM的高校共享單車管理系統的設計與實現論文

摘 要 網絡技術和計算機技術發展至今&#xff0c;已經擁有了深厚的理論基礎&#xff0c;并在現實中進行了充分運用&#xff0c;尤其是基于計算機運行的軟件更是受到各界的關注。加上現在人們已經步入信息時代&#xff0c;所以對于信息的宣傳和管理就很關鍵。因此高校單車租賃信…