零基礎在實踐中學習網絡安全-皮卡丘靶場(第九期-Unsafe Fileupload模塊)(yakit方式)

本期內容并不是很難,相信大家會學的很愉快,當然對于有后端基礎的朋友來說,本期內容更加容易了解,當然沒有基礎的也別擔心,本期內容會詳細解釋有關內容

本期用到的軟件:yakit(因為經過之前好多期的學習,我相信大家已經足夠了解yakit,哪怕不熟悉,至少也知道各個模塊有什么用)

我們先來翻譯一下這個單詞組合是什么意思(不安全的文件上傳),和之前我們學到的RCE,File inclusion有一點相似,但是希望大家仔細觀察,不要搞混

介紹

不安全的文件上傳漏洞概述

文件上傳功能在web應用系統很常見,比如很多網站注冊的時候需要上傳頭像、上傳附件等等。當用戶點擊上傳按鈕后,后臺會對上傳的文件進行判斷 比如是否是指定的類型、后綴名、大小等等,然后將其按照設計的格式進行重命名后存儲在指定的目錄。 如果說后臺對上傳的文件沒有進行任何的安全判斷或者判斷條件不夠嚴謹,則攻擊者可能會上傳一些惡意的文件,比如一句話木馬,從而導致后臺服務器被webshell。

所以,在設計文件上傳功能時,一定要對傳進來的文件進行嚴格的安全考慮。比如:
--驗證文件類型、后綴名、大小;
--驗證文件的上傳方式;
--對文件進行一定復雜的重命名;
--不要暴露文件上傳后的路徑;
--等等...

你可以通過“Unsafe file upload”對應的測試欄目,來進一步的了解該漏洞。

個人評價:會用到非常多的"米奇妙妙工具",只要有一定的開發基礎理解起來會非常容易(沒有的也別擔心,會一一解釋的,只是領悟的時間問題而已)

適用場景:有文件上傳功能的網站都可以

實際反饋:用起來很簡單,但是很多大廠會有過濾,而且沒有長時間的后端了解,盲目進行"米奇妙妙工具"的開發會非常艱難,甚至耗費大量時間,結果沒用(在此也強調,如果你幸運的擁有大佬們發出來的"米奇妙妙工具",請你使用時關掉殺軟或者斷網進行測試,不要亂傳,不僅可能會鋃鐺入獄,還會讓大佬們分享出來的東西被徹底分析透,導致工具失效

一,client check

原理

它一般指檢查客戶端輸入的安全性。當用戶上傳文件時,系統會驗證文件的擴展名是否符合要求,防止惡意文件被上傳。比如,檢查上傳的文件是否是圖片(如.jpg、.png)而不是可執行文件或其他潛在危險的文件。

就好像一個高中的保安一樣,通過識別學生的胸牌和校服來決定他是否可以進入校園

但是同樣的,找個看起來很年輕的人,讓他穿校服,然后偽造一個胸牌,他也可以進入

實踐

有了前幾期的了解,我們會知道,前端的很多防護形同虛設,有了自由上傳的環境后,就到了我們大展拳腳的時候

因此,我就有了第一個最簡單的方法進行攻擊

也就是禁止JavaScript

這個在之前的暴力破解模塊中就有說到,通過禁止JavaScript可以使他簡單的前端防護失效

不過在此之前,我們需要先構建一個木馬(這個木馬是針對服務器的)(為了防止大家迷惑,所以關于木馬的知識我會之后單獨出一期的,大家先了解本期的理論內容)


<?php  @eval($_POST['shell']); ?>

當然了,知己知彼,方能百戰百勝,我們先來分析一下這是什么東西

該代碼的主要功能是執行客戶端通過 POST 請求發送的 'shell' 參數中的 PHP 代碼。黑客可以將惡意 PHP 代碼放入 'shell' 參數,服務器端接收到后會直接執行,從而實現遠程代碼執行,對服務器進行控制、竊取數據、發起攻擊等惡意操作。

<?php 和 ?>這是PHP代碼的開始和結束標簽,用于包裹PHP腳本代碼。
@這是PHP的錯誤抑制運算符,它會關閉錯誤報告,即使代碼執行失敗,也不會輸出任何錯誤信息。這是一種隱藏惡意行為手段,使得代碼執行中的錯誤不會被發現。
eval()這是一個PHP函數,它會將傳入的字符串作為PHP代碼來執行。它是這段代碼的核心危險所在。
任何通過$_POST['shell']傳遞的字符串都會被當作PHP代碼執行。
$_POST['shell']這是PHP的超全局變量,用于接收通過POST方法發送的數據。
shell是一個鍵名,攻擊者可以通過構造特定的POST請求,將惡意代碼傳遞到這個鍵中。

不了解的朋友可能看不懂,但是別擔心,努力學習,都會明白的,畢竟我可以把理論說的通俗一點,但是專用性的內容真的沒辦法

我們來試一下,木馬后綴改為php(切記放入殺毒軟件的白名單里,不然剛做出來就被殺了)

可以看到,成功了

同樣在打開F12后我們可以看到他的前端防護暴露出來了


onchange="checkFileExt(this.value)"

刪掉就沒問題了

上傳之后我們可以通過各類連接方面的"米奇妙妙工具"來進行更大的破壞,我之后會同關于木馬的講解一起發出來的,因為我們首先要了解的是理論基礎

至此,client check完成

二,MIME type

原理

首先,翻譯一下什么是MIME 和MIME type

MIME(Multipurpose Internet Mail Extensions,多用途互聯網郵件擴展)類型,最初設計用于在電子郵件傳輸中標識內容格式,現廣泛應用于互聯網,向服務器和客戶端提供文件信息,幫助它們知道如何處理文件。

組成結構?:由兩部分組成,即類型(Type)和子類型(Subtype)。類型表示文件的通用類別,如文本、圖像、音頻、視頻等;子類型則進一步細化,具體說明文件的格式,如純文本、HTML 文檔、JPEG 圖像等。

作用機制?:當客戶端向服務器請求文件時,服務器會根據文件的 MIME type 來確定如何處理和傳輸文件。客戶端接收到文件和對應的 MIME type 后,根據已知的類型和子類型,判斷如何顯示或處理文件,比如用特定的程序打開、在瀏覽器中直接渲染等。

就好像超市進行商品分區一樣,哪怕你是從大山里剛被現代人類帶回來,只要認識中文后,進入商城后看分區牌子就知道這是干什么的,大概就是類似于日常生活中"標簽"這個概念

實踐

直接發送我們可以看到不行,但是我們現在知道MIME的概念了

我們還是用熟悉的yakit抓個包

我們直接換格式(也就是我們原理中談到的MIME這個東西的使用)

換成他要的格式(這里以image/jpg格式為例,別的格式可以自己嘗試比如image/jpeg)

發送,成功

三,getimagesize

原理

同樣,我們先來分析,解釋這是什么意思

getimagesize()?是一個 PHP 函數,主要用于獲取圖像文件的尺寸信息(例如寬度和高度)以及其他相關信息,比如圖像的類型(格式)和 MIME 類型。如果函數感知不到是圖像類型就沒用

假設你有一堆照片,每張照片的背面都貼著一個小標簽(MIME),上面寫著這張照片的尺寸、照片的樣式(比如紙質打印的那種和正式的紅底,藍底,白底照片)和其他一些信息(比如拍攝日期)

檢查照片:想象你正拿著一張照片,首先確認這張照片是真的,而不是一張廢紙。

查看標簽:你在照片背面找到那個標簽,上面有它的尺寸信息,拍攝時間

讀取信息:你仔細看標簽上的內容,比如是2025年拍攝的,它是一張彩色的全家福。getimagesize()?函數做的也是類似的事情,它讀取圖像文件中的標簽信息。

整理信息:你把這張照片的尺寸、格式等信息記錄下來,方便之后使用。getimagesize()?也會把這些信息整理成一個數組,讓你可以方便地使用這些數據。

實踐

其實很簡單,既然他的函數要識別的到,那我們就給他圖片,但是后面加上東西(類似于上面說過的扮演成高中生的社會人士,因為穿了校服,保安就不容易發現)

由此我們就有了攻擊思路

也就是把圖片和木馬內容整合在一起

我們先用記事本打開一個圖片(記住要符合他的傳送內容的要求)

在這里也解釋一下為什么圖片用記事本打開會是亂碼

為了更好理解我們就用簡單的方式來說,如果有朋友想要詳細了解,可以自己查找,在此不過多贅述:圖片用記事本打開就好像用勺子吃牛排,牛排做的再好,用勺子你也吃不好

然后把木馬內容放在結尾(放在結尾是因為函數通常是通過文件特征來識別是什么格式的,放在末尾更安全)

當然用yakit也是可以的,也是將木馬內容放在末尾就好,再次便不再贅述

至于之后如何啟用連接的話,也會同之后的木馬內容一并發出來

至此Unsafe Fileupload模塊完成

通過本期內容,我們了解了一下關于木馬的知識點,也學會了如何制造一個簡單的木馬,雖然簡單,但是需要大家進行自主嘗試,比如這次是要圖片格式的,那以后用其他文件格式的應該怎么搞,需要舉一反三

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

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

相關文章

生信服務器 | 做生信為什么推薦使用Linux服務器?

原文鏈接&#xff1a;生信服務器 | 做生信為什么推薦使用Linux服務器&#xff1f; 原文鏈接&#xff1a;生信服務器 | 做生信為什么推薦使用Linux服務器&#xff1f; ---- 原文鏈接&#xff1a;生信服務器 | 做生信為什么推薦使用Linux服務器&#xff1f; ---- 原文鏈…

OpenCV 圖像色彩空間轉換與摳圖

一、知識點: 1、色彩空間轉換函數 (1)、void cvtColor( InputArray src, OutputArray dst, int code, int dstCn 0, AlgorithmHint hint cv::ALGO_HINT_DEFAULT ); (2)、將圖像從一種顏色空間轉換為另一種。 (3)、參數說明: src: 輸入圖像&#xff0c;即要進行顏…

高斯列主元消去法——python實現

高斯列主元消去法 1. 高斯消去法 高斯消去法是一種求解線性方程組 A x b A\mathbf{x} \mathbf{b} Axb 的方法&#xff0c;通過逐步化簡增廣矩陣&#xff0c;將其變為上三角矩陣&#xff0c;從而方便求解未知數。 線性方程組的一般形式為&#xff1a; { a 11 x 1 a 12 x…

linux下安裝elasticsearch及ik分詞器

linux下安裝elasticsearch及ik分詞器 安裝版本 linux版本&#xff1a;centos7.5 es版本&#xff1a;elasticsearch-7.14.0-linux-x86_64.tar.gz 下載地址&#xff1a;https://www.elastic.co/downloads/past-releases#elasticsearch Ik版本&#xff1a;elasticsearch-analysi…

相機Camera日志分析之三十一:高通Camx HAL十種流程基礎分析關鍵字匯總(后續持續更新中)

【關注我,后續持續新增專題博文,謝謝!!!】 上一篇我們講了:有對最普通的場景進行各個日志注釋講解,但相機場景太多,日志差異也巨大。后面將展示各種場景下的日志。 通過notepad++打開場景下的日志,通過下列分類關鍵字搜索,即可清晰的分析不同場景的相機運行流程差異…

【配置篇】告別硬編碼:多環境配置、@ConfigurationProperties與配置中心初探

摘要 本文是《Spring Boot 實戰派》系列的第五篇&#xff0c;聚焦于企業級應用開發中至關重要的配置管理。文章將首先解決開發、測試、生產環境配置不同的痛點&#xff0c;詳細介紹 Spring Boot 的 Profile&#xff08;多環境配置&#xff09; 機制。接著&#xff0c;我們將深…

代碼隨想錄算法訓練營第60期第六十三天打卡

大家好&#xff0c;我們昨天講解的是拓撲排序與Dijkstra算法的樸素版&#xff0c;其實我們大致了解了兩種算法的代碼實現&#xff0c;我們通過上次博客了解到拓撲排序其實是可以判斷圖里是否存在環&#xff0c;而Dijkstra算法則使用于非負邊權最短路的求解&#xff0c;今天我們…

linux中如何在日志里面檢索nowStage不等于1的數據的指令

你想在 Linux 中查找日志文件中 nowStage 不等于 1 的所有 JSON 行&#xff0c;當前你已經使用了&#xff1a; Bash 深色版本 grep -rn "nowStage" ./ 這個命令可以找到包含 "nowStage" 字樣的所有行及其所在的文件名和行號&#xff0c;但還不能篩選出 no…

【習題】DevEco Studio的使用

判斷題 1. 如果代碼中涉及到一些網絡、數據庫、傳感器等功能的開發&#xff0c;均可使用預覽器進行預覽。 正確(True) 錯誤(False) 正確答案: 錯誤(False) 知識點 預覽器的使用。解析&#xff1a;預覽器只支持對頁面的預覽&#xff0c;如果代碼中涉及到一些網絡、數據庫、…

SpringBoot實現簡易直播

當下直播技術已經成為各類應用不可或缺的一部分&#xff0c;從社交媒體到在線教育&#xff0c;再到電子商務和游戲領域&#xff0c;直播功能正在被廣泛應用。 本文將介紹如何使用SpringBoot框架構建一個直播流推拉系統。 一、直播技術基礎 1.1 推流與拉流概念 直播系統的核心…

xcode 各版本真機調試包下載

下載地址 https://github.com/filsv/iOSDeviceSupport 使用方法&#xff1a; 添加到下面路徑中&#xff0c;然后退出重啟xcode /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

DL00871-基于深度學習YOLOv11的盲人障礙物目標檢測含完整數據集

基于深度學習YOLOv11的盲人障礙物目標檢測&#xff1a;開啟盲人出行新紀元 在全球范圍內&#xff0c;盲人及視覺障礙者的出行問題一直是社會關注的重點。盡管技術不斷進步&#xff0c;許多城市的無障礙設施依然未能滿足盲人出行的實際需求。尤其是在復雜的城市環境中&#xff…

Python 訓練 day46

知識點回顧&#xff1a; 不同CNN層的特征圖&#xff1a;不同通道的特征圖什么是注意力&#xff1a;注意力家族&#xff0c;類似于動物園&#xff0c;都是不同的模塊&#xff0c;好不好試了才知道。通道注意力&#xff1a;模型的定義和插入的位置通道注意力后的特征圖和熱力圖 作…

TSN交換機正在重構工業網絡,PROFINET和EtherCAT會被取代嗎?

在工業自動化持續演進的今天&#xff0c;通信網絡的角色正變得愈發關鍵。 2025年6月6日&#xff0c;為期三天的華南國際工業博覽會在深圳國際會展中心&#xff08;寶安&#xff09;圓滿落幕。作為國內工業通信領域的技術型企業&#xff0c;光路科技&#xff08;Fiberroad&…

Qwen系列之Qwen3解讀:最強開源模型的細節拆解

文章目錄 1.1分鐘快覽2.模型架構2.1.Dense模型2.2.MoE模型 3.預訓練階段3.1.數據3.2.訓練3.3.評估 4.后訓練階段S1: 長鏈思維冷啟動S2: 推理強化學習S3: 思考模式融合S4: 通用強化學習 5.全家桶中的小模型訓練評估評估數據集評估細節評估效果弱智評估和民間Arena 分析展望 如果…

yolo模型精度提升策略

總結與行動建議 立即行動&#xff1a; 顯著增加6種相似BGA的高質量、多樣化訓練數據&#xff08;2倍以上是合理起點&#xff09;。 實施針對性數據增強&#xff1a; 設計模擬BGA實際成像挑戰&#xff08;反光、模糊、視角變化&#xff09;的增強方案。 升級模型與損失函數&am…

Kafka主題運維全指南:從基礎配置到故障處理

#作者&#xff1a;張桐瑞 文章目錄 主題日常管理1. 修改主題分區。2. 修改主題級別參數。3. 變更副本數。4. 修改主題限速。5.主題分區遷移。6. 常見主題錯誤處理常見錯誤1&#xff1a;主題刪除失敗。常見錯誤2&#xff1a;__consumer_offsets占用太多的磁盤。 主題日常管理 …

使用Docker部署MySQLRedis容器與常見命令

目錄 1. 檢查WSL配置2. 設置WSL版本3. 拉取MySQL鏡像4. 驗證鏡像5. 運行MySQL容器在WSL環境中使用以下命令啟動MySQL容器查看容器/鏡像的完整信息顯式指定宿主機掛載路徑可選&#xff1a;在Windows的cmd中使用以下命令啟動MySQL容器 6. 管理容器啟動已創建的容器查看運行中的容…

01__C++入門

一、C的語法框架 首先學習一門語言&#xff0c;我們需要了解語言的基本框架&#xff0c;這一小節&#xff0c;我們學習C的歷史應用&#xff0c;c和c的區別和c的標準 二、認識C 1、C的歷史 所有的主流C編譯器都支持這個版本的C&#xff08;1998年的版本&#xff09;。 2、C的應…

2024 CKA題庫+詳盡解析| 15、備份還原Etcd

目錄 免費獲取題庫配套 CKA_v1.31_模擬系統 15、 備份還原Etcd 題目&#xff1a; 開始操作: 1&#xff09;、切換集群 2&#xff09;、登錄master并提權 3&#xff09;、備份Etcd現有數據 4&#xff09;、驗證備份數據快照 5&#xff09;、查看節點和Pod狀態 6&am…