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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
heaplens — # CMPT733 साइबर सुरक्षा लैब II परियोजना: CVE-2021-3156 से प्रेरित हीप शोषण के लिए GDB प्लगइन | Kitploit
उपकरण/GitHubGitHub/ypl6/heaplens
भेद्यता विश्लेषणशोषणडीबगर्सबाइनरी विश्लेषणलर्निंग और शिक्षा
GitHubypl6/heaplens

heaplens

# CMPT733 साइबर सुरक्षा लैब II परियोजना: CVE-2021-3156 से प्रेरित हीप शोषण के लिए GDB प्लगइन

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

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

सभी देखें →

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

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

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

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

heaplens

🔎 हीलेंस

CMPT733 साइबर सुरक्षा लैब II परियोजना

📂 रिपॉजिटरी संरचना

.
├── README.md
├── heaplens.png
├── heaplens.py
├── logs
│   ├── sudoedit-#.txt
│   └── ...
└── tests
    ├── Makefile
    ├── env-in-heap
    └── ...
  • README.md: यहीं है!
  • heaplens.py: मुख्य स्क्रिप्ट
  • logs/: विकास और परीक्षण के दौरान हमारे द्वारा कैप्चर किए गए कुछ नमूना लॉग शामिल हैं
  • tests/: परीक्षण के लिए कुछ बाइनरी (और उनके सोर्स कोड) शामिल हैं

📦 वातावरण

यह उन चीज़ों (और संस्करणों) की सूची है जिनका उपयोग हमने एक्सप्लॉइट का परीक्षण करने के लिए किया। वे VM में पहले से इंस्टॉल होने चाहिए। यदि कुछ भी गायब है, तो नीचे दिए गए निर्देशों का पालन करें।

निर्भरताएँ

  • Ubuntu 20.04.4 (64-bit)
  • python 3.8.10
  • glibc 2.34
  • gdb 9.2
  • gef 2022.01
    • यदि gef रूट के अंतर्गत सक्षम नहीं है, तो /root/.gdbinit देखें
    • यदि फ़ाइल खाली है, तो बस वही कॉपी करें जो आपके पास ~/.gdbinit में है

sudo निर्भरताएँ (sudo पर heaplens चलाने के लिए)

डिबगिंग सक्षम के साथ sudo का एक बाइनरी आवश्यक है। डिबग प्रतीकों के साथ एक पूर्व-निर्मित बाइनरी VM में इंस्टॉल की गई है।

cyberlab@ubuntu:~$ which sudo
/usr/local/bin/sudo

cyberlab@ubuntu:~$ sudo --version
Sudo version 1.8.31
Sudoers policy plugin version 1.8.31
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.31

cyberlab@ubuntu:~$ sudoedit -s /
sudoedit: /: not a regular file # sudo कमजोर है

📝 प्लगइन लोड करना

यह VM में पहले ही किया जा चुका है। यदि कॉन्फ़िगरेशन गलत है, तो आप हीलेंस लोड करने के लिए यहाँ दिए गए निर्देशों का पालन कर सकते हैं।

विकल्प 1

gef शुरू करें और कॉन्फ़िग संपादित करें:

gef➤ gef config gef.extra_plugins_dir <पथ>/heaplens
gef➤ gef save
gef➤ q

यह फ़ाइल ~/.gef.rc या /root/.gef.rc (रूट के अंतर्गत) को अपडेट करना चाहिए।

विकल्प 2

~/.gdbinit या /root/.gdbinit में यह पंक्ति जोड़ें:

source <पथ>/heaplens/heaplens.py

💡 उपयोग

विशेषाधिकार प्राप्त प्रोग्रामों को डिबग करते समय रूट के अंतर्गत gdb चलाने की सलाह दी जाती है:

$ sudo su
# gdb

सभी कमांड के लिए सहायता संदेश प्रदान किए गए हैं। आप GDB में <command> -h के माध्यम से उन तक पहुँच सकते हैं।

heaplens

मेमोरी आवंटन और विमोचन फ़ंक्शनों से हीप जानकारी एकत्र करता है, जिसमें malloc, realloc, calloc, और free शामिल हैं।

उच्च-स्तरीय विचार यह है कि इन फ़ंक्शनों को हुक करके, हम कॉल स्टैक के साथ-साथ मेमोरी आवंटन के रिटर्न पते की जाँच और अद्यतन करने की प्रक्रिया को स्वचालित कर सकते हैं। ट्रेस की जाँच करके, हम देख सकते हैं कि कुछ C फ़ाइलों में foo() द्वारा कौन सा चंक आवंटित किया गया है, और हम आगे की जाँच कर सकते हैं, जैसे कि आसन्न चंकों की जाँच करके, हीप एक्सप्लॉइटेशन के लिए उपयुक्त लक्ष्य खोजने के लिए।

यह बीच में कस्टम ब्रेकपॉइंट जोड़ने का भी समर्थन करता है यदि उपयोगकर्ता मध्यवर्ती हीप लेआउट में रुचि रखता है।

कमांड स्वयं बहुत वर्बोज़ नहीं है और परिणाम प्रिंट करने के लिए आपको heaplens-dump का उपयोग करने की आवश्यकता होगी।

heaplens -h
usage: [-h] [-b BREAKPOINT] [-v]

मेमोरी (डी)आवंटन फ़ंक्शनों से हीप जानकारी एकत्र करें।

optional arguments:
  -h, --help            यह सहायता संदेश दिखाएँ और बाहर निकलें
  -b BREAKPOINT, --breakpoint BREAKPOINT
                        यहाँ निष्पादन रोकें (gdb में br {breakpoint} निष्पादित करें) (default: None)
  -v, --verbose         आउटपुट वर्बोसिटी बढ़ाएँ (default: False)

उदाहरण आउटपुट:

gef➤  file sudoedit
gef➤  heaplens -b set_cmnd -- -s '\\' $(python3 -c 'print("A"*65535)')
----------------------------
Initializing Heaplens
----------------------------
Temporary breakpoint 1 at 0x5840: file ../../src/src/sudo.c, line 136.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
usage: sudoedit [-AknS] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...
[Inferior 1 (process 82934) exited with code 01]
Setting breakpoint at set_cmnd...
Function "set_cmnd" not defined.
Breakpoint 2 (set_cmnd) pending.
Hooking free function...
Breakpoint 3 at 0x7f25cc163700: free. (2 locations)
Hooking malloc function...
Breakpoint 4 at 0x7f25cc163110: malloc. (2 locations)
Hooking realloc function...
Breakpoint 5 at 0x7f25cc163eb0: realloc. (2 locations)
Hooking calloc function...
Breakpoint 6 at 0x7f25cc164b40: calloc. (2 locations)
Running -s '\' $(python3 -c 'print("A"*65535)')...
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 2, set_cmnd () at ../../../src/plugins/sudoers/sudoers.c:804
804	../../../src/plugins/sudoers/sudoers.c: No such file or directory.
Removing breakpoints from mem_bkps...

heaplens-dump

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

heaplens-dump -h
usage: [-h] [-o OUTPUT] [--json] [-s]

हीलेंस लॉग डंप करें। डिफ़ॉल्ट रूप से stdout पर लिखता है।

optional arguments:
  -h, --help            यह सहायता संदेश दिखाएँ और बाहर निकलें
  -o OUTPUT, --output OUTPUT
                        पथ {output} पर फ़ाइल में लिखें (default: None)
  --json                json में डंप करें (default: False)
  -s, --sort            चंकों को उनके पतों द्वारा क्रमबद्ध करें (default: False)

उदाहरण आउटपुट:

gef➤  heaplens-dump
----------------------------
Dumping...
----------------------------

...

[malloc] Chunk 3 @ 0x55f3908ed2a0 | size 0xc
Trace:
#0  __GI___strdup (s=0x7fff6fb3b8dc "en_US.UTF-8") at strdup.c:44
#1  0x00007f285df363c5 in _nl_load_locale_from_archive (category=category@entry=0xc, namep=namep@entry=0x7fff6fb29f50) at loadarchive.c:464
#2  0x00007f285df351fe in _nl_find_locale (locale_path=0x0, locale_path_len=0x0, category=category@entry=0xc, name=name@entry=0x7fff6fb29f50) at findlocale.c:152
#3  0x00007f285df34925 in __GI_setlocale (locale=<optimized out>, category=<optimized out>) at setlocale.c:337
#4  __GI_setlocale (category=<optimized out>, locale=<optimized out>) at setlocale.c:217
#5  0x000055f3901d5965 in main (argc=0x4, argv=0x7fff6fb2a298, envp=0x7fff6fb2a2c0) at ../../src/src/sudo.c:1430

...

Dump complete.

heaplens-chunks

gef से heap chunks का थोड़ा संशोधित संस्करण आउटपुट करता है।

यह GEF के heap chunks (जो चंकों के पते, फ्लैग, आकार और मेटाडेटा दिखाता है) का विस्तार करता है, heap bins से मुक्त चंकों के बारे में जानकारी एकीकृत करके (जो glibc bins से पहले आवंटित और मुक्त किए गए चंकों को सूचीबद्ध करता है)। GEF हीप निरीक्षण में मदद करने वाली सुविधाएँ प्रदान करता है जैसे कि हमने दो का उल्लेख किया, लेकिन दोनों को संयोजित करना थकाऊ है। उच्च स्तर पर, यह कमांड बाद वाले से मुक्त चंकों के पते एकत्र करता है, और उन्हें पूर्व के परिणाम में लेबल करता है।

heaplens-chunks -h
usage: [-h] [--nocolor]

मुक्त चंकों के बारे में जानकारी के साथ एक संशोधित `heap chunks`।

optional arguments:
  -h, --help  यह सहायता संदेश दिखाएँ और बाहर निकलें
  --nocolor   ANSI रंग कोड अक्षम करें

उदाहरण आउटपुट:

gef➤  heaplens-chunks
Showing current heap info with freed chunks:

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