librex 0.0.65 → 0.0.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +1 -1
- data/lib/rex/arch.rb +1 -0
- data/lib/rex/arch/sparc.rb +16 -15
- data/lib/rex/arch/sparc.rb.ut.rb +2 -1
- data/lib/rex/arch/x86.rb +1 -0
- data/lib/rex/arch/x86.rb.ut.rb +2 -1
- data/lib/rex/assembly/nasm.rb +1 -0
- data/lib/rex/assembly/nasm.rb.ut.rb +2 -1
- data/lib/rex/compat.rb +13 -0
- data/lib/rex/constants.rb +5 -4
- data/lib/rex/elfparsey.rb +3 -2
- data/lib/rex/elfparsey/elf.rb +2 -1
- data/lib/rex/elfparsey/elfbase.rb +8 -7
- data/lib/rex/elfparsey/exceptions.rb +3 -2
- data/lib/rex/elfscan.rb +3 -2
- data/lib/rex/elfscan/scanner.rb +2 -1
- data/lib/rex/elfscan/search.rb +2 -1
- data/lib/rex/encoder/alpha2.rb +2 -1
- data/lib/rex/encoder/alpha2/alpha_mixed.rb +3 -2
- data/lib/rex/encoder/alpha2/alpha_upper.rb +5 -4
- data/lib/rex/encoder/alpha2/generic.rb +37 -60
- data/lib/rex/encoder/alpha2/unicode_mixed.rb +4 -9
- data/lib/rex/encoder/alpha2/unicode_upper.rb +4 -9
- data/lib/rex/encoder/ndr.rb +1 -0
- data/lib/rex/encoder/ndr.rb.ut.rb +2 -1
- data/lib/rex/encoder/nonalpha.rb +1 -0
- data/lib/rex/encoder/nonupper.rb +1 -0
- data/lib/rex/encoder/xdr.rb +9 -8
- data/lib/rex/encoder/xdr.rb.ut.rb +2 -1
- data/lib/rex/encoder/xor.rb +1 -0
- data/lib/rex/encoder/xor/dword.rb +2 -1
- data/lib/rex/encoder/xor/dword_additive.rb +2 -1
- data/lib/rex/encoders/xor_dword.rb +1 -0
- data/lib/rex/encoders/xor_dword_additive.rb +2 -1
- data/lib/rex/encoders/xor_dword_additive.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor.rb +2 -1
- data/lib/rex/encoding/xor.rb.ts.rb +2 -1
- data/lib/rex/encoding/xor/byte.rb +2 -1
- data/lib/rex/encoding/xor/byte.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/dword.rb +2 -1
- data/lib/rex/encoding/xor/dword.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/dword_additive.rb +1 -0
- data/lib/rex/encoding/xor/dword_additive.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/exceptions.rb +1 -0
- data/lib/rex/encoding/xor/generic.rb +1 -0
- data/lib/rex/encoding/xor/generic.rb.ut.rb +2 -1
- data/lib/rex/encoding/xor/qword.rb +2 -1
- data/lib/rex/encoding/xor/word.rb +2 -1
- data/lib/rex/encoding/xor/word.rb.ut.rb +2 -1
- data/lib/rex/exceptions.rb +1 -0
- data/lib/rex/exceptions.rb.ut.rb +2 -1
- data/lib/rex/exploitation/cmdstager.rb +2 -1
- data/lib/rex/exploitation/cmdstager/base.rb +1 -0
- data/lib/rex/exploitation/cmdstager/debug_asm.rb +2 -1
- data/lib/rex/exploitation/cmdstager/debug_write.rb +2 -1
- data/lib/rex/exploitation/cmdstager/tftp.rb +2 -1
- data/lib/rex/exploitation/cmdstager/vbs.rb +2 -1
- data/lib/rex/exploitation/egghunter.rb +12 -11
- data/lib/rex/exploitation/egghunter.rb.ut.rb +2 -1
- data/lib/rex/exploitation/encryptjs.rb +1 -0
- data/lib/rex/exploitation/heaplib.rb +1 -0
- data/lib/rex/exploitation/javascriptosdetect.js +1014 -0
- data/lib/rex/exploitation/javascriptosdetect.rb +4 -857
- data/lib/rex/exploitation/jsobfu.rb +2 -1
- data/lib/rex/exploitation/obfuscatejs.rb +1 -0
- data/lib/rex/exploitation/omelet.rb +1 -0
- data/lib/rex/exploitation/omelet.rb.ut.rb +1 -0
- data/lib/rex/exploitation/opcodedb.rb +12 -11
- data/lib/rex/exploitation/opcodedb.rb.ut.rb +2 -1
- data/lib/rex/exploitation/seh.rb +3 -2
- data/lib/rex/exploitation/seh.rb.ut.rb +2 -1
- data/lib/rex/file.rb +4 -3
- data/lib/rex/file.rb.ut.rb +2 -1
- data/lib/rex/image_source.rb +3 -2
- data/lib/rex/image_source/disk.rb +3 -2
- data/lib/rex/image_source/image_source.rb +3 -2
- data/lib/rex/image_source/memory.rb +3 -2
- data/lib/rex/io/bidirectional_pipe.rb +1 -0
- data/lib/rex/io/datagram_abstraction.rb +2 -1
- data/lib/rex/io/ring_buffer.rb +49 -44
- data/lib/rex/io/ring_buffer.rb.ut.rb +4 -3
- data/lib/rex/io/stream.rb +1 -0
- data/lib/rex/io/stream_abstraction.rb +1 -0
- data/lib/rex/io/stream_server.rb +1 -0
- data/lib/rex/job_container.rb +1 -0
- data/lib/rex/logging.rb +2 -1
- data/lib/rex/logging/log_dispatcher.rb +5 -4
- data/lib/rex/logging/log_sink.rb +2 -1
- data/lib/rex/logging/sinks/flatfile.rb +4 -3
- data/lib/rex/logging/sinks/stderr.rb +2 -1
- data/lib/rex/machparsey.rb +2 -1
- data/lib/rex/machparsey/exceptions.rb +2 -1
- data/lib/rex/machparsey/mach.rb +20 -19
- data/lib/rex/machparsey/machbase.rb +27 -26
- data/lib/rex/machscan.rb +2 -1
- data/lib/rex/machscan/scanner.rb +1 -0
- data/lib/rex/mime.rb +2 -1
- data/lib/rex/mime/header.rb +1 -0
- data/lib/rex/mime/message.rb +4 -1
- data/lib/rex/mime/part.rb +2 -1
- data/lib/rex/nop/opty2.rb +2 -1
- data/lib/rex/nop/opty2.rb.ut.rb +2 -1
- data/lib/rex/nop/opty2_tables.rb +1 -0
- data/lib/rex/ole.rb +3 -2
- data/lib/rex/ole/clsid.rb +3 -2
- data/lib/rex/ole/difat.rb +3 -2
- data/lib/rex/ole/directory.rb +3 -2
- data/lib/rex/ole/direntry.rb +3 -2
- data/lib/rex/ole/fat.rb +3 -2
- data/lib/rex/ole/header.rb +3 -2
- data/lib/rex/ole/minifat.rb +3 -2
- data/lib/rex/ole/propset.rb +4 -3
- data/lib/rex/ole/samples/create_ole.rb +1 -0
- data/lib/rex/ole/samples/dir.rb +1 -0
- data/lib/rex/ole/samples/dump_stream.rb +1 -0
- data/lib/rex/ole/samples/ole_info.rb +1 -0
- data/lib/rex/ole/storage.rb +3 -2
- data/lib/rex/ole/stream.rb +3 -2
- data/lib/rex/ole/substorage.rb +3 -2
- data/lib/rex/ole/util.rb +3 -2
- data/lib/rex/parser/acunetix_nokogiri.rb +13 -12
- data/lib/rex/parser/apple_backup_manifestdb.rb +20 -19
- data/lib/rex/parser/appscan_nokogiri.rb +17 -16
- data/lib/rex/parser/arguments.rb +2 -1
- data/lib/rex/parser/arguments.rb.ut.rb +2 -1
- data/lib/rex/parser/burp_session_nokogiri.rb +8 -7
- data/lib/rex/parser/ci_nokogiri.rb +4 -3
- data/lib/rex/parser/foundstone_nokogiri.rb +18 -17
- data/lib/rex/parser/fusionvm_nokogiri.rb +109 -0
- data/lib/rex/parser/ini.rb +1 -0
- data/lib/rex/parser/ini.rb.ut.rb +2 -1
- data/lib/rex/parser/ip360_aspl_xml.rb +1 -0
- data/lib/rex/parser/ip360_xml.rb +4 -3
- data/lib/rex/parser/mbsa_nokogiri.rb +8 -7
- data/lib/rex/parser/nessus_xml.rb +3 -2
- data/lib/rex/parser/netsparker_xml.rb +10 -9
- data/lib/rex/parser/nexpose_raw_nokogiri.rb +372 -52
- data/lib/rex/parser/nexpose_simple_nokogiri.rb +8 -7
- data/lib/rex/parser/nexpose_xml.rb +1 -0
- data/lib/rex/parser/nmap_nokogiri.rb +63 -33
- data/lib/rex/parser/nmap_xml.rb +1 -0
- data/lib/rex/parser/nokogiri_doc_mixin.rb +35 -15
- data/lib/rex/parser/openvas_nokogiri.rb +172 -0
- data/lib/rex/parser/retina_xml.rb +1 -0
- data/lib/rex/parser/wapiti_nokogiri.rb +105 -0
- data/lib/rex/payloads.rb +2 -1
- data/lib/rex/payloads/win32.rb +2 -1
- data/lib/rex/payloads/win32/common.rb +2 -1
- data/lib/rex/payloads/win32/kernel.rb +2 -1
- data/lib/rex/payloads/win32/kernel/common.rb +4 -3
- data/lib/rex/payloads/win32/kernel/migration.rb +2 -1
- data/lib/rex/payloads/win32/kernel/recovery.rb +2 -1
- data/lib/rex/payloads/win32/kernel/stager.rb +21 -20
- data/lib/rex/peparsey.rb +3 -2
- data/lib/rex/peparsey/exceptions.rb +2 -1
- data/lib/rex/peparsey/pe.rb +3 -2
- data/lib/rex/peparsey/pe_memdump.rb +2 -1
- data/lib/rex/peparsey/pebase.rb +2 -1
- data/lib/rex/peparsey/section.rb +2 -1
- data/lib/rex/pescan.rb +3 -2
- data/lib/rex/pescan/analyze.rb +1 -0
- data/lib/rex/pescan/scanner.rb +1 -0
- data/lib/rex/pescan/search.rb +1 -0
- data/lib/rex/platforms.rb +2 -1
- data/lib/rex/platforms/windows.rb +2 -1
- data/lib/rex/poly.rb +2 -1
- data/lib/rex/poly/block.rb +16 -15
- data/lib/rex/poly/register.rb +2 -1
- data/lib/rex/poly/register/x86.rb +2 -1
- data/lib/rex/post.rb +2 -2
- data/lib/rex/post/dir.rb +2 -1
- data/lib/rex/post/file.rb +1 -0
- data/lib/rex/post/file_stat.rb +1 -0
- data/lib/rex/post/io.rb +2 -1
- data/lib/rex/post/meterpreter.rb +2 -1
- data/lib/rex/post/meterpreter/channel.rb +1 -0
- data/lib/rex/post/meterpreter/channel_container.rb +2 -1
- data/lib/rex/post/meterpreter/channels/pool.rb +1 -0
- data/lib/rex/post/meterpreter/channels/pools/file.rb +1 -0
- data/lib/rex/post/meterpreter/channels/pools/stream_pool.rb +3 -2
- data/lib/rex/post/meterpreter/channels/stream.rb +1 -0
- data/lib/rex/post/meterpreter/client.rb +23 -1
- data/lib/rex/post/meterpreter/client_core.rb +10 -5
- data/lib/rex/post/meterpreter/dependencies.rb +2 -1
- data/lib/rex/post/meterpreter/extension.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/espia/espia.rb +7 -6
- data/lib/rex/post/meterpreter/extensions/espia/tlv.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/incognito/incognito.rb +5 -4
- data/lib/rex/post/meterpreter/extensions/incognito/tlv.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/lanattacks/lanattacks.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/lanattacks/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/networkpug/networkpug.rb +7 -6
- data/lib/rex/post/meterpreter/extensions/networkpug/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/priv/fs.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/priv/passwd.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/priv/priv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/priv/tlv.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/sniffer/sniffer.rb +28 -11
- data/lib/rex/post/meterpreter/extensions/sniffer/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/constants.rb +6 -5
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/dir.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/file.rb +3 -2
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/fs/io.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/net/config.rb +39 -5
- data/lib/rex/post/meterpreter/extensions/stdapi/net/interface.rb +75 -18
- data/lib/rex/post/meterpreter/extensions/stdapi/net/route.rb +18 -6
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_client_channel.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/tcp_server_channel.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/net/socket_subsystem/udp_channel.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun.rb.ts.rb +4 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/api_constants.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/buffer_item.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_advapi32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_crypt32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_iphlpapi.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_kernel32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_netapi32.rb +12 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ntdll.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_shell32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_user32.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_wlanapi.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/def/def_ws2_32.rb +7 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_function.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_helper.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_wrapper.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/dll_wrapper.rb.ut.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/mock_magic.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/multicall.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/platform_util.rb +23 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/platform_util.rb.ut.rb +29 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb +10 -5
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/railgun.rb.ut.rb +9 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/tlv.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/type/pointer_util.rb +106 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/type/pointer_util.rb.ut.rb +128 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/util.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb +27 -6
- data/lib/rex/post/meterpreter/extensions/stdapi/railgun/win_const_manager.rb.ut.rb +21 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/stdapi.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/config.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/event_log_subsystem/event_record.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/power.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process.rb +43 -4
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/image.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/io.rb +2 -1
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/memory.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/process_subsystem/thread.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_value.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/remote_registry_key.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/sys/thread.rb +1 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/tlv.rb +7 -0
- data/lib/rex/post/meterpreter/extensions/stdapi/ui.rb +14 -13
- data/lib/rex/post/meterpreter/extensions/stdapi/webcam/webcam.rb +1 -0
- data/lib/rex/post/meterpreter/inbound_packet_handler.rb +2 -1
- data/lib/rex/post/meterpreter/object_aliases.rb +6 -5
- data/lib/rex/post/meterpreter/packet.rb +26 -6
- data/lib/rex/post/meterpreter/packet_dispatcher.rb +1 -0
- data/lib/rex/post/meterpreter/packet_parser.rb +1 -0
- data/lib/rex/post/meterpreter/packet_response_waiter.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb +103 -28
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/espia.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/incognito.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/networkpug.rb +1 -0
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv.rb +3 -2
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/elevate.rb +12 -11
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/passwd.rb +2 -1
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/priv/timestomp.rb +2 -1
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/sniffer.rb +53 -36
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi.rb +3 -2
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/fs.rb +87 -44
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb +80 -18
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/sys.rb +77 -48
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/ui.rb +72 -41
- data/lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/webcam.rb +24 -5
- data/lib/rex/post/meterpreter/ui/console/interactive_channel.rb +2 -1
- data/lib/rex/post/permission.rb +2 -1
- data/lib/rex/post/process.rb +2 -1
- data/lib/rex/post/thread.rb +2 -1
- data/lib/rex/post/ui.rb +2 -1
- data/lib/rex/proto.rb +1 -0
- data/lib/rex/proto.rb.ts.rb +2 -1
- data/lib/rex/proto/dcerpc.rb +2 -1
- data/lib/rex/proto/dcerpc.rb.ts.rb +2 -1
- data/lib/rex/proto/dcerpc/client.rb +1 -0
- data/lib/rex/proto/dcerpc/client.rb.ut.rb +1 -0
- data/lib/rex/proto/dcerpc/exceptions.rb +2 -1
- data/lib/rex/proto/dcerpc/handle.rb +1 -0
- data/lib/rex/proto/dcerpc/handle.rb.ut.rb +2 -1
- data/lib/rex/proto/dcerpc/ndr.rb +2 -1
- data/lib/rex/proto/dcerpc/ndr.rb.ut.rb +2 -1
- data/lib/rex/proto/dcerpc/packet.rb +52 -45
- data/lib/rex/proto/dcerpc/packet.rb.ut.rb +12 -11
- data/lib/rex/proto/dcerpc/response.rb +1 -0
- data/lib/rex/proto/dcerpc/response.rb.ut.rb +2 -1
- data/lib/rex/proto/dcerpc/uuid.rb +13 -12
- data/lib/rex/proto/dcerpc/uuid.rb.ut.rb +2 -1
- data/lib/rex/proto/dhcp.rb +2 -1
- data/lib/rex/proto/dhcp/constants.rb +2 -1
- data/lib/rex/proto/dhcp/server.rb +4 -3
- data/lib/rex/proto/drda.rb +1 -0
- data/lib/rex/proto/drda.rb.ts.rb +1 -0
- data/lib/rex/proto/drda/constants.rb +1 -0
- data/lib/rex/proto/drda/constants.rb.ut.rb +1 -0
- data/lib/rex/proto/drda/packet.rb +11 -10
- data/lib/rex/proto/drda/packet.rb.ut.rb +5 -4
- data/lib/rex/proto/drda/utils.rb +4 -3
- data/lib/rex/proto/drda/utils.rb.ut.rb +3 -2
- data/lib/rex/proto/http.rb +2 -1
- data/lib/rex/proto/http.rb.ts.rb +2 -1
- data/lib/rex/proto/http/client.rb +29 -5
- data/lib/rex/proto/http/client.rb.ut.rb +1 -0
- data/lib/rex/proto/http/handler.rb +2 -1
- data/lib/rex/proto/http/handler/erb.rb +5 -4
- data/lib/rex/proto/http/handler/erb.rb.ut.rb +2 -1
- data/lib/rex/proto/http/handler/proc.rb +1 -0
- data/lib/rex/proto/http/handler/proc.rb.ut.rb +2 -1
- data/lib/rex/proto/http/header.rb +3 -3
- data/lib/rex/proto/http/header.rb.ut.rb +2 -1
- data/lib/rex/proto/http/packet.rb +1 -0
- data/lib/rex/proto/http/packet.rb.ut.rb +15 -14
- data/lib/rex/proto/http/request.rb +23 -22
- data/lib/rex/proto/http/request.rb.ut.rb +2 -1
- data/lib/rex/proto/http/response.rb +6 -5
- data/lib/rex/proto/http/response.rb.ut.rb +7 -6
- data/lib/rex/proto/http/server.rb +1 -0
- data/lib/rex/proto/http/server.rb.ut.rb +6 -5
- data/lib/rex/proto/iax2.rb +1 -0
- data/lib/rex/proto/iax2/call.rb +48 -47
- data/lib/rex/proto/iax2/client.rb +23 -22
- data/lib/rex/proto/iax2/codecs.rb +1 -0
- data/lib/rex/proto/iax2/codecs/alaw.rb +1 -0
- data/lib/rex/proto/iax2/codecs/g711.rb +4 -3
- data/lib/rex/proto/iax2/codecs/mulaw.rb +1 -0
- data/lib/rex/proto/iax2/constants.rb +1 -0
- data/lib/rex/proto/natpmp.rb +11 -0
- data/lib/rex/proto/natpmp/constants.rb +19 -0
- data/lib/rex/proto/natpmp/packet.rb +45 -0
- data/lib/rex/proto/ntlm.rb +1 -0
- data/lib/rex/proto/ntlm.rb.ut.rb +1 -0
- data/lib/rex/proto/ntlm/base.rb +38 -37
- data/lib/rex/proto/ntlm/constants.rb +1 -0
- data/lib/rex/proto/ntlm/crypt.rb +45 -44
- data/lib/rex/proto/ntlm/exceptions.rb +1 -0
- data/lib/rex/proto/ntlm/message.rb +30 -29
- data/lib/rex/proto/ntlm/utils.rb +116 -115
- data/lib/rex/proto/proxy/socks4a.rb +1 -0
- data/lib/rex/proto/rfb.rb +1 -0
- data/lib/rex/proto/rfb.rb.ut.rb +1 -0
- data/lib/rex/proto/rfb/cipher.rb +1 -0
- data/lib/rex/proto/rfb/client.rb +1 -0
- data/lib/rex/proto/rfb/constants.rb +1 -0
- data/lib/rex/proto/smb.rb +2 -1
- data/lib/rex/proto/smb.rb.ts.rb +2 -1
- data/lib/rex/proto/smb/client.rb +23 -22
- data/lib/rex/proto/smb/client.rb.ut.rb +1 -0
- data/lib/rex/proto/smb/constants.rb +1 -0
- data/lib/rex/proto/smb/constants.rb.ut.rb +2 -1
- data/lib/rex/proto/smb/crypt.rb +3 -2
- data/lib/rex/proto/smb/evasions.rb +1 -0
- data/lib/rex/proto/smb/exceptions.rb +6 -5
- data/lib/rex/proto/smb/simpleclient.rb +1 -0
- data/lib/rex/proto/smb/simpleclient.rb.ut.rb +1 -0
- data/lib/rex/proto/smb/utils.rb +1 -0
- data/lib/rex/proto/smb/utils.rb.ut.rb +2 -1
- data/lib/rex/proto/sunrpc.rb +1 -0
- data/lib/rex/proto/sunrpc/client.rb +1 -0
- data/lib/rex/proto/tftp.rb +3 -1
- data/lib/rex/proto/tftp/client.rb +344 -0
- data/lib/rex/proto/tftp/constants.rb +2 -1
- data/lib/rex/proto/tftp/server.rb +2 -1
- data/lib/rex/proto/tftp/server.rb.ut.rb +3 -2
- data/lib/rex/registry.rb +14 -0
- data/lib/rex/registry/hive.rb +132 -0
- data/lib/rex/registry/lfkey.rb +51 -0
- data/lib/rex/registry/nodekey.rb +54 -0
- data/lib/rex/registry/regf.rb +25 -0
- data/lib/rex/registry/valuekey.rb +67 -0
- data/lib/rex/registry/valuelist.rb +29 -0
- data/lib/rex/ropbuilder.rb +2 -1
- data/lib/rex/ropbuilder/rop.rb +3 -2
- data/lib/rex/script.rb +1 -0
- data/lib/rex/script/base.rb +1 -0
- data/lib/rex/script/meterpreter.rb +1 -0
- data/lib/rex/script/shell.rb +1 -0
- data/lib/rex/service.rb +2 -1
- data/lib/rex/service_manager.rb +6 -5
- data/lib/rex/service_manager.rb.ut.rb +2 -1
- data/lib/rex/services/local_relay.rb +1 -0
- data/lib/rex/socket.rb +72 -36
- data/lib/rex/socket.rb.ut.rb +1 -0
- data/lib/rex/socket/comm.rb +1 -0
- data/lib/rex/socket/comm/local.rb +60 -13
- data/lib/rex/socket/comm/local.rb.ut.rb +2 -1
- data/lib/rex/socket/ip.rb +1 -0
- data/lib/rex/socket/parameters.rb +15 -14
- data/lib/rex/socket/parameters.rb.ut.rb +2 -1
- data/lib/rex/socket/range_walker.rb +71 -26
- data/lib/rex/socket/range_walker.rb.ut.rb +2 -1
- data/lib/rex/socket/ssl_tcp.rb +1 -0
- data/lib/rex/socket/ssl_tcp.rb.ut.rb +2 -1
- data/lib/rex/socket/ssl_tcp_server.rb +1 -0
- data/lib/rex/socket/ssl_tcp_server.rb.ut.rb +1 -0
- data/lib/rex/socket/subnet_walker.rb +1 -0
- data/lib/rex/socket/subnet_walker.rb.ut.rb +2 -1
- data/lib/rex/socket/switch_board.rb +1 -0
- data/lib/rex/socket/switch_board.rb.ut.rb +2 -1
- data/lib/rex/socket/tcp.rb +4 -3
- data/lib/rex/socket/tcp.rb.ut.rb +2 -1
- data/lib/rex/socket/tcp_server.rb +1 -0
- data/lib/rex/socket/tcp_server.rb.ut.rb +2 -1
- data/lib/rex/socket/udp.rb +2 -1
- data/lib/rex/socket/udp.rb.ut.rb +2 -1
- data/lib/rex/struct2.rb +2 -1
- data/lib/rex/struct2/c_struct.rb +2 -1
- data/lib/rex/struct2/c_struct_template.rb +2 -1
- data/lib/rex/struct2/constant.rb +2 -1
- data/lib/rex/struct2/element.rb +2 -1
- data/lib/rex/struct2/generic.rb +1 -0
- data/lib/rex/struct2/restraint.rb +2 -1
- data/lib/rex/struct2/s_string.rb +1 -0
- data/lib/rex/struct2/s_struct.rb +1 -0
- data/lib/rex/sync.rb +2 -1
- data/lib/rex/sync/event.rb +1 -0
- data/lib/rex/sync/read_write_lock.rb +1 -0
- data/lib/rex/sync/ref.rb +2 -1
- data/lib/rex/sync/thread_safe.rb +2 -1
- data/lib/rex/test.rb +2 -1
- data/lib/rex/text.rb +136 -19
- data/lib/rex/text.rb.ut.rb +1 -0
- data/lib/rex/thread_factory.rb +5 -4
- data/lib/rex/time.rb +2 -1
- data/lib/rex/transformer.rb +1 -0
- data/lib/rex/transformer.rb.ut.rb +2 -1
- data/lib/rex/ui.rb +2 -1
- data/lib/rex/ui/interactive.rb +10 -9
- data/lib/rex/ui/output.rb +1 -0
- data/lib/rex/ui/output/none.rb +2 -1
- data/lib/rex/ui/progress_tracker.rb +2 -1
- data/lib/rex/ui/subscriber.rb +9 -8
- data/lib/rex/ui/text/color.rb +1 -0
- data/lib/rex/ui/text/color.rb.ut.rb +1 -0
- data/lib/rex/ui/text/dispatcher_shell.rb +63 -23
- data/lib/rex/ui/text/input.rb +1 -0
- data/lib/rex/ui/text/input/buffer.rb +7 -6
- data/lib/rex/ui/text/input/readline.rb +14 -13
- data/lib/rex/ui/text/input/socket.rb +1 -0
- data/lib/rex/ui/text/input/stdio.rb +2 -1
- data/lib/rex/ui/text/irb_shell.rb +1 -0
- data/lib/rex/ui/text/output.rb +1 -0
- data/lib/rex/ui/text/output/buffer.rb +1 -0
- data/lib/rex/ui/text/output/file.rb +1 -0
- data/lib/rex/ui/text/output/socket.rb +1 -0
- data/lib/rex/ui/text/output/stdio.rb +1 -0
- data/lib/rex/ui/text/output/tee.rb +1 -0
- data/lib/rex/ui/text/progress_tracker.rb +2 -1
- data/lib/rex/ui/text/progress_tracker.rb.ut.rb +2 -1
- data/lib/rex/ui/text/shell.rb +1 -0
- data/lib/rex/ui/text/table.rb +20 -14
- data/lib/rex/ui/text/table.rb.ut.rb +3 -2
- data/lib/rex/zip.rb +1 -0
- data/lib/rex/zip/archive.rb +2 -1
- data/lib/rex/zip/blocks.rb +3 -2
- data/lib/rex/zip/entry.rb +6 -7
- data/lib/rex/zip/jar.rb +4 -3
- data/lib/rex/zip/samples/comment.rb +1 -0
- data/lib/rex/zip/samples/mkwar.rb +1 -0
- data/lib/rex/zip/samples/mkzip.rb +1 -0
- data/lib/rex/zip/samples/recursive.rb +1 -0
- metadata +433 -435
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
+
# -*- coding: binary -*-
|
|
2
3
|
|
|
3
4
|
require 'rex/post/ui'
|
|
4
5
|
|
|
@@ -10,7 +11,7 @@ module Stdapi
|
|
|
10
11
|
|
|
11
12
|
###
|
|
12
13
|
#
|
|
13
|
-
# Allows for interacting with the user interface on the remote machine,
|
|
14
|
+
# Allows for interacting with the user interface on the remote machine,
|
|
14
15
|
# such as by disabling the keyboard and mouse.
|
|
15
16
|
#
|
|
16
17
|
# WARNING:
|
|
@@ -46,7 +47,7 @@ class UI < Rex::Post::UI
|
|
|
46
47
|
# Disable keyboard input on the remote machine.
|
|
47
48
|
#
|
|
48
49
|
def disable_keyboard
|
|
49
|
-
return enable_keyboard(false)
|
|
50
|
+
return enable_keyboard(false)
|
|
50
51
|
end
|
|
51
52
|
|
|
52
53
|
#
|
|
@@ -112,7 +113,7 @@ class UI < Rex::Post::UI
|
|
|
112
113
|
end
|
|
113
114
|
return desktopz
|
|
114
115
|
end
|
|
115
|
-
|
|
116
|
+
|
|
116
117
|
#
|
|
117
118
|
# Get the current desktop meterpreter is using.
|
|
118
119
|
#
|
|
@@ -129,10 +130,10 @@ class UI < Rex::Post::UI
|
|
|
129
130
|
end
|
|
130
131
|
return desktop
|
|
131
132
|
end
|
|
132
|
-
|
|
133
|
+
|
|
133
134
|
#
|
|
134
|
-
# Change the meterpreters current desktop. The switch param sets this
|
|
135
|
-
# new desktop as the interactive one (The local users visible desktop
|
|
135
|
+
# Change the meterpreters current desktop. The switch param sets this
|
|
136
|
+
# new desktop as the interactive one (The local users visible desktop
|
|
136
137
|
# with screen/keyboard/mouse control).
|
|
137
138
|
#
|
|
138
139
|
def set_desktop( session=-1, station='WinSta0', name='Default', switch=false )
|
|
@@ -147,12 +148,12 @@ class UI < Rex::Post::UI
|
|
|
147
148
|
end
|
|
148
149
|
return false
|
|
149
150
|
end
|
|
150
|
-
|
|
151
|
+
|
|
151
152
|
#
|
|
152
153
|
# Grab a screenshot of the interactive desktop
|
|
153
154
|
#
|
|
154
155
|
def screenshot( quality=50 )
|
|
155
|
-
request = Packet.create_request( 'stdapi_ui_desktop_screenshot' )
|
|
156
|
+
request = Packet.create_request( 'stdapi_ui_desktop_screenshot' )
|
|
156
157
|
request.add_tlv( TLV_TYPE_DESKTOP_SCREENSHOT_QUALITY, quality )
|
|
157
158
|
# include the x64 screenshot dll if the host OS is x64
|
|
158
159
|
if( client.sys.config.sysinfo['Architecture'] =~ /^\S*x64\S*/ )
|
|
@@ -191,7 +192,7 @@ class UI < Rex::Post::UI
|
|
|
191
192
|
response = client.send_request(request)
|
|
192
193
|
return true
|
|
193
194
|
end
|
|
194
|
-
|
|
195
|
+
|
|
195
196
|
#
|
|
196
197
|
# Start the keyboard sniffer
|
|
197
198
|
#
|
|
@@ -218,7 +219,7 @@ class UI < Rex::Post::UI
|
|
|
218
219
|
response = client.send_request(request)
|
|
219
220
|
return response.get_tlv_value(TLV_TYPE_KEYS_DUMP);
|
|
220
221
|
end
|
|
221
|
-
|
|
222
|
+
|
|
222
223
|
#
|
|
223
224
|
# Extract the keystroke from the buffer data
|
|
224
225
|
#
|
|
@@ -228,11 +229,11 @@ class UI < Rex::Post::UI
|
|
|
228
229
|
fl = (inp & 0xff00) >> 8
|
|
229
230
|
vk = (inp & 0xff)
|
|
230
231
|
kc = VirtualKeyCodes[vk]
|
|
231
|
-
|
|
232
|
+
|
|
232
233
|
f_shift = fl & (1<<1)
|
|
233
234
|
f_ctrl = fl & (1<<2)
|
|
234
235
|
f_alt = fl & (1<<3)
|
|
235
|
-
|
|
236
|
+
|
|
236
237
|
if(kc)
|
|
237
238
|
name = ((f_shift != 0 and kc.length > 1) ? kc[1] : kc[0])
|
|
238
239
|
case name
|
|
@@ -250,7 +251,7 @@ class UI < Rex::Post::UI
|
|
|
250
251
|
end
|
|
251
252
|
return outp
|
|
252
253
|
end
|
|
253
|
-
|
|
254
|
+
|
|
254
255
|
protected
|
|
255
256
|
attr_accessor :client # :nodoc:
|
|
256
257
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
+
# -*- coding: binary -*-
|
|
2
3
|
|
|
3
4
|
module Rex
|
|
4
5
|
module Post
|
|
@@ -44,7 +45,7 @@ module ObjectAliasesContainer
|
|
|
44
45
|
|
|
45
46
|
items << current_path
|
|
46
47
|
|
|
47
|
-
items.concat(dump_alias_tree(current_path,
|
|
48
|
+
items.concat(dump_alias_tree(current_path,
|
|
48
49
|
current.aliases[x]))
|
|
49
50
|
}
|
|
50
51
|
end
|
|
@@ -60,19 +61,19 @@ end
|
|
|
60
61
|
|
|
61
62
|
###
|
|
62
63
|
#
|
|
63
|
-
# Generic object aliases from a class instance referenced symbol to an
|
|
64
|
+
# Generic object aliases from a class instance referenced symbol to an
|
|
64
65
|
# associated object of an arbitrary type
|
|
65
66
|
#
|
|
66
67
|
###
|
|
67
68
|
class ObjectAliases
|
|
68
69
|
include Rex::Post::Meterpreter::ObjectAliasesContainer
|
|
69
|
-
|
|
70
|
+
|
|
70
71
|
##
|
|
71
72
|
#
|
|
72
73
|
# Constructor
|
|
73
74
|
#
|
|
74
75
|
##
|
|
75
|
-
|
|
76
|
+
|
|
76
77
|
# An instance
|
|
77
78
|
def initialize(aliases = {})
|
|
78
79
|
initialize_aliases(aliases)
|
|
@@ -80,4 +81,4 @@ class ObjectAliases
|
|
|
80
81
|
end
|
|
81
82
|
|
|
82
83
|
|
|
83
|
-
end; end; end
|
|
84
|
+
end; end; end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
+
# -*- coding: binary -*-
|
|
2
3
|
|
|
3
4
|
module Rex
|
|
4
5
|
module Post
|
|
@@ -54,6 +55,7 @@ TLV_TYPE_REQUEST_ID = TLV_META_TYPE_STRING | 2
|
|
|
54
55
|
TLV_TYPE_EXCEPTION = TLV_META_TYPE_GROUP | 3
|
|
55
56
|
TLV_TYPE_RESULT = TLV_META_TYPE_UINT | 4
|
|
56
57
|
|
|
58
|
+
|
|
57
59
|
TLV_TYPE_STRING = TLV_META_TYPE_STRING | 10
|
|
58
60
|
TLV_TYPE_UINT = TLV_META_TYPE_UINT | 11
|
|
59
61
|
TLV_TYPE_BOOL = TLV_META_TYPE_BOOL | 12
|
|
@@ -129,13 +131,14 @@ class Tlv
|
|
|
129
131
|
|
|
130
132
|
def inspect
|
|
131
133
|
utype = type ^ TLV_META_TYPE_COMPRESSED
|
|
134
|
+
group = false
|
|
132
135
|
meta = case (utype & TLV_META_MASK)
|
|
133
136
|
when TLV_META_TYPE_STRING; "STRING"
|
|
134
137
|
when TLV_META_TYPE_UINT; "INT"
|
|
135
138
|
when TLV_META_TYPE_RAW; "RAW"
|
|
136
139
|
when TLV_META_TYPE_BOOL; "BOOL"
|
|
137
140
|
when TLV_META_TYPE_QWORD; "QWORD"
|
|
138
|
-
when TLV_META_TYPE_GROUP; "GROUP"
|
|
141
|
+
when TLV_META_TYPE_GROUP; group=true; "GROUP"
|
|
139
142
|
when TLV_META_TYPE_COMPLEX; "COMPLEX"
|
|
140
143
|
else; 'unknown-meta-type'
|
|
141
144
|
end
|
|
@@ -175,16 +178,33 @@ class Tlv
|
|
|
175
178
|
when TLV_TYPE_MIGRATE_PAYLOAD; "MIGRATE-PAYLOAD"
|
|
176
179
|
when TLV_TYPE_MIGRATE_ARCH; "MIGRATE-ARCH"
|
|
177
180
|
|
|
178
|
-
#
|
|
179
|
-
#
|
|
180
|
-
#when Extensions::Stdapi::
|
|
181
|
+
#when Extensions::Stdapi::TLV_TYPE_NETWORK_INTERFACE; 'network-interface'
|
|
182
|
+
#when Extensions::Stdapi::TLV_TYPE_IP; 'ip-address'
|
|
183
|
+
#when Extensions::Stdapi::TLV_TYPE_NETMASK; 'netmask'
|
|
184
|
+
#when Extensions::Stdapi::TLV_TYPE_MAC_ADDRESS; 'mac-address'
|
|
185
|
+
#when Extensions::Stdapi::TLV_TYPE_MAC_NAME; 'interface-name'
|
|
186
|
+
#when Extensions::Stdapi::TLV_TYPE_IP6_SCOPE; 'address-scope'
|
|
187
|
+
#when Extensions::Stdapi::TLV_TYPE_INTERFACE_MTU; 'interface-mtu'
|
|
188
|
+
#when Extensions::Stdapi::TLV_TYPE_INTERFACE_FLAGS; 'interface-flags'
|
|
189
|
+
#when Extensions::Stdapi::TLV_TYPE_INTERFACE_INDEX; 'interface-index'
|
|
190
|
+
|
|
181
191
|
else; "unknown-#{type}"
|
|
182
192
|
end
|
|
183
193
|
val = value.inspect
|
|
184
194
|
if val.length > 50
|
|
185
195
|
val = val[0,50] + ' ..."'
|
|
186
196
|
end
|
|
187
|
-
|
|
197
|
+
group ||= (self.class.to_s =~ /Packet/)
|
|
198
|
+
if group
|
|
199
|
+
tlvs_inspect = "tlvs=[\n"
|
|
200
|
+
@tlvs.each { |t|
|
|
201
|
+
tlvs_inspect << " #{t.inspect}\n"
|
|
202
|
+
}
|
|
203
|
+
tlvs_inspect << "]"
|
|
204
|
+
else
|
|
205
|
+
tlvs_inspect = "meta=#{meta.ljust 10} value=#{val}"
|
|
206
|
+
end
|
|
207
|
+
"#<#{self.class} type=#{stype.ljust 15} #{tlvs_inspect}>"
|
|
188
208
|
end
|
|
189
209
|
|
|
190
210
|
##
|
|
@@ -366,7 +386,7 @@ class GroupTlv < Tlv
|
|
|
366
386
|
# Synonym for each.
|
|
367
387
|
#
|
|
368
388
|
def each_tlv(type = TLV_TYPE_ANY, &block)
|
|
369
|
-
each(type, block)
|
|
389
|
+
each(type, &block)
|
|
370
390
|
end
|
|
371
391
|
|
|
372
392
|
#
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# -*- coding: binary -*-
|
|
1
2
|
require 'rex/post/meterpreter'
|
|
2
3
|
require 'rex/parser/arguments'
|
|
3
4
|
|
|
@@ -43,11 +44,9 @@ class Console::CommandDispatcher::Core
|
|
|
43
44
|
"close" => "Closes a channel",
|
|
44
45
|
"channel" => "Displays information about active channels",
|
|
45
46
|
"exit" => "Terminate the meterpreter session",
|
|
46
|
-
"detach" => "Detach the meterpreter session (for http/https)",
|
|
47
47
|
"help" => "Help menu",
|
|
48
48
|
"interact" => "Interacts with a channel",
|
|
49
49
|
"irb" => "Drop into irb scripting mode",
|
|
50
|
-
"migrate" => "Migrate the server to another process",
|
|
51
50
|
"use" => "Deprecated alias for 'load'",
|
|
52
51
|
"load" => "Load one or more meterpreter extensions",
|
|
53
52
|
"quit" => "Terminate the meterpreter session",
|
|
@@ -61,6 +60,18 @@ class Console::CommandDispatcher::Core
|
|
|
61
60
|
"enable_unicode_encoding" => "Enables encoding of unicode strings",
|
|
62
61
|
"disable_unicode_encoding" => "Disables encoding of unicode strings"
|
|
63
62
|
}
|
|
63
|
+
|
|
64
|
+
if client.passive_service
|
|
65
|
+
c["detach"] = "Detach the meterpreter session (for http/https)"
|
|
66
|
+
end
|
|
67
|
+
# The only meterp that implements this right now is native Windows and for
|
|
68
|
+
# whatever reason it is not adding core_migrate to its list of commands.
|
|
69
|
+
# Use a dumb platform til it gets sorted.
|
|
70
|
+
#if client.commands.include? "core_migrate"
|
|
71
|
+
if client.platform =~ /win/
|
|
72
|
+
c["migrate"] = "Migrate the server to another process"
|
|
73
|
+
end
|
|
74
|
+
|
|
64
75
|
if (msf_loaded?)
|
|
65
76
|
c["info"] = "Displays information about a Post module"
|
|
66
77
|
end
|
|
@@ -83,6 +94,7 @@ class Console::CommandDispatcher::Core
|
|
|
83
94
|
end
|
|
84
95
|
|
|
85
96
|
def cmd_background
|
|
97
|
+
print_status "Backgrounding session #{client.name}..."
|
|
86
98
|
client.interacting = false
|
|
87
99
|
end
|
|
88
100
|
|
|
@@ -91,6 +103,7 @@ class Console::CommandDispatcher::Core
|
|
|
91
103
|
#
|
|
92
104
|
@@channel_opts = Rex::Parser::Arguments.new(
|
|
93
105
|
"-c" => [ true, "Close the given channel." ],
|
|
106
|
+
"-k" => [ true, "Close the given channel." ],
|
|
94
107
|
"-i" => [ true, "Interact with the given channel." ],
|
|
95
108
|
"-l" => [ false, "List active channels." ],
|
|
96
109
|
"-r" => [ true, "Read from the given channel." ],
|
|
@@ -108,7 +121,7 @@ class Console::CommandDispatcher::Core
|
|
|
108
121
|
# Performs operations on the supplied channel.
|
|
109
122
|
#
|
|
110
123
|
def cmd_channel(*args)
|
|
111
|
-
if args.include?("-h") or args.include?("--help")
|
|
124
|
+
if args.empty? or args.include?("-h") or args.include?("--help")
|
|
112
125
|
cmd_channel_help
|
|
113
126
|
return
|
|
114
127
|
end
|
|
@@ -122,7 +135,7 @@ class Console::CommandDispatcher::Core
|
|
|
122
135
|
case opt
|
|
123
136
|
when "-l"
|
|
124
137
|
mode = :list
|
|
125
|
-
when "-c"
|
|
138
|
+
when "-c", "-k"
|
|
126
139
|
mode = :close
|
|
127
140
|
chan = val
|
|
128
141
|
when "-i"
|
|
@@ -179,14 +192,35 @@ class Console::CommandDispatcher::Core
|
|
|
179
192
|
end
|
|
180
193
|
end
|
|
181
194
|
|
|
195
|
+
def cmd_channel_tabs(str, words)
|
|
196
|
+
case words.length
|
|
197
|
+
when 1
|
|
198
|
+
@@channel_opts.fmt.keys
|
|
199
|
+
when 2
|
|
200
|
+
case words[1]
|
|
201
|
+
when "-k", "-c", "-i", "-r", "-w"
|
|
202
|
+
tab_complete_channels
|
|
203
|
+
else
|
|
204
|
+
[]
|
|
205
|
+
end
|
|
206
|
+
else
|
|
207
|
+
[]
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
def cmd_close_help
|
|
212
|
+
print_line "Usage: close <channel_id>"
|
|
213
|
+
print_line
|
|
214
|
+
print_line "Closes the supplied channel."
|
|
215
|
+
print_line
|
|
216
|
+
end
|
|
217
|
+
|
|
182
218
|
#
|
|
183
219
|
# Closes a supplied channel.
|
|
184
220
|
#
|
|
185
221
|
def cmd_close(*args)
|
|
186
222
|
if (args.length == 0)
|
|
187
|
-
|
|
188
|
-
"Usage: close channel_id\n\n" +
|
|
189
|
-
"Closes the supplied channel.")
|
|
223
|
+
cmd_close_help
|
|
190
224
|
return true
|
|
191
225
|
end
|
|
192
226
|
|
|
@@ -203,6 +237,12 @@ class Console::CommandDispatcher::Core
|
|
|
203
237
|
end
|
|
204
238
|
end
|
|
205
239
|
|
|
240
|
+
def cmd_close_tabs(str, words)
|
|
241
|
+
return [] if words.length > 1
|
|
242
|
+
|
|
243
|
+
return tab_complete_channels
|
|
244
|
+
end
|
|
245
|
+
|
|
206
246
|
#
|
|
207
247
|
# Terminates the meterpreter session.
|
|
208
248
|
#
|
|
@@ -215,6 +255,17 @@ class Console::CommandDispatcher::Core
|
|
|
215
255
|
|
|
216
256
|
alias cmd_quit cmd_exit
|
|
217
257
|
|
|
258
|
+
def cmd_detach_help
|
|
259
|
+
print_line "Detach from the victim. Only possible for non-stream sessions (http/https)"
|
|
260
|
+
print_line
|
|
261
|
+
print_line "The victim will continue to attempt to call back to the handler until it"
|
|
262
|
+
print_line "successfully connects (which may happen immediately if you have a handler"
|
|
263
|
+
print_line "running in the background), or reaches its expiration."
|
|
264
|
+
print_line
|
|
265
|
+
print_line "This session may #{client.passive_service ? "" : "NOT"} be detached."
|
|
266
|
+
print_line
|
|
267
|
+
end
|
|
268
|
+
|
|
218
269
|
#
|
|
219
270
|
# Disconnects the session
|
|
220
271
|
#
|
|
@@ -227,14 +278,19 @@ class Console::CommandDispatcher::Core
|
|
|
227
278
|
shell.stop
|
|
228
279
|
end
|
|
229
280
|
|
|
281
|
+
def cmd_interact_help
|
|
282
|
+
print_line "Usage: interact <channel_id>"
|
|
283
|
+
print_line
|
|
284
|
+
print_line "Interacts with the supplied channel."
|
|
285
|
+
print_line
|
|
286
|
+
end
|
|
287
|
+
|
|
230
288
|
#
|
|
231
289
|
# Interacts with a channel.
|
|
232
290
|
#
|
|
233
291
|
def cmd_interact(*args)
|
|
234
292
|
if (args.length == 0)
|
|
235
|
-
|
|
236
|
-
"Usage: interact channel_id\n\n" +
|
|
237
|
-
"Interacts with the supplied channel.")
|
|
293
|
+
cmd_info_help
|
|
238
294
|
return true
|
|
239
295
|
end
|
|
240
296
|
|
|
@@ -250,6 +306,8 @@ class Console::CommandDispatcher::Core
|
|
|
250
306
|
end
|
|
251
307
|
end
|
|
252
308
|
|
|
309
|
+
alias cmd_interact_tabs cmd_close_tabs
|
|
310
|
+
|
|
253
311
|
#
|
|
254
312
|
# Runs the IRB scripting shell
|
|
255
313
|
#
|
|
@@ -260,15 +318,20 @@ class Console::CommandDispatcher::Core
|
|
|
260
318
|
Rex::Ui::Text::IrbShell.new(binding).run
|
|
261
319
|
end
|
|
262
320
|
|
|
321
|
+
def cmd_migrate_help
|
|
322
|
+
print_line "Usage: migrate <pid>"
|
|
323
|
+
print_line
|
|
324
|
+
print_line "Migrates the server instance to another process."
|
|
325
|
+
print_line "NOTE: Any open channels or other dynamic state will be lost."
|
|
326
|
+
print_line
|
|
327
|
+
end
|
|
328
|
+
|
|
263
329
|
#
|
|
264
330
|
# Migrates the server to the supplied process identifier.
|
|
265
331
|
#
|
|
266
332
|
def cmd_migrate(*args)
|
|
267
333
|
if (args.length == 0)
|
|
268
|
-
|
|
269
|
-
"Usage: migrate pid\n\n" +
|
|
270
|
-
"Migrates the server instance to another process.\n" +
|
|
271
|
-
"Note: Any open channels or other dynamic state will be lost.")
|
|
334
|
+
cmd_migrate_help
|
|
272
335
|
return true
|
|
273
336
|
end
|
|
274
337
|
|
|
@@ -370,14 +433,19 @@ class Console::CommandDispatcher::Core
|
|
|
370
433
|
alias cmd_use_help cmd_load_help
|
|
371
434
|
alias cmd_use_tabs cmd_load_tabs
|
|
372
435
|
|
|
436
|
+
def cmd_read_help
|
|
437
|
+
print_line "Usage: read <channel_id> [length]"
|
|
438
|
+
print_line
|
|
439
|
+
print_line "Reads data from the supplied channel."
|
|
440
|
+
print_line
|
|
441
|
+
end
|
|
442
|
+
|
|
373
443
|
#
|
|
374
444
|
# Reads data from a channel.
|
|
375
445
|
#
|
|
376
446
|
def cmd_read(*args)
|
|
377
447
|
if (args.length == 0)
|
|
378
|
-
|
|
379
|
-
"Usage: read channel_id [length]\n\n" +
|
|
380
|
-
"Reads data from the supplied channel.")
|
|
448
|
+
cmd_read_help
|
|
381
449
|
return true
|
|
382
450
|
end
|
|
383
451
|
|
|
@@ -401,6 +469,8 @@ class Console::CommandDispatcher::Core
|
|
|
401
469
|
return true
|
|
402
470
|
end
|
|
403
471
|
|
|
472
|
+
alias cmd_read_tabs cmd_close_tabs
|
|
473
|
+
|
|
404
474
|
def cmd_run_help
|
|
405
475
|
print_line "Usage: run <script> [arguments]"
|
|
406
476
|
print_line
|
|
@@ -668,17 +738,15 @@ class Console::CommandDispatcher::Core
|
|
|
668
738
|
return true
|
|
669
739
|
end
|
|
670
740
|
|
|
671
|
-
def
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
741
|
+
def cmd_resource_help
|
|
742
|
+
print_line "Usage: resource <path1> [path2 ...]"
|
|
743
|
+
print_line
|
|
744
|
+
print_line "Run the commands stored in the supplied files."
|
|
745
|
+
print_line
|
|
675
746
|
end
|
|
676
747
|
|
|
677
748
|
def cmd_resource(*args)
|
|
678
749
|
if args.empty?
|
|
679
|
-
print(
|
|
680
|
-
"Usage: resource path1 path2" +
|
|
681
|
-
"Run the commands stored in the supplied files.\n")
|
|
682
750
|
return false
|
|
683
751
|
end
|
|
684
752
|
args.each do |glob|
|
|
@@ -709,6 +777,12 @@ class Console::CommandDispatcher::Core
|
|
|
709
777
|
end
|
|
710
778
|
end
|
|
711
779
|
|
|
780
|
+
def cmd_resource_tabs(str, words)
|
|
781
|
+
return [] if words.length > 1
|
|
782
|
+
|
|
783
|
+
tab_complete_filenames(str, words)
|
|
784
|
+
end
|
|
785
|
+
|
|
712
786
|
def cmd_enable_unicode_encoding
|
|
713
787
|
client.encode_unicode = true
|
|
714
788
|
print_status("Unicode encoding is enabled")
|
|
@@ -782,12 +856,9 @@ protected
|
|
|
782
856
|
end
|
|
783
857
|
|
|
784
858
|
def tab_complete_postmods
|
|
785
|
-
# XXX This might get slow with a large number of post
|
|
786
|
-
# modules. The proper solution is probably to implement a
|
|
787
|
-
# Module::Post#session_compatible?(session_object_or_int) method
|
|
788
859
|
tabs = client.framework.modules.post.map { |name,klass|
|
|
789
860
|
mod = klass.new
|
|
790
|
-
if mod.
|
|
861
|
+
if mod.session_compatible?(client)
|
|
791
862
|
mod.fullname.dup
|
|
792
863
|
else
|
|
793
864
|
nil
|
|
@@ -798,6 +869,10 @@ protected
|
|
|
798
869
|
tabs.compact
|
|
799
870
|
end
|
|
800
871
|
|
|
872
|
+
def tab_complete_channels
|
|
873
|
+
client.channels.keys.map { |k| k.to_s }
|
|
874
|
+
end
|
|
875
|
+
|
|
801
876
|
end
|
|
802
877
|
|
|
803
878
|
end
|