Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cve-2024-58239 — Linux-Kernel-TLS-Subsystem-Exploit für CVE-2024-58239, der eine Privilegieneskalation durch eine Double-Free-Schwachstelle in tcp_rcv_state_process ermöglicht. Enthält Client-Server-Architektur und lokale Testskripte. | Kitploit
Tools/GitHubGitHub/khoatran107/cve-2024-58239
SchwachstellenanalyseExploitationCTFLernen & BildungBinary-Exploitation
GitHubkhoatran107/cve-2024-58239

cve-2024-58239

Linux-Kernel-TLS-Subsystem-Exploit für CVE-2024-58239, der eine Privilegieneskalation durch eine Double-Free-Schwachstelle in tcp_rcv_state_process ermöglicht. Enthält Client-Server-Architektur und lokale Testskripte.

Repository anzeigen
42vor 10 MonatenNoch 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

CVE-2024-58239 Mitigation-Exploit

Dies ist mein erster 1-Day-Exploit.

Patch: tls: stop recv() if initial process_rx_list gave us non-DATA

Ich habe exp407 auf dem kernelCTF-Spreadsheet gesehen und versucht, den Exploit zu reproduzieren.

Ich habe es geschafft, den Exploit in der kernelCTF-Umgebung auszuführen und die Flagge zu erhalten: image

Ich werde später einen detaillierten Write-up dazu schreiben.

Das Log des Exploits ist etwas lang, aufgrund einer kernel WARNING in der Mitte. Allerdings ist eine Warnung kein Fehler und tötet meinen Exploit nicht ;) image

Ordnerstruktur

Ich habe viele große Dateien aus diesem Ordner entfernt.

  • ./rootfs_v3.img
  • ./ramdisk_v1.img
  • ./releases/mitigation-v4-6.6/bzImage
  • ./releases/mitigation-v4-6.6/vmlinux
  • Die ersten 3 Dateien erhältst du durch Ausführen des original local_runner.sh

    Für die vierte Datei und den Quellcode kannst du dich mit dem kernelCTF-Server verbinden und Links zum Herunterladen erhalten.

    Aber der Einfachheit halber hier die Informationen der mitigation-v4-6.6-Instanz:

    root@kitploit:~
    Kernel image (bzImage): https://storage.googleapis.com/kernelctf-build/releases/mitigation-v4-6.6/bzImage
    Kernel image (vmlinux): https://storage.googleapis.com/kernelctf-build/releases/mitigation-v4-6.6/vmlinux.gz
    Kernel config: https://storage.googleapis.com/kernelctf-build/releases/mitigation-v4-6.6/.config
      -> abgeleitet von COS config: https://storage.googleapis.com/kernelctf-build/releases/mitigation-v4-6.6/lakitu_defconfig
    Source code info: https://storage.googleapis.com/kernelctf-build/releases/mitigation-v4-6.6/COMMIT_INFO
    

    Außerdem die Befehle zum Herunterladen der .img-Dateien:

    root@kitploit:~
    wget https://storage.googleapis.com/kernelctf-build/files/rootfs_v3.img.gz
    gzip -d rootfs_v3.img.gz
    wget https://storage.googleapis.com/kernelctf-build/files/ramdisk_v1.img
    

    Erstellen des Exploits

    root@kitploit:~
    cd ./exploit/mitigation-v4-6.6/
    make
    

    Ausführen des Exploits

    Dieser Exploit ist in 2 Teile aufgeteilt:

    • den Server, der zuerst auf einer VPS ausgeführt wird.
    • den Client, der später auf dem Zielrechner ausgeführt wird.

    Server:

    root@kitploit:~
    ./server --port <port>
    

    Client:

    root@kitploit:~
    ./client --ip <server_ip> --port <port>
    

    Lokales Testen

    Ich habe 2 Skripte geschrieben, um den Exploit lokal zu testen:

    test.py

    Dieses startet den Server im Hintergrund und führt dann den Client in der qemu-VM aus.

    Einrichtung

    Gehe zuerst zu exploit/mitigation-v4-6.6 und starte einen http-Server auf Port 3000, um den Exploit später zur qemu-VM herunterzuladen:

    root@kitploit:~
    cd exploit/mitigation-v4-6.6
    python3 -m http.server 3000
    

    Verwendung

    Dann starte das Skript in einem anderen Terminal:

    root@kitploit:~
    python3 test.py <deine_ip> <port>
    
    • <deine_ip> ist die IP deiner Netzwerkkarte. Für mich, da ich das Ganze in WSL laufen lasse, führe ich ip a aus und erhalte die IP des eth0-Interfaces: 172.30.248.93
    root@kitploit:~
    ➜  CVE-2024-58239 git:(main) ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet 10.255.255.254/32 brd 10.255.255.254 scope global lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:15:5d:22:a0:d1 brd ff:ff:ff:ff:ff:ff
        inet 172.30.248.93/20 brd 172.30.255.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::215:5dff:fe22:a0d1/64 scope link
           valid_lft forever preferred_lft forever
    
    • <port> ist ein beliebiger ungenutzter Port auf deinem lokalen Rechner. Er dient der TLS-Verbindung zwischen Client und Server.

    calc_AC_rate.py

    Dieses führt den Exploit mehrmals aus und misst die Erfolgsquote.

    Einrichtung

    Wie bei der Verwendung von test.py gehst du zu exploit/mitigation-v4-6.6 und startest einen http-Server auf Port 3000, um den Exploit später zur qemu-VM herunterzuladen:

    root@kitploit:~
    cd exploit/mitigation-v4-6.6
    python3 -m http.server 3000
    

    Verwendung

    root@kitploit:~
    python3 calc_AC_rate.py <deine_ip> <port> <anzahl_der_ausführungen>
    

    Zum Beispiel führe ich es auf meinem WSL als python3 calc_AC_rate.py 172.30.248.93 1118 100 aus.

    Erfolgsquote

    Ich arbeite noch an der Erfolgsquote, da sie derzeit etwas instabil ist.

    Ich habe calc_AC_rate.py ausgeführt, um den Exploit 100 Mal zu testen, und das Ergebnis war 50/100.

    Bei den fehlgeschlagenen Versuchen liegt es an common_interrupt, das in der Mitte auftaucht und eine naive Double-Free-Erkennung im Kernel-Slab auslöst, wie in diesem Backtrace zu sehen.

    Ich werde einen Weg finden, dies zu deaktivieren.

    root@kitploit:~
    [    4.050330]  ? die+0x32/0x80
    [    4.050809]  ? do_trap+0xd6/0x100
    [    4.051365]  ? __slab_free+0x16c/0x380
    [    4.052198]  ? do_error_trap+0x6a/0x90
    [    4.052767]  ? __slab_free+0x16c/0x380
    [    4.053350]  ? exc_invalid_op+0x4c/0x60
    [    4.053916]  ? __slab_free+0x16c/0x380
    [    4.055031]  ? asm_exc_invalid_op+0x16/0x20
    [    4.055675]  ? tcp_rcv_state_process+0x791/0xef0
    [    4.056527]  ? __slab_free+0x16c/0x380
    [    4.057097]  ? lock_timer_base+0x61/0x80
    [    4.057795]  ? tcp_get_metrics+0x142/0x380
    [    4.058560]  ? tcp_rcv_state_process+0x791/0xef0
    [    4.059265]  kmem_cache_free+0x599/0x5e0
    [    4.059915]  tcp_rcv_state_process+0x791/0xef0
    [    4.060918]  ? security_sock_rcv_skb+0x31/0x50
    [    4.061857]  ? sk_filter_trim_cap+0x11a/0x290
    [    4.062558]  tcp_v4_do_rcv+0xcd/0x280
    [    4.063281]  tcp_v4_rcv+0xf81/0x1010
    [    4.063832]  ? raw_local_deliver+0xcd/0x250
    [    4.064668]  ip_protocol_deliver_rcu+0x32/0x320
    [    4.065355]  ip_local_deliver_finish+0x7a/0xa0
    [    4.066455]  ip_sublist_rcv_finish+0x7e/0x90
    [    4.067231]  ip_sublist_rcv+0x1e1/0x220
    [    4.067919]  ? __netif_receive_skb_core.constprop.0+0xbf/0x1080
    [    4.068822]  ip_list_rcv+0x139/0x170
    [    4.069362]  __netif_receive_skb_list_core+0x29d/0x2c0
    [    4.070173]  ? __pfx_csum_block_add_ext+0x10/0x10
    [    4.071054]  netif_receive_skb_list_internal+0x1e1/0x310
    [    4.072068]  napi_complete_done+0x6e/0x1a0
    [    4.072752]  virtnet_poll+0x40d/0x5a0
    [    4.073313]  __napi_poll+0x28/0x1c0
    [    4.073854]  net_rx_action+0x14c/0x2d0
    [    4.074622]  ? vp_vring_interrupt+0x73/0x90
    [    4.075746]  __do_softirq+0xf6/0x30f
    [    4.076379]  __irq_exit_rcu+0x79/0xc0
    [    4.077356]  common_interrupt+0xb9/0xd0
    
    Tool herunterladen