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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2019-5096-GoAhead-Web-Server-Dos-Exploit — CVE-2019-5096(UAF in upload handler) exploit cause Denial of Service | Kitploit
उपकरण/GitHubGitHub/ianxtianxt/cve-2019-5096-goahead-web-server-dos-exploit
Vulnerability AnalysisExploitationWeb Application ExploitationFuzzingBinary Exploitation
GitHubianxtianxt/cve-2019-5096-goahead-web-server-dos-exploit

CVE-2019-5096-GoAhead-Web-Server-Dos-Exploit

CVE-2019-5096(UAF in upload handler) exploit cause Denial of Service

रिपॉजिटरी देखें

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
136 साल पहलेअभी तक समीक्षित नहीं

CVE-2019-5096 Use After Free Dos Exploit

root@kitploit:~
python TriggerDOS.py ip	

TriggerDoubleFree

भेद्यता विश्लेषण

[https://github.com/embedthis/goahead.git] GoAhead githublink

git diff the patch

GitDiff

मुख्य कोड विश्लेषण

कोड में upload.c:370 पर जाएं, देख सकते हैं कि

root@kitploit:~
	wp->currentFile=0

से पहले निम्नलिखित निष्पादित होता है

root@kitploit:~
typedef struct WebsUpload {
    char    *filename;              /**< Local (temp) name of the file */
    char    *clientFilename;        /**< Client side name of the file */
    char    *contentType;           /**< Content type */
    ssize   size;                   /**< Uploaded file size */
} WebsUpload;
...

typedef struct Webs {
...
    WebsUpload      *currentFile;
...
}Webs;
...
processContentData(Webs *wp){
...
	file = wp->currentFile;
	...
	hashEnter(wp->files, wp->uploadVar, valueSymbol(file), 0);
	defineUploadVars(wp);
	wp->currentFile=0;
	...
}

यहाँ hashEnter फ़ंक्शन हैश टेबल में एक एलिमेंट जोड़ता है, जिससे wp-currentFile के कई संदर्भ (multiple references) होते हैं। wp->files (हैश टेबल) में स्थित WebsUpload संरचना को http सत्र समाप्ति (Webs जीवनचक्र समाप्ति) पर termWebs कॉल करने पर free कर दिया जाता है

root@kitploit:~
static void termWebs(Webs *wp, int reuse)
{
...
#if ME_GOAHEAD_UPLOAD
    if (wp->files >= 0) {
        websFreeUpload(wp);//हैश टेबल से WebsUpload संरचना निकालकर free करें।
    }
#endif
}

अब एक और free बिंदु देखते हैं:

root@kitploit:~
...
processUploadHeader(Webs *wp, char *line)
{
	while (key && stok(key, ";\r\n", &nextPair)) {// यह ; से upload हेडर पार्स करता है
		...
		else if (scaselesscmp(key, "filename") == 0) {
		...
		freeUploadFile(wp->currentFile);
		file = wp->currentFile = walloc(sizeof(WebsUpload));
		...		
        }
	}
}

पता चलता है कि यदि अपलोड हेडर में filename फ़ील्ड है, तो wp->currentFile को free कर दिया जाता है, और फिर walloc द्वारा एक नया WebsUpload आवंटित किया जाता है।
चूंकि sizeof(WebsUpload) global_max_fast से छोटा है, हीप फास्टबिन LIFO (Last-In-First-Out) आवंटन का अनुसरण करेगा, इसलिए अभी free किया गया हीप खंड तुरंत पुनः आवंटित हो जाता है, और बाद में processContentData फ़ंक्शन में इसे फिर से हैश टेबल में जोड़ा जाता है। तब हैश टेबल में उस chunk के दो संदर्भ (references) होते हैं, और termWebs पर double free होकर abort होता है।

भेद्यता ट्रिगर करना

एक ही अनुरोध में दो अपलोड हेडर जोड़ें:
processContentData फ़ंक्शन के बाद फिर से processUploadHeader फ़ंक्शन में प्रवेश करें। अर्थात निम्नलिखित क्रम में कॉल:

websProcessUploadData (लूप) #अपलोड स्टेट मशीन, प्रत्येक लूप एक स्थिति निर्धारित करता है ->initUpload()
->processContentBoundary()
->processUploadHeader()
->processContentData()
->processContentBoundary()
->processUploadHeader()
->processContentData()
->return;

कोड निष्पादन संभावना

...

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