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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-46394-haxcms-git-command-injection — CVE-2026-46394 के लिए PoC और लेख: HAXcms Git.php में OS कमांड इंजेक्शन (CWE-78)। केवल अधिकृत सुरक्षा अनुसंधान के लिए। | Kitploit
उपकरण/GitHubGitHub/shreyas-challa/cve-2026-46394-haxcms-git-command-injection
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगपेपर और शोधलर्निंग और शिक्षा
GitHubshreyas-challa/cve-2026-46394-haxcms-git-command-injection

CVE-2026-46394-haxcms-git-command-injection

CVE-2026-46394 के लिए PoC और लेख: HAXcms Git.php में OS कमांड इंजेक्शन (CWE-78)। केवल अधिकृत सुरक्षा अनुसंधान के लिए।

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

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

सभी देखें →

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

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

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

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

CVE-2026-46394 - HAXcms Git.php OS कमांड इंजेक्शन (CWE-78)

केवल अधिकृत सुरक्षा परीक्षण और शोध के लिए प्रूफ-ऑफ-कॉन्सेप्ट। यहाँ वर्णित भेद्यता HAXcms के नवीनतम रिलीज़ में ठीक कर दी गई है। यह PoC इसलिए प्रकाशित किया गया है ताकि रक्षक और शोधकर्ता उन अप्रचलित इंस्टेंस पर समस्या की पुष्टि कर सकें जिनके वे मालिक हैं या जिनका परीक्षण करने के लिए उन्हें स्पष्ट रूप से अधिकृत किया गया है।

CVECVE-2026-46394
घटकHAXcms PHP बैकएंड - system/backend/php/lib/Git.php
भेद्यताOS कमांड इंजेक्शन (CWE-78)
गंभीरताउच्च - CVSS 3.1 7.2 अकेले / 8.1 पथ ट्रैवर्सल के साथ श्रृंखलित
स्थितिऊपर की ओर ठीक किया गया। पैच से पहले के रिलीज़ को प्रभावित करता है।
प्रोजेक्टelmsln/HAXcms
रिपोर्टरश्रेयस चल्ला ([email protected])

सारांश

HAXcms PHP बैकएंड में Git.php लाइब्रेरी असंग्रहित पैरामीटर को जोड़कर शेल कमांड स्ट्रिंग बनाती है और उन्हें सीधे proc_open() को भेजती है। शेल कमांड को निष्पादित करने वाले 17 फ़ंक्शनों में से केवल एक (commit()) escapeshellarg() का उपयोग करता है। शेष 15 कॉलर इनपुट को सीधे कमांड स्ट्रिंग में इंटरपोलेट करते हैं।

कोई भी मान जिसमें शेल मेटाकैरेक्टर (&, ;, |, $(), बैकटिक्स) हो और जो इनमें से किसी फ़ंक्शन तक पहुँचता है, वेब-सर्वर उपयोगकर्ता के रूप में मनमाना OS कमांड निष्पादन का परिणाम देता है।

एकमात्र सही ढंग से एस्केप किया गया फ़ंक्शन सबसे स्पष्ट सबूत है कि एस्केपिंग को समझा गया था और बाकी सभी जगहों पर बस छोड़ दिया गया।

मूल कारण

प्रत्येक संवेदनशील फ़ंक्शन run() → run_command() → proc_open() के माध्यम से प्रवाहित होता है:

root@kitploit:~
// Git.php:408-411 - एक रॉ कमांड स्ट्रिंग बनाता है
public function run($command) {
    return $this->run_command(Git::get_bin() . " " . $command);
}

// Git.php:383 - इसे सिस्टम शेल के माध्यम से निष्पादित करता है
$resource = proc_open($command, $descriptors, $pipes, $this->repo_path, $env);

संवेदनशील उदाहरण बनाम एक सुरक्षित फ़ंक्शन:

root@kitploit:~
// Git.php:574 - संवेदनशील (कोई एस्केपिंग नहीं)
public function create_branch($branch) {
    return $this->run("branch $branch");
}

// Git.php:496 - सुरक्षित (साबित करता है कि लेखक पैटर्न जानता था)
public function commit($message = "") {
    return $this->run("commit -av -m " . escapeshellarg($message));
}

सभी प्रभावित फ़ंक्शन

फ़ंक्शनपंक्तिशेल कमांडएस्केप किया गया?
create_branch($branch)574branch $branchनहीं
delete_branch($branch)588branch -d $branchनहीं
checkout($branch)663checkout $branchनहीं
merge($branch)677merge $branch --no-ffनहीं
push($remote, $branch)785push $remote $branch $flagsनहीं
pull($remote, $branch)799pull $remote $branchनहीं
log($format)813log --pretty=format:"$format"नहीं
show($commit, $format)830show --pretty=format:"$format" $commitनहीं
list_tags($pattern)763tag -l $patternनहीं
clone_to($target)512clone --local $repo $targetनहीं
clone_from($source)527clone --local $source $repoनहीं
clone_remote($source)543clone $source $repoनहीं
set_remote($dest, $url)460remote add $dest $urlनहीं
rm($files)

संदर्भ में शोषण

शिप किए गए कोडबेस में ये फ़ंक्शन सर्वर/साइट कॉन्फ़िगरेशन से प्राप्त मानों के साथ आह्वान किए जाते हैं, न कि सीधे अनुरोध निकायों से, इसलिए शोषण श्रृंखला द्वारा महसूस किया जाता है:

  • पथ ट्रैवर्सल → कॉन्फ़िग विषाक्तता → RCE: किसी साइट के site.json को ओवरराइट करने के लिए saveOutline पथ ट्रैवर्सल का उपयोग करें, metadata.site.git.branch में मेटाकैरेक्टर इंजेक्ट करें। अगला gitCommit() HAXCMSSite.php:584 पर push('origin', $branch) को कॉल करता है, पेलोड निष्पादित करता है।
  • कोई अन्य तंत्र जो git ब्रांच/रिमोट सेटिंग्स को मैनिफेस्ट में लिखता है, create_branch() (Operations.php:2762) या set_remote() (HAXCMSSite.php:625) तक पहुँचता है।

PoC चलाना

PoC वास्तविक Git.php लाइब्रेरी को सीधे चलाता है: यह एक थ्रोअवे git रिपॉजिटरी बनाता है, create_branch() को एक पेलोड के साथ कॉल करता है जो शेल कमांड विभाजक का उपयोग करता है, और डिस्क पर लिखी गई प्रूफ फ़ाइल की जाँच करके निष्पादन की पुष्टि करता है। यह अपने बाद सफाई करता है।

पूर्वापेक्षाएँ

  • PHP CLI (7.x या 8.x)
  • git PATH पर
  • HAXcms PHP बैकएंड की एक प्रति
root@kitploit:~
git clone https://github.com/elmsln/HAXcms.git
git clone https://github.com/shreyas-challa/CVE-2026-46394-haxcms-git-command-injection.git
cd CVE-2026-46394-haxcms-git-command-injection

चलाएँ

PoC को अपने HAXcms क्लोन से Git.php की ओर इंगित करें (env var या पहला तर्क); यह इसके बगल में रखे गए haxcms-php/ को भी स्वचालित रूप से खोजता है:

root@kitploit:~
# विकल्प A - पर्यावरण चर
HAXCMS_PHP=../HAXcms/haxcms-php/system/backend/php/lib/Git.php php poc_git_cmdi.php

# विकल्प B - CLI तर्क
php poc_git_cmdi.php ../HAXcms/haxcms-php/system/backend/php/lib/Git.php

यूनिक्स (; विभाजक) और विंडोज (& विभाजक) दोनों पर काम करता है; PoC होस्ट OS के लिए सही पेलोड स्वचालित रूप से चुनता है।

नमूना आउटपुट

root@kitploit:~
================================================================
  HAXcms Git.php - OS कमांड इंजेक्शन (CWE-78)
================================================================

STEP 3: create_branch() के माध्यम से OS कमांड इंजेक्ट करें
  पेलोड: test & echo COMMAND_INJECTION_PROOF > "...\PWNED.txt"

STEP 4: सत्यापित करें कि इंजेक्टेड कमांड निष्पादित हुआ
  FILE FOUND!
    Content: COMMAND_INJECTION_PROOF
  COMMAND INJECTION CONFIRMED.

उपचार

सभी 15 फ़ंक्शनों में प्रत्येक पैरामीटर पर escapeshellarg() लागू करें:

root@kitploit:~
// पहले
public function create_branch($branch) {
    return $this->run("branch " . $branch);
}
// बाद में
public function create_branch($branch) {
    return $this->run("branch " . escapeshellarg($branch));
}

गहराई में रक्षा - मानों को git स्तर तक पहुँचने से पहले मान्य करें:

root@kitploit:~
function validateBranchName($branch) {
    return preg_match('/^[a-zA-Z0-9._\/-]+$/', $branch) && strpos($branch, '..') === false;
}

नवीनतम HAXcms रिलीज़ पर अपडेट करें, जिसमें ऊपर की ओर फिक्स शामिल है।

जिम्मेदार प्रकटीकरण

यह मुद्दा HAXcms अनुरक्षकों को सूचित किया गया और प्रकाशन से पहले ठीक कर दिया गया। PoC केवल पैच उपलब्ध होने के बाद जारी किया गया है। इसका उपयोग केवल उन प्रणालियों के खिलाफ करें जिनके आप मालिक हैं या जिनका परीक्षण करने के लिए आपको स्पष्ट रूप से अधिकृत किया गया है।

कानूनी / अधिकृत-उपयोग सूचना

यह सामग्री रक्षात्मक अनुसंधान, शिक्षा और अधिकृत सुरक्षा परीक्षण के लिए प्रदान की जाती है। स्पष्ट अनुमति के बिना प्रणालियों के खिलाफ इसे चलाना अवैध हो सकता है। सभी लागू कानूनों का पालन करने और परीक्षण करने से पहले प्राधिकरण प्राप्त करने के लिए आप पूरी तरह से जिम्मेदार हैं। बिना किसी वारंटी के "जैसा है" प्रदान किया गया (LICENSE देखें)।

टूल डाउनलोड करें
479
rm $files
नहीं
add_tag($tag, $msg)749tag -a $tag -m $msg$tag: नहीं, $msg: हाँ
commit($message)496commit -av -m $messageहाँ (केवल सुरक्षित)