metasploit-payloads 2.0.50 → 2.0.54

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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/data/android/meterpreter.jar +0 -0
  4. data/data/android/metstage.jar +0 -0
  5. data/data/android/shell.jar +0 -0
  6. data/data/meterpreter/elevator.x64.dll +0 -0
  7. data/data/meterpreter/elevator.x86.dll +0 -0
  8. data/data/meterpreter/ext_server_espia.x64.dll +0 -0
  9. data/data/meterpreter/ext_server_espia.x86.dll +0 -0
  10. data/data/meterpreter/ext_server_extapi.x64.dll +0 -0
  11. data/data/meterpreter/ext_server_extapi.x86.dll +0 -0
  12. data/data/meterpreter/ext_server_incognito.x64.dll +0 -0
  13. data/data/meterpreter/ext_server_incognito.x86.dll +0 -0
  14. data/data/meterpreter/ext_server_kiwi.x64.dll +0 -0
  15. data/data/meterpreter/ext_server_kiwi.x86.dll +0 -0
  16. data/data/meterpreter/ext_server_lanattacks.x64.dll +0 -0
  17. data/data/meterpreter/ext_server_lanattacks.x86.dll +0 -0
  18. data/data/meterpreter/ext_server_peinjector.x64.dll +0 -0
  19. data/data/meterpreter/ext_server_peinjector.x86.dll +0 -0
  20. data/data/meterpreter/ext_server_powershell.x64.dll +0 -0
  21. data/data/meterpreter/ext_server_powershell.x86.dll +0 -0
  22. data/data/meterpreter/ext_server_priv.x64.dll +0 -0
  23. data/data/meterpreter/ext_server_priv.x86.dll +0 -0
  24. data/data/meterpreter/ext_server_python.x64.dll +0 -0
  25. data/data/meterpreter/ext_server_python.x86.dll +0 -0
  26. data/data/meterpreter/ext_server_sniffer.x64.dll +0 -0
  27. data/data/meterpreter/ext_server_sniffer.x86.dll +0 -0
  28. data/data/meterpreter/ext_server_stdapi.py +1 -0
  29. data/data/meterpreter/ext_server_stdapi.x64.dll +0 -0
  30. data/data/meterpreter/ext_server_stdapi.x86.dll +0 -0
  31. data/data/meterpreter/ext_server_unhook.x64.dll +0 -0
  32. data/data/meterpreter/ext_server_unhook.x86.dll +0 -0
  33. data/data/meterpreter/ext_server_winpmem.x64.dll +0 -0
  34. data/data/meterpreter/ext_server_winpmem.x86.dll +0 -0
  35. data/data/meterpreter/meterpreter.py +37 -22
  36. data/data/meterpreter/metsrv.x64.dll +0 -0
  37. data/data/meterpreter/metsrv.x86.dll +0 -0
  38. data/data/meterpreter/screenshot.x64.dll +0 -0
  39. data/data/meterpreter/screenshot.x86.dll +0 -0
  40. data/lib/metasploit-payloads/version.rb +1 -1
  41. data.tar.gz.sig +0 -0
  42. metadata +2 -2
  43. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a4341cf64530c4372103f3773647ffdca83138ca2b0a04161feee931911e0c4c
4
- data.tar.gz: b6026f54d771bdf5c16ed85861a31badced2005036ea31793a917c1efadd6a5f
3
+ metadata.gz: 1db85f55664f5f23616d2e8964b8e489edfa02438b43cfff65cf725a9d18cfd2
4
+ data.tar.gz: e235a4c2d27623670395f3380360d55657cb7dc764c01471e6e99adef2442ec5
5
5
  SHA512:
6
- metadata.gz: 3ed3d4f0c3ab546b6ee9ff80f6245a175aec6b3c1fffe6d66b1c7183a13c1f80f9948a0c6ccee42ee6abb74190dadd4f75f8e603a745eaeb4ba9ba8f6e188224
7
- data.tar.gz: 5d2557dba651cb169d878dc8070806c7781fe6add239eef35b440922cbfc4ead199df2aec24e391d404db591c3a2588ee67cea582cca5b71b61a671ad9976a10
6
+ metadata.gz: 659af5c06e7763acdfabd5f503fb5ce5a184638268df0358d12f20eab555079f76b40b043609d61655308d66d678813b26ae2c4a2db1cc02c317ab9f5e59d957
7
+ data.tar.gz: 7986adc790b342d080616e67fcf29f648d693b6176a7ec031b97d7074098503c386cfd6b3c1bc40d979a2028fd8ee1b5891212387f03affcd01d4a41587cb27e
checksums.yaml.gz.sig CHANGED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1167,6 +1167,7 @@ def stdapi_sys_process_execute(request, response):
1167
1167
  proc_h.stdin = os.fdopen(master, 'wb')
1168
1168
  proc_h.stdout = os.fdopen(master, 'rb')
1169
1169
  proc_h.stderr = open(os.devnull, 'rb')
1170
+ proc_h.ptyfd = slave
1170
1171
  else:
1171
1172
  proc_h = STDProcess(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
1172
1173
  proc_h.echo_protection = True
@@ -639,13 +639,17 @@ class MeterpreterProcess(MeterpreterChannel):
639
639
  super(MeterpreterProcess, self).__init__()
640
640
 
641
641
  def close(self):
642
- self.proc_h.kill()
643
- if hasattr(self.proc_h.stdin, 'close'):
644
- self.proc_h.stdin.close()
645
- if hasattr(self.proc_h.stdout, 'close'):
646
- self.proc_h.stdout.close()
647
- if hasattr(self.proc_h.stderr, 'close'):
648
- self.proc_h.stderr.close()
642
+ if self.proc_h.poll() is None:
643
+ self.proc_h.kill()
644
+ if self.proc_h.ptyfd is not None:
645
+ os.close(self.proc_h.ptyfd)
646
+ for stream in (self.proc_h.stdin, self.proc_h.stdout, self.proc_h.stderr):
647
+ if not hasattr(stream, 'close'):
648
+ continue
649
+ try:
650
+ stream.close()
651
+ except (IOError, OSError):
652
+ pass
649
653
 
650
654
  def is_alive(self):
651
655
  return self.proc_h.poll() is None
@@ -739,18 +743,26 @@ class MeterpreterSocketUDPClient(MeterpreterSocket):
739
743
  export(MeterpreterSocketUDPClient)
740
744
 
741
745
  class STDProcessBuffer(threading.Thread):
742
- def __init__(self, std, is_alive):
743
- threading.Thread.__init__(self)
746
+ def __init__(self, std, is_alive, name=None):
747
+ threading.Thread.__init__(self, name=name or self.__class__.__name__)
744
748
  self.std = std
745
749
  self.is_alive = is_alive
746
750
  self.data = bytes()
747
751
  self.data_lock = threading.RLock()
748
752
 
753
+ def _read1(self):
754
+ try:
755
+ return self.std.read(1)
756
+ except (IOError, OSError):
757
+ return bytes()
758
+
749
759
  def run(self):
750
- for byte in iter(lambda: self.std.read(1), bytes()):
760
+ byte = self._read1()
761
+ while len(byte):
751
762
  self.data_lock.acquire()
752
763
  self.data += byte
753
764
  self.data_lock.release()
765
+ byte = self._read1()
754
766
 
755
767
  def is_read_ready(self):
756
768
  return len(self.data) != 0
@@ -778,14 +790,15 @@ class STDProcess(subprocess.Popen):
778
790
  debug_print('[*] starting process: ' + repr(args[0]))
779
791
  subprocess.Popen.__init__(self, *args, **kwargs)
780
792
  self.echo_protection = False
793
+ self.ptyfd = None
781
794
 
782
795
  def is_alive(self):
783
796
  return self.poll() is None
784
797
 
785
798
  def start(self):
786
- self.stdout_reader = STDProcessBuffer(self.stdout, self.is_alive)
799
+ self.stdout_reader = STDProcessBuffer(self.stdout, self.is_alive, name='STDProcessBuffer.stdout')
787
800
  self.stdout_reader.start()
788
- self.stderr_reader = STDProcessBuffer(self.stderr, self.is_alive)
801
+ self.stderr_reader = STDProcessBuffer(self.stderr, self.is_alive, name='STDProcessBuffer.stderr')
789
802
  self.stderr_reader.start()
790
803
 
791
804
  def write(self, channel_data):
@@ -1273,15 +1286,15 @@ class PythonMeterpreter(object):
1273
1286
  data = bytes()
1274
1287
  write_request_parts = []
1275
1288
  if isinstance(channel, MeterpreterProcess):
1276
- if not channel_id in self.interact_channels:
1277
- continue
1278
- proc_h = channel.proc_h
1279
- if proc_h.stderr_reader.is_read_ready():
1280
- data = proc_h.stderr_reader.read()
1281
- elif proc_h.stdout_reader.is_read_ready():
1282
- data = proc_h.stdout_reader.read()
1283
- elif not channel.is_alive():
1289
+ if channel_id in self.interact_channels:
1290
+ proc_h = channel.proc_h
1291
+ if proc_h.stderr_reader.is_read_ready():
1292
+ data = proc_h.stderr_reader.read()
1293
+ elif proc_h.stdout_reader.is_read_ready():
1294
+ data = proc_h.stdout_reader.read()
1295
+ if not channel.is_alive():
1284
1296
  self.handle_dead_resource_channel(channel_id)
1297
+ channel.close()
1285
1298
  elif isinstance(channel, MeterpreterSocketTCPClient):
1286
1299
  while select.select([channel.fileno()], [], [], 0)[0]:
1287
1300
  try:
@@ -1552,7 +1565,6 @@ class PythonMeterpreter(object):
1552
1565
  status, response = channel.core_eof(request, response)
1553
1566
  return ERROR_SUCCESS, response
1554
1567
 
1555
-
1556
1568
  def _core_channel_interact(self, request, response):
1557
1569
  channel_id = packet_get_tlv(request, TLV_TYPE_CHANNEL_ID)['value']
1558
1570
  if channel_id not in self.channels:
@@ -1614,7 +1626,10 @@ class PythonMeterpreter(object):
1614
1626
  if result != ERROR_SUCCESS:
1615
1627
  debug_print('[-] method ' + handler_name + ' resulted in error: #' + str(result))
1616
1628
  else:
1617
- debug_print('[-] method ' + handler_name + ' was requested but does not exist')
1629
+ if handler_name is None:
1630
+ debug_print('[-] command id ' + str(commd_id_tlv['value']) + ' was requested but does not exist')
1631
+ else:
1632
+ debug_print('[-] method ' + handler_name + ' was requested but does not exist')
1618
1633
  result = error_result(NotImplementedError)
1619
1634
 
1620
1635
  reqid_tlv = packet_get_tlv(request, TLV_TYPE_REQUEST_ID)
Binary file
Binary file
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  # -*- coding:binary -*-
2
2
  module MetasploitPayloads
3
- VERSION = '2.0.50'
3
+ VERSION = '2.0.54'
4
4
 
5
5
  def self.version
6
6
  VERSION
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metasploit-payloads
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.50
4
+ version: 2.0.54
5
5
  platform: ruby
6
6
  authors:
7
7
  - OJ Reeves
@@ -96,7 +96,7 @@ cert_chain:
96
96
  EknWpNgVhohbot1lfVAMmIhdtOVaRVcQQixWPwprDj/ydB8ryDMDosIMcw+fkoXU
97
97
  9GJsSaSRRYQ9UUkVL27b64okU8D48m8=
98
98
  -----END CERTIFICATE-----
99
- date: 2021-07-31 00:00:00.000000000 Z
99
+ date: 2021-08-27 00:00:00.000000000 Z
100
100
  dependencies:
101
101
  - !ruby/object:Gem::Dependency
102
102
  name: rake
metadata.gz.sig CHANGED
Binary file