
Proof-of-Concept-Exploit für CVE-2023-38545, einen Heap-Pufferüberlauf in curl. Enthält SOCKS5-Proxy und HTTP-Server, um die Schwachstelle auszulösen und die Systemexposition zu bestimmen.
Dieses Repository enthält einen Proof of Concept (PoC), der dazu dient, Systeme auf die Sicherheitslücke CVE-2023-38545 zu testen. Die Sicherheitslücke betrifft das curl-Dienstprogramm, insbesondere die Versionen zwischen 7.69.0 und 8.3.1, und steht im Zusammenhang mit der Verarbeitung von HTTP-Weiterleitungen.
Erforderliche Software: curl
Der PoC besteht aus zwei Hauptkomponenten:
Dieser Schritt ist optional, wenn Sie bereits einen SOCKS5-Proxy verwenden können.
Führen Sie setup_socks5.sh aus
$ chmod +x setup_socks5.sh
$ ./setup_socks5.sh
Dadurch werden die erforderlichen Abhängigkeiten installiert und der SOCKS5-Proxy-Server auf Port 1080 eingerichtet.
Führen Sie den folgenden Befehl aus, um den HTTP-Server zu starten:
$ python3 server.py
Sie können den Server auch mit Debug-Protokollierung ausführen
$ python3 server.py --debug
Nach erfolgreicher Ausführung hört der HTTP-Server auf Port 8000.
Machen Sie das Skript zunächst ausführbar:
$ chmod +x cve202338545.sh
Das Skript kann konfiguriert werden, um eine SOCKS5-Proxy-Adresse mit --socks5-ip und eine HTTP-Adresse mit --http-ip zu akzeptieren und kann Debug-Protokolle mit --DEBUG ausgeben.
$ ./cve202338545.sh --socks5-ip <ip> --http-ip <ip> --DEBUG # specify both proxy and http server
$ ./cve202338545.sh --socks5-ip <ip> # specify only proxy server
$ ./cve202338545.sh --http-ip <ip> # specify only http server
$ ./cve202338545.sh # both proxy and http server will default to localhost
$ ./cve202338545.sh --DEBUG # both proxy and http server will default to localhost with debug on
Dies initiiert den Exploit und Sie sollten eine Ausgabe sehen, die angibt, ob das System anfällig, nicht anfällig ist oder ob der Test nicht eindeutig war.
Es gibt 4 Antwortzustände:
Dieser Schritt ist nur erforderlich, wenn Sie setup_socks5.sh aus Schritt 1 verwendet haben.
Um den SOCKS5-Proxy-Server zu bereinigen, führen Sie den folgenden Befehl aus:
$ ./cleanup.sh