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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-52813-Gogs-RCE — CVE-2026-52813 (Gogs Path Traversal → Git Hooks RCE) रक्षात्मक रिपोर्ट: मूल कारण और पैच विश्लेषण, Sigma/SIEM पहचान नियम, IOCs, गैर-हस्तक्षेपी संस्करण स्कैनर। कोई शस्त्रीकृत PoC नहीं। | Kitploit
उपकरण/GitHubGitHub/iqx6889/cve-2026-52813-gogs-rce
समझौता संकेतक (IOC) प्रबंधनभेद्यता स्कैनरभेद्यता विश्लेषणखतरा खुफियापेपर और शोधलर्निंग और शिक्षाघटना प्रतिक्रियालॉग विश्लेषणलैब और अभ्यास

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
GitHubiqx6889/cve-2026-52813-gogs-rce

CVE-2026-52813-Gogs-RCE

CVE-2026-52813 (Gogs Path Traversal → Git Hooks RCE) रक्षात्मक रिपोर्ट: मूल कारण और पैच विश्लेषण, Sigma/SIEM पहचान नियम, IOCs, गैर-हस्तक्षेपी संस्करण स्कैनर। कोई शस्त्रीकृत PoC नहीं।

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

CVE-2026-52813 — Gogs पथ ट्रैवर्सल के कारण Git Hooks रिमोट कोड निष्पादन (रक्षात्मक विश्लेषण)

सुरक्षा अनुसंधान / ब्लू टीम के लिए writeup। इस रिपॉजिटरी में हथियारीकृत PoC शामिल नहीं है। पुनरुत्पादन की आवश्यकता वाले शोधकर्ता कृपया आधिकारिक सलाहकार द्वारा उद्धृत सार्वजनिक PoC का उपयोग करें।

प्रोजेक्टसामग्री
CVECVE-2026-52813
उर्फ़GHSA-c39w-43gm-34h5 / GO-2026-5305
प्रभावित संस्करणGogs < 0.14.3
सुधार संस्करण0.14.3 — PR #8334
CVSS 3.110.0 Critical AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CWECWE-23 सापेक्ष पथ ट्रैवर्सल → RCE
पूर्व शर्तएक सामान्य पंजीकृत खाता (डिफ़ॉल्ट रूप से खुला पंजीकरण होने पर = अनधिकृत RCE)

TL;DR

Gogs में संगठन बनाते समय, वेब फॉर्म में AlphaDashDot अक्षर सत्यापन है जो / को रोकता है, लेकिन REST API POST /api/v1/user/orgs में नहीं। हमलावर API के माध्यम से ../ युक्त संगठन नाम सबमिट करता है, सत्यापन को बायपास करके सीधे os.MkdirAll(repoutil.UserPath(org.Name), 0777) (internal/database/org.go:165) तक पहुंचता है, और रिपॉजिटरी निर्देशिका को किसी भी फाइल सिस्टम पथ पर लिखता है। Gogs के वेब एडिटर अस्थायी कार्य ट्री (local-r/<repo_id>/) के साथ, दूसरे रिपॉजिटरी के स्थानीय चेकआउट में दुर्भावनापूर्ण hooks/update रखा जा सकता है, जो git द्वारा स्वचालित रूप से निष्पादित होता है → git उपयोगकर्ता के रूप में RCE।


प्रभावित संस्करण और प्रबंधन

Gogs संस्करणस्थिति
< 0.14.3प्रभावित, तुरंत अपग्रेड करें
>= 0.14.3ठीक किया गया

अपग्रेड ही एकमात्र पूर्ण सुधार है:

root@kitploit:~
# Docker
docker pull gogs/gogs:0.14.3
# 或源码
git checkout v0.14.3 && go build

अस्थायी शमन (अपग्रेड न कर पाने पर):

  • खुला पंजीकरण बंद करें (app.ini → [service] DISABLE_REGISTRATION = true), पूर्व शर्त को "अनधिकृत" से "मौजूदा खाता आवश्यक" तक कम करें;
  • रिवर्स प्रॉक्सी (nginx/Caddy/Traefik) स्तर पर WAF नियम जोड़ें जो POST /api/v1/user/orgs, POST /api/v1/org/*/repos अनुरोध निकायों में username / name फ़ील्ड जिनमें .. या / हो, को रोकें (देखें detection/);
  • Gogs कंटेनर के /data/gogs/data/tmp/ के बाहर लिखने की अनुमति को सीमित करें (selinux/apparmor).

मूल कारण विश्लेषण

1. सत्यापन असममिति: वेब में है, API में नहीं

Web表单(internal/form/org.go,v0.14.2):

root@kitploit:~
type CreateOrg struct {
    OrgName string `binding:"Required;AlphaDashDot;MaxSize(35)"` // 正则 ^[a-zA-Z0-9._-]+$
}

API(internal/route/api/v1/org/org.go,v0.14.2):

root@kitploit:~
// api.CreateOrgOption (go-gogs-client) 的绑定 tag:
type CreateOrgOption struct {
    UserName string `json:"username" binding:"Required"` // ← 没有 AlphaDashDot!
}

→ POST /api/v1/user/orgs के username फ़ील्ड में कोई भी वर्ण हो सकता है जो सीधे DB स्तर तक पहुँचता है।

2. DB स्तर केवल आरक्षित नामों की जांच करता है, वर्ण सेट की नहीं

internal/database/users.go:1532 isNameAllowed केवल आरक्षित नाम/प्रत्यय (जैसे admin, -bot) को रोकता है, वर्ण सेट की जांच नहीं करता, इसलिए ../ पास हो सकता है।

3. पथ सिंक में कोई सैनिटाइजेशन नहीं

internal/repoutil/repoutil.go(v0.14.2):

root@kitploit:~
func UserPath(user string) string {
    return filepath.Join(conf.Repository.Root, strings.ToLower(user)) // ← 直接拼接
}

internal/database/org.go:165:

root@kitploit:~
os.MkdirAll(repoutil.UserPath(org.Name), os.ModePerm) // org.Name 含 ../ → 任意路径写入

4. local-r कार्य ट्री का उपयोग करके हुक स्थापित करना

Gogs Web/API फ़ाइल संपादन के दौरान, रिपॉजिटरी को /data/gogs/data/tmp/local-r/<repo_id>/ पर चेकआउट करता है। <repo_id> रिपॉजिटरी के डेटाबेस id के बराबर होता है। हमलावर:

  1. एक व्यक्तिगत रिपॉजिटरी writer बनाएं, जिससे id == n प्राप्त हो;
  2. API के माध्यम से एक ट्रैवर्सल संगठन बनाएं username = "../../../../data/gogs/data/tmp/local-r/n/nested" → भौतिक निर्देशिका writer के कार्य ट्री के अंदर आ जाती है;
  3. उस संगठन के अंतर्गत एक रिपॉजिटरी rce-x बनाएं → यह local-r/n/nested/rce-x.git पर आ जाती है;
  4. writer को क्लोन करें, फिर nested/rce-x.git/hooks/update को सामान्य फ़ाइल के रूप में कमिट करें और push करें (यह writer के कार्य ट्री में आ जाती है);
  5. API writer की फ़ाइल ऑपरेशन ट्रिगर करता है → Gogs local-r/n/ में git चलाता है → git hooks/update निष्पादित करता है → RCE।

मुख्य बिंदु: दुर्भावनापूर्ण हुक सामान्य रिपॉजिटरी सामग्री के रूप में सामान्य push के माध्यम से प्रवेश करता है, ENABLE_GIT_HOOKS कॉन्फ़िगरेशन की आवश्यकता नहीं है — यह इसे "पारंपरिक git हुक दुरुपयोग" पथ से अलग करता है।

विस्तृत पैच diff विश्लेषण के लिए देखें patch/ANALYSIS.md।


जांच

पूरे नियमों के लिए देखें detection/:

  • Sigma नियम: detection/sigma/ — हमले के प्रयासों (API अनुरोधों में ../) और सफल शोषण (फाइल सिस्टम लैंडिंग) को कवर करता है
  • SIEM क्वेरीज़: detection/queries.md — Splunk / Elastic / Kibana / Loki
  • IOCs: detection/iocs.md — फाइल सिस्टम निशान, लॉग हस्ताक्षर, उपयोगकर्ता नाम विशेषताएँ

दो सबसे महत्वपूर्ण:

  1. WAF / रिवर्स प्रॉक्सी स्तर पर रोकें: POST /api/v1/user/orgs और POST /api/v1/org/*/repos के JSON body में username/name फ़ील्ड जिनमें .. या / हो।
  2. फाइल सिस्टम निरीक्षण: /data/gogs/data/tmp/local-r/*/ के अंतर्गत अप्रत्याशित उपनिर्देशिकाएँ दिखाई देना (nested/, rce-*.git, hooks/update)।

रक्षात्मक उपकरण

  • tools/check_version.py — गैर-आक्रामक संस्करण स्कैनर: GET /api/v1/version के माध्यम से जांचता है कि Gogs इंस्टेंस < 0.14.3 है या नहीं, बैच स्कैनिंग, CSV आउटपुट का समर्थन करता है, संपत्ति सूची के लिए उपयुक्त।

यह रिपॉजिटरी हथियारीकृत शोषण उपकरण प्रदान नहीं करता है। पुनरुत्पादन के लिए कृपया आधिकारिक सलाहकार द्वारा उद्धृत सार्वजनिक PoC का उपयोग करें, और केवल स्व-निर्मित पृथक वातावरण में ही करें।


प्रयोगात्मक वातावरण

detection/ नियमों को प्रभावित Gogs पर सत्यापित करने की आवश्यकता है, lab/docker-compose.yml ब्लू टीम के लिए पृथक Gogs 0.14.2 वातावरण प्रदान करता है ताकि यह जांचा जा सके कि जांच नियम हिट होते हैं या नहीं। कृपया सार्वजनिक नेटवर्क पर उजागर न करें, केवल स्थानीय उपयोग करें।


समयरेखा

दिनांकघटना
2026-06-08CVE आरक्षित
2026-06-24सार्वजनिक प्रकटीकरण, Gogs 0.14.3 जारी
2026-06-24आधिकारिक सलाहकार GHSA-c39w-43gm-34h5 जारी

संदर्भ

  • आधिकारिक सलाहकार: https://github.com/gogs/gogs/security/advisories/GHSA-c39w-43gm-34h5
  • सुधार PR: https://github.com/gogs/gogs/pull/8334
  • OSV: https://osv.dev/vulnerability/CVE-2026-52813
  • Gogs 0.14.3 रिलीज़: https://github.com/gogs/gogs/releases/tag/v0.14.3

⚠️ "gitrebase पैरामीटर इंजेक्शन" के बारे में गलत सूचना

इंटरनेट पर इस CVE को "Gogs gitrebase पैरामीटर इंजेक्शन रिमोट कोड निष्पादन" के रूप में वर्णित किया गया है — यह गलत है। यह भेद्यता git rebase / gitrebase से संबंधित नहीं है, मूल कारण API पथ ट्रैवर्सल है। यह दस्तावेज़ वास्तविक भेद्यता के अनुसार विश्लेषण करता है।


लाइसेंस

MIT — देखें LICENSE।

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