PHP2shell-audit फ़ील्ड: Windows PHP को बाहर निकालने के लिए exe, लिनक्स, py, 10 मिनट का उपयोग करता है।
यह झुकता नहीं है। यह सब दस्तक के बारे में है:उपकरण लोड हो रहा है, मशीन चल रहा है, लक्ष्य की सफाई, निष्कर्ष पढ़ना, यह तय करना कि क्या पैच करना है या नहींएक अजगर। दस मिनट खत्म करने के लिए।
सबसे पहले, CVE-2026-109618 और CVE-2026-109619 खुद PHP इंजन के लिए अनधिकृत RCE हैं, आधिकारिक बहाल संस्करण 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 है। कैलिबर के दो सेट ...PHP आधिकारिक CVSS 4.0 ने 9.2 को हराया, NVD CVSS 3.1 ने 9.8 को हराया।शीर्षक में 9.8 बाद वाला है, और दोनों एक ही दो से एक लूपहोल को संदर्भित करते हैं, यह सोचने के लिए नहीं कि यह अलग है।
यहाँ उपकरण हैं:Vivipenclaw-code/php2shell-uditApache-2.0, आज। यह दो चीजें करता है: जांचें कि इस मशीन पर PHP क्या स्थापित है, दूर-बंद तूफान के अज्ञात संस्करण को स्वीप करें।यह यातायात पर हमला नहीं करता है, डिस्क नहीं लिखते हैं, किसी भी कॉन्फ़िगरेशन को नहीं बदलता है।और यही है कि मैंने स्रोत कोड में क्या जांच की है, और रिमोट मोड वास्तव में केवल एक प्रतिक्रिया हेड के लिए एक HEAD अनुरोध भेज रहा है।
I.DIFTING: यह देखने के दो तरीके कि आप किस सिस्टम में हैं।
लिनक्स / MacOS जाने पायथन, शून्य निर्भरता, मानक पुस्तकालय पर्याप्त है, कुछ भी लोड करने के लिए कोई pip नहीं है:
git clone https://github.com/viviopenclaw-code/php2shell-audit.git
cd php2shell-audit
chmod +x php2shell_audit.py
python3 php2shell_audit.py --local
विंडोज बिना पाइथन के सीधे exe पर चला जाता है। रिलीज पेज पर पकड़ो php2shell-audit.exe:
certutil -hashfile php2shell-audit.exe SHA256
php2shell-audit.exe --local
Exe एक एकल फ़ाइल कंसोल प्रोग्राम है जो Win10/11 x64 उपलब्ध है,कोई कोड हस्ताक्षर नहीं।इसलिए SmartScreen के लिए पहला रन बंद हो जाएगा। पहले चलिए। SHA256SUMS.txt एक बार फिर - यह कदम एक है जिसमें कोई भी "ग्रीन" संस्करण को छूता है जिसे ऑनलाइन प्रसारित किया जा रहा है।
समान मापदंडों के दो संस्करण। केवल एक ट्यूटोरियल, विंडोज के पीछे सेट। python3 php2shell_audit.py बदलें php2shell-audit.exe बस करो।
क्या चल रहा है?
python3 php2shell_audit.py --local
यह चार चीजें करेगा:
- PHP का पता लगाएं।:
/usr/bin/php*मुझे नहीं पता।/usr/sbin/php-fpm*मुझे नहीं पता।/opt/*मुझे नहीं पता।/usr/lib/php/*/sapi/*होमब्रू भी गणना करता है। विंडोज, इसे बाहर की जाँच करें।C:\phpXAMPP, WAMP, Laragon, Chocolatey, स्कूप, प्रोग्राम फ़ाइलों के तहत PHP। - संस्करण पढ़ें: रन
php -v8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 के साथ बैनर लें। - सम्पर्क करने का विवरण: php.ini में अंतरिम शमन निर्देशों को पार करता है।
- स्तंभ प्रक्रिया: उन सभी कार्यों को सूचीबद्ध करें जिन्हें पैच के बाद पुनः शुरू किया जाना चाहिए।
मैं PHP के बिना एक मशीन पर भाग गया। यहाँ उत्पादन है:
php2shell-audit 1.1.0 - local audit
Host : admin
System : Linux 7.0.0-30-generic (x86_64)
------------------------------------------------------------------------
[UNKNOWN] No PHP installation detected.
------------------------------------------------------------------------
php.ini mitigation directives
[WARNING] session.upload_progress.enabled = (unset) (recommended 0)
[WARNING] fatal_error_backtraces = (unset) (recommended 0)
[WARNING] expose_php = (unset) (recommended 0)
------------------------------------------------------------------------
Running services that must be restarted after patching
[INFO] apache2 - 3 process(es)
------------------------------------------------------------------------
[INFO] No PHP binary, FPM daemon or Apache PHP module was found on this host.
------------------------------------------------------------------------
Remediation
[UNKNOWN] No PHP install was audited, so nothing can be confirmed safe.
अंतिम पंक्ति देखें:कोई PHP नहीं, यह UNKNOWN है।यह डिजाइन बहुत अच्छी तरह से पहचाना जाता है - कुछ भी खोजने में कोई समस्या नहीं है। यह दो अलग-अलग चीजें हैं।
वैसे यह जुड़ा हुआ है। expose_php उनमें से सभी इसके पास खुद लूपहोल के साथ कुछ भी नहीं है, लेकिन यह एक प्रत्यक्ष निर्णय है कि क्या रिमोट स्कैन आपके संस्करण संख्या को पढ़ सकता है।इसे बंद कर दें। assailant के फिंगरप्रिंट आधे अंधा हैं।मुझे नहीं पता। बेशक, इसे मरम्मत नहीं कहा जाता है, इसे सूचना एक्सपोजर को कम करने के लिए बुलाया जाता है।
III पैरामीटर
| पैरामीटर | भूमिका | डिफ़ॉल्ट |
|---|---|---|
--local / --remote | दो या एक, हम मशीन या लक्ष्य की जांच करने का फैसला करते हैं। | आवश्यक |
--file targets.txt | बैच लक्ष्य, एक पंक्ति में एक, # टिप्पणी के साथ शुरू | कोई नहीं |
--workers N | लंबी अवधि के समवर्ती पाठ्यक्रमों की संख्या | 10 |
--json report.json | आउटपुट पूरा JSON,- stdout | कोई नहीं |
--timeout N | एकल अनुरोध टाइमआउट (सेक) | 8 |
--insecure | केवल फिंगरप्रिंट के लिए TLS सत्यापन छोड़ें | बंद |
एक्सिट कोड: प्रत्यक्ष करने के लिए CI कार्ड बिंदु
| एक्सिट कोड | अर्थ |
|---|---|
0 | कोई प्रभावित संस्करण नहीं मिला |
2 | कम से कम एक प्रभावित संस्करण पाया गया था। |
1 | उपकरण पर त्रुटि (जैसे JSON नहीं लिख सकता) |
यह संख्या दो है।इसका मतलब है कि आप इसे प्रवाह लाइन में डाल सकते हैं, इसे निर्माण चरण के माध्यम से स्वीप कर सकते हैं, इसे हिट कर सकते हैं, और इसे खोजने के लिए मनुष्यों की प्रतीक्षा नहीं करते हैं।
iv.स्वीपिंग रिमोट: -रिमोट कैसे करें
# 单个目标
python3 php2shell_audit.py --remote example.com
# 批量,20 个并发,出 JSON
python3 php2shell_audit.py --remote --file targets.txt --workers 20 --json out.json
# 也可以直接写在命令行里
python3 php2shell_audit.py --remote https://a.example 10.0.0.5
क्या? लिखना
# production fleet
example.com
https://shop.example.net
10.0.0.5:8080
# एक नोट के साथ शुरू करें, एक पंक्ति, गोदाम में एक targets.example.txt इसे सीधे कॉपी किया जा सकता है।
उसने क्या भेजा?
हर लक्ष्य।केवल एक HEAD अनुरोध भेजेंकेवल एक बार सर्वर हेएडी को अस्वीकार कर देगा। पढ़िए Server:मुझे नहीं पता।X-Powered-By: और Set-Cookieवहाँ से बाहर निकल जाओ। PHP/x.y.zमुझे नहीं पता।
नो मल्टीपार्ट, नो बिग बॉडी, नो ओओएम, नो यूज़-बाद-फ्री।यह एक डिजाइन बाधा के रूप में स्रोत नोट में मृत्यु हो गई।यह यादृच्छिक नहीं है।
मूल्य स्पष्ट होना चाहिए:रिमोट मोड उपयोगिता साबित नहीं करता हैयह केवल जानकारी की रिपोर्ट कर सकता है कि सर्वर स्वैच्छिक रूप से थूकता है। संस्करण संख्या के लक्ष्य को छिपाएं, और परिणाम हमेशा UNKNOWN होगा।
V. निष्कर्ष कैसे पढ़ें
[VULNERABLE] https://shop.example.net
http : 200
server : Apache/2.4.62 (Debian)
powered : PHP/8.4.16
php : 8.4.16
verdict : PHP 8.4.16 < fixed 8.4.27
- [Vulnerable] संस्करण को बहाल संस्करण की तुलना में पढ़ा और कम किया गया था।
- [PASS] संस्करण पढ़ा गया था और पुनर्स्थापित संस्करण के बराबर है।
- [WARNING] इंटरिम शमन निर्देश सुझाव दिए गए नहीं थे।
- [UNKNOWN] अपर्याप्त सबूतसुरक्षित नहीं, ज्ञात नहीं।
यह अंतर यह है कि संपूर्ण उपकरण सबसे मूल्यवान है। अधिकांश स्कैनर केवल आपको लाल, पीले और हरे रंग देते हैं, और फिर आपको लगता है कि यह पूरी स्क्रीन पर है।UNKNOWN को किया जाना चाहिएया तो छिपे हुए संस्करण को बंद करें, कंटेनर में चलाएं - स्थानीय, या मशीन पर लॉग ऑन करें।
छह, चार गड्ढे, एक दूसरे से अधिक।
पाइप 1: UNKNOWN साफ़
वह मेजबान जो संस्करण संख्या को छिपाता है, हमेशा UNKNOWN की रिपोर्ट करेगा। बस सुनिश्चित करें कि यह केवल मेनफ्रेम पर है। --localमुझे नहीं पता।
पॉकेट 2: रिलीज गलत है।
डेबियन / उबंटू / RHEL / Alpine नियमित रूप से सुरक्षा पैच में कॉल करता है लेकिननहीं कूदो संस्करण संख्यामैं नहीं जानता हूँ। परिणाम पूरा मशीन है, जैसा कि यह दिखाई देता है।
इसलिए जब तक आप लाल नहीं देखते तब तक घबराहट नहीं होती।
apt changelog php8.4
rpm -q --changelog php-8.4 | head -50
ऐसा करने के लिए यह कदम, या असफलता, लेकिन एक वृद्धि नहीं होगी; यह एक गलतफहमी भी होगी, जो अपग्रेड की वास्तविक आवश्यकता है।
पीट 3: एक HEAD भी अनुरोध किया गया है
यह एक दूसरे के लॉग में होगा, और इसे WAF द्वारा लिखा जाएगा। लिखित प्राधिकरण के बिना स्वाइपिंग प्रकृति द्वारा एक अनधिकृत पहचान है - एक कानून जैसे CFAA, UK CMA 1990।
मुझे अपनी कंपनी की संपत्ति को साफ करने के लिए प्राधिकरण की आवश्यकता होगी।विशेष रूप से, क्रॉस-सेक्टोरल, क्रॉस-उप-कंपनी, क्लाउड-आधारित खाते। मत सोचो, "मैं सिर्फ एक प्रतिक्रिया सिर देख रहा हूँ" गिनती नहीं है।
पॉकेट 4: - केवल मशीन की जांच करें।
PHP कंटेनर में चलता है, कंटेनर में चलता है, या मेजबान पर इसका उपयोग करता है। --remote जिस बंदरगाह को बाहर रखा गया था। मेजबान रन। --local यदि आप कंटेनर में PHP नहीं पा सकते हैं, तो आपको एक UNKNOWN मिलेगा -- UNKNOWN वास्तव में पता नहीं है, कंटेनर सुरक्षित नहीं है।
सात, पता करें कि वहाँ एक समस्या है, तो क्या?
पैचिंग एकमात्र पूर्ण मरम्मत है।बाकी सभी खून बह रहा है।
# Debian / Ubuntu
sudo apt update && sudo apt install --only-upgrade php
# RHEL / Fedora
sudo dnf upgrade 'php*'
# Alpine
sudo apk upgrade php83 php84
अपग्रेड: 8.2 शाखा 8.2.358.3 to 8.3.36यह 8.4 है। 8.4.27यह 8.5 है। 8.5.12मैं नहीं जानता हूँ। 8.1 से परे, केवल स्रोत स्तर की रिपोर्ट।
यदि आप एक पैच नहीं प्राप्त कर सकते हैं, तो इन पहले करें, फिर से शुरू करें।
; CVE-2026-109619
session.upload_progress.enabled = 0
; CVE-2026-109618
memory_limit = -1
; 仅 PHP 8.5
fatal_error_backtraces = 0
session.upload_progress.enabled=0php.ini, FPM उपकरण या सर्वर विन्यास में लिखने के लिए,यह अनुरोध से पहले प्रभावी होना चाहिए।मुझे नहीं पता। यह बहुत देर हो चुकी है।memory_limit=-1मुझे इसकी आवश्यकता है।php_admin_valueऐसे अनुप्रयोगों की स्तर सेटिंग अपरिवर्तित है, जबकि यह सुनिश्चित करता है कि सीमित मूल्य को बहाल करने के लिए कोई पूल / डायरेक्टरी / एप्लिकेशन नहीं है।- कभी RLIMIT AS या RLIMIT DATA का उपयोग नहीं करते- उन दोनों ने मानचित्र को विफल कर दिया और सिर्फ उस खतरनाक लंबे समय तक चलने वाले पथ को फिर से प्रवेश किया।
- प्रत्येक कार्यकर्ता को बदलना चाहिए:
systemctl restart php*-fpm apache2 nginxमुझे नहीं पता।कोई पुनरारंभ नहीं है।
इन चारों में से कोई भी आपको सुरक्षित बना सकता है, और अधिकारियों ने खुद को काफी स्पष्ट कर दिया है। उनके पास केवल एक मान है:इससे पहले कि आप इसे पैच करें, दरवाजे को कवर करें।
VIII एक पूर्ण अनुक्रम
- पहले जाँच करें।:
--localतीन या पांच सेकंड, संस्करण और विन्यास देखें। - रिमोट बैच स्वीपयह एक बड़ा सौदा है।
--remote --fileऔर JSON से बाहर निकलें। - वर्गीकरण: VULNERable उन्नयन, WARNING replenishment, UNKNOWN पहचान -यह बंद नहीं है, यह किया जाना चाहिए।
- अपग्रेड + रिस्टार्ट वर्कर: पैच, और फिर सभी FPM / अपाचे / nginx को पुनः आरंभ करें।
- Resweep प्रमाणीकरण: फिर से भागो, हरे रंग की पुष्टि करें। यदि आवश्यक हो तो बैकपोर्ट त्रुटि देखें और चेंजलॉग देखें।
- पानी लाइन में जाओ।: Quit Code 2 Direct असफल निर्माण, और अगली बार कोई याद नहीं करेगा।
पूरी प्रक्रिया दस मिनट है और वास्तविक समय तीसरा चरण है।UNKNOWN लाइनों की जाँच करें।मुझे नहीं पता। लेकिन यह इसे बचाने के लिए नहीं है, क्योंकि इसे छोड़ देना, आपको एक सुंदर, नकली, हरा रिपोर्ट मिलती है।
स्कैनर का मूल्य आपको हरी रोशनी नहीं दे रहा है, यह आपको यह स्वीकार करने के लिए मजबूर करता है कि आप वास्तव में कहाँ नहीं जानते हैं।
परियोजना का पता फिर से खेलना:Gythub.com/viviopenclaw-code/php2shell-uditमैं नहीं जानता हूँ। चीनी में लिखने से पहले DISSLAIMER.md पढ़ें।
अंतिम वाक्य मुझे याद दिलाता है कि यह टूल आज 1.1.0 है, पहला सार्वजनिक संस्करण, एक एकल शून्य कांटा, एक छोटी संख्या में कोड है, आप उन्हें सभी पढ़ सकते हैं। php2shell_audit.pyमुझे नहीं पता।स्रोत कोड को देखें।विशेष रूप से यदि आप php.ini और व्यवस्थापक अनुमति के साथ प्रक्रिया सूची पढ़ना चाहते हैं।