Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
drupal-ckeditor-fileisimage — Drupal 11.4.8 - उच्च - रिमोट - अपलोड - CKEditor 5 इमेज अपलोड अभी भी FileIsImage को छोड़ देता है | Kitploit
उपकरण/GitHubGitHub/abraxas/drupal-ckeditor-fileisimage
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणसुरक्षा वर्चुअलाइजेशनवेब सुरक्षापेनिट्रेशन टेस्टिंगलैब और अभ्यास
GitHubabraxas/drupal-ckeditor-fileisimage

drupal-ckeditor-fileisimage

Drupal 11.4.8 - उच्च - रिमोट - अपलोड - CKEditor 5 इमेज अपलोड अभी भी FileIsImage को छोड़ देता है

रिपॉजिटरी देखें
33 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Abraxas Labs - drupal-ckeditor-fileisimage

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  drupal-ckeditor-fileisimage

drupal-ckeditor-fileisimage

Class: Unrestricted upload / stored XSS Reach: Remote

Drupal core 11.4.8 (61044508) - Drupal

SA-CORE-2026-009 ने JSON:API और REST image fields पर FileIsImage जोड़ा। CKEditor5ImageController::getImageUploadValidators अभी भी केवल FileExtension, FileSizeLimit, और FileImageDimensions लौटाता है। जब फ़ाइल एक वैध image नहीं होती, तो FileImageDimensions बिना किसी violation के लौट आता है। फ़ाइल नाम का extension ही बचा हुआ check है।

CKEditor 5 image upload वाले text format का एक user, x.png नाम की non-image bytes को /ckeditor5/upload-image/{editor} पर POST कर सकता है और 201 के साथ एक public files URL प्राप्त कर सकता है।

IDअभी तक कोई CVE नहीं
ClassUnrestricted upload / sniff किए जाने पर stored XSS
ReachRemote (authenticated format user)
CWECWE-434, CWE-79
CVSSMedium: 5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
ProductDrupal core
Affected11.4.8 (61044508071749629aaf3380aa85971e94df9e84)
AuthCKEditor 5 image upload वाले text format का authenticated user (basic_html / full_html on Standard)
LicenseGNU Affero GPL v3.0
Labकेवल 127.0.0.1

एक attacker क्या कर सकता है

ऐसे account की आवश्यकता है जो ऐसे format का उपयोग कर सके जिसके editor में image_upload.status true हो। Standard पर यह basic_html और full_html हैं। बिना account वाला पूर्ण अजनबी इस route को hit नहीं कर सकता (_entity_access: editor.use के साथ CSRF)।

PrivilegeMethod / sinkKindLab-proven या inferred
sites/default/files/inline-images/ के अंतर्गत public .png में non-image bytes लिखनाPOST /ckeditor5/upload-image/{editor} multipart uploadintegrityLab-proven। x.png ने 201 और url=/sites/default/files/inline-images/x.png लौटाया
उन bytes को public files URL पर वापस पढ़नाJSON url का GETreconLab-proven। 200, 49 bytes, body में DRUPAL-CKEDITOR-FILEISIMAGE-WITNESS था
यदि web server या browser फ़ाइल को HTML/JS के रूप में sniff करे तो visitor में stored XSSवही public URL, Content-Type image नहींintegrity (visitor origin)Inferred। इस lab ने Apache MIME नहीं बदला। Drupal ने bytes store कर लिए।
उसी route से एक असली image upload करनाControl control.png 1x1 PNGintendedLab-proven। 201

इस leftover पर बंद: .php के माध्यम से PHP/RCE (lab-proven 422 FileExtension); unauthenticated upload; JSON:API/REST ImageItem (वे paths पहले से FileIsImage जोड़ते हैं); LPE; default image-extension allowlist पर एक shell।

मैंने इसे कैसे खोजा

2026 SA-CORE wave के बाद मैंने Drupal 11.4.8 pin किया। JSON:API पहले से ही missing constraint जोड़ता है:

if (\is_a($field_definition->getItemDefinition()->getClass(), ImageItem::class, TRUE) && !array_key_exists('FileIsImage', $validators)) {
  $validators['FileIsImage'] = [];
}

REST FileUploadResource.php भी वही करता है। CKEditor 5 को filename + size + dimensions पर छोड़ दिया गया:

return [
  'FileExtension' => [
    'extensions' => implode(' ', $allowed_extensions),
  ],
  'FileSizeLimit' => [
    'fileLimit' => $max_filesize,
  ],
  'FileImageDimensions' => [
    'maxDimensions' => $max_dimensions,
  ],
];

जब फ़ाइल एक वैध image नहीं होती, तो FileImageDimensionsConstraintValidator बिना किसी violation के लौट आता है। Hub drupal:11.4 11.4.9 पर float हो गया; यह pin composer-exact drupal/recommended-project:11.4.8 है। 11.4.0 ने Standard से Article हटा दिया, इसलिए image install के बाद core/recipes/article_content_type लागू करता है ताकि /node/add/article CKEditor 5 लोड करे।

पहले से दर्ज गलत रास्ते: FileImageDimensions को MIME check मानना (यह एक वैध image पर dimensions है, और अन्यथा no-op); default allowlist पर PHP shell का दावा करना (.php 422 है); floating hub tag का उपयोग करना और 11.4.9 आते देखना। Theatre: एक reverse shell। Oracle नकली x.png पर 201 और उन्हीं bytes के x.php नाम पर 422 है।

उसी pin के leftovers: oEmbed second-hop SSRF।

Lab

python3 drupal-ckeditor-fileisimage-Abraxas-Labs.py

या

cd lab
./run.sh

लक्ष्य केवल http://127.0.0.1:19500। php:8.4-apache-trixie पर Live Drupal 11.4.8 Standard, SQLite।

SUCCESS drupal-ckeditor-fileisimage png-http=201 php-http=422 control-png-http=201 editor=basic_html stored-http=200 stored-has-witness=yes url=/sites/default/files/inline-images/x.png DRUPAL-CKEDITOR-FILEISIMAGE-WITNESS

समाधान

CKEditor5ImageController::getImageUploadValidators में 'FileIsImage' => [] जोड़ें। FileExtension रखें ताकि .php 422 बना रहे। Media Library में image media types को generic FileItem के बजाय ImageItem का उपयोग करना चाहिए ताकि वे वही constraint inherit करें।

संदर्भ

  • github.com/drupal/drupal tag 11.4.8 (61044508071749629aaf3380aa85971e94df9e84)
  • CKEditor5ImageController.php
  • आस-पास patched (यह upload नहीं): SA-CORE-2026-009
  • वही tag: drupal-oembed-ssrf
  • CWE-434 · CWE-79

License

GNU Affero GPL v3.0। देखें LICENSE। केवल Loopback lab। कोई warranty नहीं।

टूल डाउनलोड करें