Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
heaplens — # CMPT733 Cybersecurity Lab II Projekt: GDB-Plugin für Heap-Exploits, inspiriert von CVE-2021-3156 | Kitploit
Tools/GitHubGitHub/ypl6/heaplens
SchwachstellenanalyseExploitationDebuggerBinäranalyseLernen & Bildung
GitHubypl6/heaplens

heaplens

# CMPT733 Cybersecurity Lab II Projekt: GDB-Plugin für Heap-Exploits, inspiriert von CVE-2021-3156

Repository anzeigen
226vor 4 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

heaplens

🔎 Heaplens

CMPT733 Cybersecurity Lab II Projekt

📂 Repository-Struktur

.
├── README.md
├── heaplens.png
├── heaplens.py
├── logs
│   ├── sudoedit-#.txt
│   └── ...
└── tests
    ├── Makefile
    ├── env-in-heap
    └── ...
  • README.md: genau hier!
  • heaplens.py: das Hauptskript
  • logs/: enthält einige Beispiellogs, die wir während der Entwicklung und des Testens erfasst haben
  • tests/: enthält einige Binärdateien (und deren Quellcodes) zum Testen

📦 Umgebung

Hier ist eine Liste der Dinge (und Versionen), die wir zum Testen des Exploits verwendet haben. Sie sollten bereits in der VM installiert sein. Falls etwas fehlt, befolge die Anweisungen unten.

Abhängigkeiten

  • Ubuntu 20.04.4 (64-bit)
  • python 3.8.10
  • glibc 2.34
  • gdb 9.2
  • gef 2022.01
    • Wenn gef unter root nicht aktiviert ist, wirf einen Blick auf /root/.gdbinit
    • Wenn die Datei leer ist, kopiere einfach das, was du in ~/.gdbinit hast

sudo-Abhängigkeiten (zum Ausführen von heaplens auf sudo)

Eine Binärdatei von sudo mit aktiviertem Debugging ist erforderlich. Eine vorgefertigte Binärdatei mit Debug-Symbolen wurde in der VM installiert.

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 ist verwundbar

📝 Laden des Plugins

Dies wurde bereits in der VM durchgeführt. Falls die Konfiguration fehlerhaft ist, kannst du den Anweisungen hier folgen, um Heaplens zu laden.

Option 1

Starte gef und bearbeite die Konfiguration:

gef➤ gef config gef.extra_plugins_dir <Pfad zu>/heaplens
gef➤ gef save
gef➤ q

Dies sollte die Datei ~/.gef.rc oder /root/.gef.rc (unter root) aktualisieren.

Option 2

Füge diese Zeile in ~/.gdbinit oder /root/.gdbinit hinzu:

source <Pfad zu>/heaplens/heaplens.py

💡 Verwendung

Es wird empfohlen, gdb unter root auszuführen, wenn privilegierte Programme debuggt werden:

$ sudo su
# gdb

Für alle Befehle werden Hilfemeldungen bereitgestellt. Du kannst sie über <Befehl> -h in GDB aufrufen.

heaplens

Sammelt Heap-Informationen von Speicherzuweisungs- und -freigabefunktionen, einschließlich malloc, realloc, calloc und free.

Die grundlegende Idee ist, dass wir durch das Hooking dieser Funktionen den Prozess des Prüfens und Aktualisierens des Aufrufstapels sowie der Rücksprungadresse der Speicherzuweisung automatisieren können. Durch die Untersuchung der Ablaufverfolgungen können wir sehen, welcher Chunk von foo() in einigen C-Dateien zugewiesen wird, und wir können weiter untersuchen, beispielsweise durch Prüfen der benachbarten Chunks, um geeignete Ziele für die Heap-Ausnutzung zu finden.

Es unterstützt auch das Hinzufügen benutzerdefinierter Haltepunkte dazwischen, wenn der Benutzer an einem Zwischen-Heap-Layout interessiert ist.

Der Befehl selbst ist nicht sehr ausführlich, und du musst heaplens-dump verwenden, um die Ergebnisse auszugeben.

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

Collect heap info from memory (de)allocation functions.

optional arguments:
  -h, --help            show this help message and exit
  -b BREAKPOINT, --breakpoint BREAKPOINT
                        stop the executions here (execute br {breakpoint} in gdb) (default: None)
  -v, --verbose         increase output verbosity (default: False)

Beispielausgabe:

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

Gibt Heaplens-Logs aus. Wir bieten Optionen, um die Ergebnisse in eine Datei zu schreiben, im JSON-Format auszugeben und die Chunks nach ihren Adressen zu sortieren. Im Dump hat jeder Chunk seine Adresse, Größe, Backtrace und die zugehörige Speicherzuweisungsfunktion in einer besser lesbaren Form aufgezeichnet.

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

Dump Heaplens logs. Writes to stdout by default.

optional arguments:
  -h, --help            show this help message and exit
  -o OUTPUT, --output OUTPUT
                        write to file at path {output} (default: None)
  --json                dump in json (default: False)
  -s, --sort            sort the chunks by their addresses (default: False)

Beispielausgabe:

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

Gibt eine leicht modifizierte Version von heap chunks aus gef aus.

Dies erweitert GEFs heap chunks (das Adressen, Flags, Größen und Metadaten der Chunks anzeigt), indem Informationen über freie Chunks aus heap bins (das zuvor zugewiesene und freigegebene Chunks aus glibc-Bins auflistet) integriert werden. GEF bietet Funktionen, die die Heap-Inspektion unterstützen, wie die beiden genannten, aber es ist mühsam, die beiden zu kombinieren. Auf hoher Ebene sammelt dieser Befehl Adressen freier Chunks aus letzterem und kennzeichnet sie im Ergebnis des ersteren.

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

A modified `heap chunks` with info about free chunks.

optional arguments:
  -h, --help  show this help message and exit
  --nocolor   disable ANSI color codes

Beispielausgabe:

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

...
Tool herunterladen