Skip to content

Commit a0f703e

Browse files
committed
Add getenv support to python meterpreter
This change adds support for `getenv` to python meterpreter. Nothing too complex going on here. I tidied up the definitions of the TLVs as well so that they look nice.
1 parent 1a65566 commit a0f703e

File tree

1 file changed

+151
-124
lines changed

1 file changed

+151
-124
lines changed

data/meterpreter/ext_server_stdapi.py

Lines changed: 151 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -86,170 +86,185 @@ class SID_AND_ATTRIBUTES(ctypes.Structure):
8686
#
8787
# TLV Specific Types
8888
#
89-
TLV_TYPE_ANY = TLV_META_TYPE_NONE | 0
90-
TLV_TYPE_METHOD = TLV_META_TYPE_STRING | 1
91-
TLV_TYPE_REQUEST_ID = TLV_META_TYPE_STRING | 2
92-
TLV_TYPE_EXCEPTION = TLV_META_TYPE_GROUP | 3
93-
TLV_TYPE_RESULT = TLV_META_TYPE_UINT | 4
94-
95-
TLV_TYPE_STRING = TLV_META_TYPE_STRING | 10
96-
TLV_TYPE_UINT = TLV_META_TYPE_UINT | 11
97-
TLV_TYPE_BOOL = TLV_META_TYPE_BOOL | 12
98-
99-
TLV_TYPE_LENGTH = TLV_META_TYPE_UINT | 25
100-
TLV_TYPE_DATA = TLV_META_TYPE_RAW | 26
101-
TLV_TYPE_FLAGS = TLV_META_TYPE_UINT | 27
102-
103-
TLV_TYPE_CHANNEL_ID = TLV_META_TYPE_UINT | 50
104-
TLV_TYPE_CHANNEL_TYPE = TLV_META_TYPE_STRING | 51
105-
TLV_TYPE_CHANNEL_DATA = TLV_META_TYPE_RAW | 52
106-
TLV_TYPE_CHANNEL_DATA_GROUP = TLV_META_TYPE_GROUP | 53
107-
TLV_TYPE_CHANNEL_CLASS = TLV_META_TYPE_UINT | 54
89+
TLV_TYPE_ANY = TLV_META_TYPE_NONE | 0
90+
TLV_TYPE_METHOD = TLV_META_TYPE_STRING | 1
91+
TLV_TYPE_REQUEST_ID = TLV_META_TYPE_STRING | 2
92+
TLV_TYPE_EXCEPTION = TLV_META_TYPE_GROUP | 3
93+
TLV_TYPE_RESULT = TLV_META_TYPE_UINT | 4
94+
95+
TLV_TYPE_STRING = TLV_META_TYPE_STRING | 10
96+
TLV_TYPE_UINT = TLV_META_TYPE_UINT | 11
97+
TLV_TYPE_BOOL = TLV_META_TYPE_BOOL | 12
98+
99+
TLV_TYPE_LENGTH = TLV_META_TYPE_UINT | 25
100+
TLV_TYPE_DATA = TLV_META_TYPE_RAW | 26
101+
TLV_TYPE_FLAGS = TLV_META_TYPE_UINT | 27
102+
103+
TLV_TYPE_CHANNEL_ID = TLV_META_TYPE_UINT | 50
104+
TLV_TYPE_CHANNEL_TYPE = TLV_META_TYPE_STRING | 51
105+
TLV_TYPE_CHANNEL_DATA = TLV_META_TYPE_RAW | 52
106+
TLV_TYPE_CHANNEL_DATA_GROUP = TLV_META_TYPE_GROUP | 53
107+
TLV_TYPE_CHANNEL_CLASS = TLV_META_TYPE_UINT | 54
108108

109109
##
110110
# General
111111
##
112-
TLV_TYPE_HANDLE = TLV_META_TYPE_UINT | 600
113-
TLV_TYPE_INHERIT = TLV_META_TYPE_BOOL | 601
114-
TLV_TYPE_PROCESS_HANDLE = TLV_META_TYPE_UINT | 630
115-
TLV_TYPE_THREAD_HANDLE = TLV_META_TYPE_UINT | 631
112+
TLV_TYPE_HANDLE = TLV_META_TYPE_UINT | 600
113+
TLV_TYPE_INHERIT = TLV_META_TYPE_BOOL | 601
114+
TLV_TYPE_PROCESS_HANDLE = TLV_META_TYPE_UINT | 630
115+
TLV_TYPE_THREAD_HANDLE = TLV_META_TYPE_UINT | 631
116116

117117
##
118118
# Fs
119119
##
120-
TLV_TYPE_DIRECTORY_PATH = TLV_META_TYPE_STRING | 1200
121-
TLV_TYPE_FILE_NAME = TLV_META_TYPE_STRING | 1201
122-
TLV_TYPE_FILE_PATH = TLV_META_TYPE_STRING | 1202
123-
TLV_TYPE_FILE_MODE = TLV_META_TYPE_STRING | 1203
124-
TLV_TYPE_FILE_SIZE = TLV_META_TYPE_UINT | 1204
120+
TLV_TYPE_DIRECTORY_PATH = TLV_META_TYPE_STRING | 1200
121+
TLV_TYPE_FILE_NAME = TLV_META_TYPE_STRING | 1201
122+
TLV_TYPE_FILE_PATH = TLV_META_TYPE_STRING | 1202
123+
TLV_TYPE_FILE_MODE = TLV_META_TYPE_STRING | 1203
124+
TLV_TYPE_FILE_SIZE = TLV_META_TYPE_UINT | 1204
125125

126-
TLV_TYPE_STAT_BUF = TLV_META_TYPE_COMPLEX | 1220
126+
TLV_TYPE_STAT_BUF = TLV_META_TYPE_COMPLEX | 1220
127127

128-
TLV_TYPE_SEARCH_RECURSE = TLV_META_TYPE_BOOL | 1230
129-
TLV_TYPE_SEARCH_GLOB = TLV_META_TYPE_STRING | 1231
130-
TLV_TYPE_SEARCH_ROOT = TLV_META_TYPE_STRING | 1232
131-
TLV_TYPE_SEARCH_RESULTS = TLV_META_TYPE_GROUP | 1233
128+
TLV_TYPE_SEARCH_RECURSE = TLV_META_TYPE_BOOL | 1230
129+
TLV_TYPE_SEARCH_GLOB = TLV_META_TYPE_STRING | 1231
130+
TLV_TYPE_SEARCH_ROOT = TLV_META_TYPE_STRING | 1232
131+
TLV_TYPE_SEARCH_RESULTS = TLV_META_TYPE_GROUP | 1233
132132

133133
##
134134
# Net
135135
##
136-
TLV_TYPE_HOST_NAME = TLV_META_TYPE_STRING | 1400
137-
TLV_TYPE_PORT = TLV_META_TYPE_UINT | 1401
136+
TLV_TYPE_HOST_NAME = TLV_META_TYPE_STRING | 1400
137+
TLV_TYPE_PORT = TLV_META_TYPE_UINT | 1401
138138

139-
TLV_TYPE_SUBNET = TLV_META_TYPE_RAW | 1420
140-
TLV_TYPE_NETMASK = TLV_META_TYPE_RAW | 1421
141-
TLV_TYPE_GATEWAY = TLV_META_TYPE_RAW | 1422
142-
TLV_TYPE_NETWORK_ROUTE = TLV_META_TYPE_GROUP | 1423
139+
TLV_TYPE_SUBNET = TLV_META_TYPE_RAW | 1420
140+
TLV_TYPE_NETMASK = TLV_META_TYPE_RAW | 1421
141+
TLV_TYPE_GATEWAY = TLV_META_TYPE_RAW | 1422
142+
TLV_TYPE_NETWORK_ROUTE = TLV_META_TYPE_GROUP | 1423
143143

144-
TLV_TYPE_IP = TLV_META_TYPE_RAW | 1430
145-
TLV_TYPE_MAC_ADDRESS = TLV_META_TYPE_RAW | 1431
146-
TLV_TYPE_MAC_NAME = TLV_META_TYPE_STRING | 1432
147-
TLV_TYPE_NETWORK_INTERFACE = TLV_META_TYPE_GROUP | 1433
144+
TLV_TYPE_IP = TLV_META_TYPE_RAW | 1430
145+
TLV_TYPE_MAC_ADDRESS = TLV_META_TYPE_RAW | 1431
146+
TLV_TYPE_MAC_NAME = TLV_META_TYPE_STRING | 1432
147+
TLV_TYPE_NETWORK_INTERFACE = TLV_META_TYPE_GROUP | 1433
148148

149-
TLV_TYPE_SUBNET_STRING = TLV_META_TYPE_STRING | 1440
150-
TLV_TYPE_NETMASK_STRING = TLV_META_TYPE_STRING | 1441
151-
TLV_TYPE_GATEWAY_STRING = TLV_META_TYPE_STRING | 1442
152-
TLV_TYPE_ROUTE_METRIC = TLV_META_TYPE_UINT | 1443
153-
TLV_TYPE_ADDR_TYPE = TLV_META_TYPE_UINT | 1444
149+
TLV_TYPE_SUBNET_STRING = TLV_META_TYPE_STRING | 1440
150+
TLV_TYPE_NETMASK_STRING = TLV_META_TYPE_STRING | 1441
151+
TLV_TYPE_GATEWAY_STRING = TLV_META_TYPE_STRING | 1442
152+
TLV_TYPE_ROUTE_METRIC = TLV_META_TYPE_UINT | 1443
153+
TLV_TYPE_ADDR_TYPE = TLV_META_TYPE_UINT | 1444
154154

155+
##
155156
# Socket
156-
TLV_TYPE_PEER_HOST = TLV_META_TYPE_STRING | 1500
157-
TLV_TYPE_PEER_PORT = TLV_META_TYPE_UINT | 1501
158-
TLV_TYPE_LOCAL_HOST = TLV_META_TYPE_STRING | 1502
159-
TLV_TYPE_LOCAL_PORT = TLV_META_TYPE_UINT | 1503
160-
TLV_TYPE_CONNECT_RETRIES = TLV_META_TYPE_UINT | 1504
157+
##
158+
TLV_TYPE_PEER_HOST = TLV_META_TYPE_STRING | 1500
159+
TLV_TYPE_PEER_PORT = TLV_META_TYPE_UINT | 1501
160+
TLV_TYPE_LOCAL_HOST = TLV_META_TYPE_STRING | 1502
161+
TLV_TYPE_LOCAL_PORT = TLV_META_TYPE_UINT | 1503
162+
TLV_TYPE_CONNECT_RETRIES = TLV_META_TYPE_UINT | 1504
161163

162-
TLV_TYPE_SHUTDOWN_HOW = TLV_META_TYPE_UINT | 1530
164+
TLV_TYPE_SHUTDOWN_HOW = TLV_META_TYPE_UINT | 1530
163165

166+
##
164167
# Registry
165-
TLV_TYPE_HKEY = TLV_META_TYPE_UINT | 1000
166-
TLV_TYPE_ROOT_KEY = TLV_TYPE_HKEY
167-
TLV_TYPE_BASE_KEY = TLV_META_TYPE_STRING | 1001
168-
TLV_TYPE_PERMISSION = TLV_META_TYPE_UINT | 1002
169-
TLV_TYPE_KEY_NAME = TLV_META_TYPE_STRING | 1003
170-
TLV_TYPE_VALUE_NAME = TLV_META_TYPE_STRING | 1010
171-
TLV_TYPE_VALUE_TYPE = TLV_META_TYPE_UINT | 1011
172-
TLV_TYPE_VALUE_DATA = TLV_META_TYPE_RAW | 1012
173-
TLV_TYPE_TARGET_HOST = TLV_META_TYPE_STRING | 1013
168+
##
169+
TLV_TYPE_HKEY = TLV_META_TYPE_UINT | 1000
170+
TLV_TYPE_ROOT_KEY = TLV_TYPE_HKEY
171+
TLV_TYPE_BASE_KEY = TLV_META_TYPE_STRING | 1001
172+
TLV_TYPE_PERMISSION = TLV_META_TYPE_UINT | 1002
173+
TLV_TYPE_KEY_NAME = TLV_META_TYPE_STRING | 1003
174+
TLV_TYPE_VALUE_NAME = TLV_META_TYPE_STRING | 1010
175+
TLV_TYPE_VALUE_TYPE = TLV_META_TYPE_UINT | 1011
176+
TLV_TYPE_VALUE_DATA = TLV_META_TYPE_RAW | 1012
177+
TLV_TYPE_TARGET_HOST = TLV_META_TYPE_STRING | 1013
174178

179+
##
175180
# Config
176-
TLV_TYPE_COMPUTER_NAME = TLV_META_TYPE_STRING | 1040
177-
TLV_TYPE_OS_NAME = TLV_META_TYPE_STRING | 1041
178-
TLV_TYPE_USER_NAME = TLV_META_TYPE_STRING | 1042
179-
TLV_TYPE_ARCHITECTURE = TLV_META_TYPE_STRING | 1043
181+
##
182+
TLV_TYPE_COMPUTER_NAME = TLV_META_TYPE_STRING | 1040
183+
TLV_TYPE_OS_NAME = TLV_META_TYPE_STRING | 1041
184+
TLV_TYPE_USER_NAME = TLV_META_TYPE_STRING | 1042
185+
TLV_TYPE_ARCHITECTURE = TLV_META_TYPE_STRING | 1043
186+
187+
##
188+
# Environment
189+
##
190+
TLV_TYPE_ENV_VARIABLE = TLV_META_TYPE_STRING | 1100
191+
TLV_TYPE_ENV_VALUE = TLV_META_TYPE_STRING | 1101
192+
TLV_TYPE_ENV_GROUP = TLV_META_TYPE_GROUP | 1102
180193

181194
DELETE_KEY_FLAG_RECURSIVE = (1 << 0)
182195

196+
##
183197
# Process
184-
TLV_TYPE_BASE_ADDRESS = TLV_META_TYPE_UINT | 2000
185-
TLV_TYPE_ALLOCATION_TYPE = TLV_META_TYPE_UINT | 2001
186-
TLV_TYPE_PROTECTION = TLV_META_TYPE_UINT | 2002
187-
TLV_TYPE_PROCESS_PERMS = TLV_META_TYPE_UINT | 2003
188-
TLV_TYPE_PROCESS_MEMORY = TLV_META_TYPE_RAW | 2004
189-
TLV_TYPE_ALLOC_BASE_ADDRESS = TLV_META_TYPE_UINT | 2005
190-
TLV_TYPE_MEMORY_STATE = TLV_META_TYPE_UINT | 2006
191-
TLV_TYPE_MEMORY_TYPE = TLV_META_TYPE_UINT | 2007
192-
TLV_TYPE_ALLOC_PROTECTION = TLV_META_TYPE_UINT | 2008
193-
TLV_TYPE_PID = TLV_META_TYPE_UINT | 2300
194-
TLV_TYPE_PROCESS_NAME = TLV_META_TYPE_STRING | 2301
195-
TLV_TYPE_PROCESS_PATH = TLV_META_TYPE_STRING | 2302
196-
TLV_TYPE_PROCESS_GROUP = TLV_META_TYPE_GROUP | 2303
197-
TLV_TYPE_PROCESS_FLAGS = TLV_META_TYPE_UINT | 2304
198-
TLV_TYPE_PROCESS_ARGUMENTS = TLV_META_TYPE_STRING | 2305
199-
TLV_TYPE_PROCESS_ARCH = TLV_META_TYPE_UINT | 2306
200-
TLV_TYPE_PARENT_PID = TLV_META_TYPE_UINT | 2307
201-
202-
TLV_TYPE_IMAGE_FILE = TLV_META_TYPE_STRING | 2400
203-
TLV_TYPE_IMAGE_FILE_PATH = TLV_META_TYPE_STRING | 2401
204-
TLV_TYPE_PROCEDURE_NAME = TLV_META_TYPE_STRING | 2402
205-
TLV_TYPE_PROCEDURE_ADDRESS = TLV_META_TYPE_UINT | 2403
206-
TLV_TYPE_IMAGE_BASE = TLV_META_TYPE_UINT | 2404
207-
TLV_TYPE_IMAGE_GROUP = TLV_META_TYPE_GROUP | 2405
208-
TLV_TYPE_IMAGE_NAME = TLV_META_TYPE_STRING | 2406
209-
210-
TLV_TYPE_THREAD_ID = TLV_META_TYPE_UINT | 2500
211-
TLV_TYPE_THREAD_PERMS = TLV_META_TYPE_UINT | 2502
212-
TLV_TYPE_EXIT_CODE = TLV_META_TYPE_UINT | 2510
213-
TLV_TYPE_ENTRY_POINT = TLV_META_TYPE_UINT | 2511
214-
TLV_TYPE_ENTRY_PARAMETER = TLV_META_TYPE_UINT | 2512
215-
TLV_TYPE_CREATION_FLAGS = TLV_META_TYPE_UINT | 2513
216-
217-
TLV_TYPE_REGISTER_NAME = TLV_META_TYPE_STRING | 2540
218-
TLV_TYPE_REGISTER_SIZE = TLV_META_TYPE_UINT | 2541
219-
TLV_TYPE_REGISTER_VALUE_32 = TLV_META_TYPE_UINT | 2542
220-
TLV_TYPE_REGISTER = TLV_META_TYPE_GROUP | 2550
198+
##
199+
TLV_TYPE_BASE_ADDRESS = TLV_META_TYPE_UINT | 2000
200+
TLV_TYPE_ALLOCATION_TYPE = TLV_META_TYPE_UINT | 2001
201+
TLV_TYPE_PROTECTION = TLV_META_TYPE_UINT | 2002
202+
TLV_TYPE_PROCESS_PERMS = TLV_META_TYPE_UINT | 2003
203+
TLV_TYPE_PROCESS_MEMORY = TLV_META_TYPE_RAW | 2004
204+
TLV_TYPE_ALLOC_BASE_ADDRESS = TLV_META_TYPE_UINT | 2005
205+
TLV_TYPE_MEMORY_STATE = TLV_META_TYPE_UINT | 2006
206+
TLV_TYPE_MEMORY_TYPE = TLV_META_TYPE_UINT | 2007
207+
TLV_TYPE_ALLOC_PROTECTION = TLV_META_TYPE_UINT | 2008
208+
TLV_TYPE_PID = TLV_META_TYPE_UINT | 2300
209+
TLV_TYPE_PROCESS_NAME = TLV_META_TYPE_STRING | 2301
210+
TLV_TYPE_PROCESS_PATH = TLV_META_TYPE_STRING | 2302
211+
TLV_TYPE_PROCESS_GROUP = TLV_META_TYPE_GROUP | 2303
212+
TLV_TYPE_PROCESS_FLAGS = TLV_META_TYPE_UINT | 2304
213+
TLV_TYPE_PROCESS_ARGUMENTS = TLV_META_TYPE_STRING | 2305
214+
TLV_TYPE_PROCESS_ARCH = TLV_META_TYPE_UINT | 2306
215+
TLV_TYPE_PARENT_PID = TLV_META_TYPE_UINT | 2307
216+
217+
TLV_TYPE_IMAGE_FILE = TLV_META_TYPE_STRING | 2400
218+
TLV_TYPE_IMAGE_FILE_PATH = TLV_META_TYPE_STRING | 2401
219+
TLV_TYPE_PROCEDURE_NAME = TLV_META_TYPE_STRING | 2402
220+
TLV_TYPE_PROCEDURE_ADDRESS = TLV_META_TYPE_UINT | 2403
221+
TLV_TYPE_IMAGE_BASE = TLV_META_TYPE_UINT | 2404
222+
TLV_TYPE_IMAGE_GROUP = TLV_META_TYPE_GROUP | 2405
223+
TLV_TYPE_IMAGE_NAME = TLV_META_TYPE_STRING | 2406
224+
225+
TLV_TYPE_THREAD_ID = TLV_META_TYPE_UINT | 2500
226+
TLV_TYPE_THREAD_PERMS = TLV_META_TYPE_UINT | 2502
227+
TLV_TYPE_EXIT_CODE = TLV_META_TYPE_UINT | 2510
228+
TLV_TYPE_ENTRY_POINT = TLV_META_TYPE_UINT | 2511
229+
TLV_TYPE_ENTRY_PARAMETER = TLV_META_TYPE_UINT | 2512
230+
TLV_TYPE_CREATION_FLAGS = TLV_META_TYPE_UINT | 2513
231+
232+
TLV_TYPE_REGISTER_NAME = TLV_META_TYPE_STRING | 2540
233+
TLV_TYPE_REGISTER_SIZE = TLV_META_TYPE_UINT | 2541
234+
TLV_TYPE_REGISTER_VALUE_32 = TLV_META_TYPE_UINT | 2542
235+
TLV_TYPE_REGISTER = TLV_META_TYPE_GROUP | 2550
221236

222237
##
223238
# Ui
224239
##
225-
TLV_TYPE_IDLE_TIME = TLV_META_TYPE_UINT | 3000
226-
TLV_TYPE_KEYS_DUMP = TLV_META_TYPE_STRING | 3001
227-
TLV_TYPE_DESKTOP = TLV_META_TYPE_STRING | 3002
240+
TLV_TYPE_IDLE_TIME = TLV_META_TYPE_UINT | 3000
241+
TLV_TYPE_KEYS_DUMP = TLV_META_TYPE_STRING | 3001
242+
TLV_TYPE_DESKTOP = TLV_META_TYPE_STRING | 3002
228243

229244
##
230245
# Event Log
231246
##
232-
TLV_TYPE_EVENT_SOURCENAME = TLV_META_TYPE_STRING | 4000
233-
TLV_TYPE_EVENT_HANDLE = TLV_META_TYPE_UINT | 4001
234-
TLV_TYPE_EVENT_NUMRECORDS = TLV_META_TYPE_UINT | 4002
235-
236-
TLV_TYPE_EVENT_READFLAGS = TLV_META_TYPE_UINT | 4003
237-
TLV_TYPE_EVENT_RECORDOFFSET = TLV_META_TYPE_UINT | 4004
238-
239-
TLV_TYPE_EVENT_RECORDNUMBER = TLV_META_TYPE_UINT | 4006
240-
TLV_TYPE_EVENT_TIMEGENERATED = TLV_META_TYPE_UINT | 4007
241-
TLV_TYPE_EVENT_TIMEWRITTEN = TLV_META_TYPE_UINT | 4008
242-
TLV_TYPE_EVENT_ID = TLV_META_TYPE_UINT | 4009
243-
TLV_TYPE_EVENT_TYPE = TLV_META_TYPE_UINT | 4010
244-
TLV_TYPE_EVENT_CATEGORY = TLV_META_TYPE_UINT | 4011
245-
TLV_TYPE_EVENT_STRING = TLV_META_TYPE_STRING | 4012
246-
TLV_TYPE_EVENT_DATA = TLV_META_TYPE_RAW | 4013
247+
TLV_TYPE_EVENT_SOURCENAME = TLV_META_TYPE_STRING | 4000
248+
TLV_TYPE_EVENT_HANDLE = TLV_META_TYPE_UINT | 4001
249+
TLV_TYPE_EVENT_NUMRECORDS = TLV_META_TYPE_UINT | 4002
250+
251+
TLV_TYPE_EVENT_READFLAGS = TLV_META_TYPE_UINT | 4003
252+
TLV_TYPE_EVENT_RECORDOFFSET = TLV_META_TYPE_UINT | 4004
253+
254+
TLV_TYPE_EVENT_RECORDNUMBER = TLV_META_TYPE_UINT | 4006
255+
TLV_TYPE_EVENT_TIMEGENERATED = TLV_META_TYPE_UINT | 4007
256+
TLV_TYPE_EVENT_TIMEWRITTEN = TLV_META_TYPE_UINT | 4008
257+
TLV_TYPE_EVENT_ID = TLV_META_TYPE_UINT | 4009
258+
TLV_TYPE_EVENT_TYPE = TLV_META_TYPE_UINT | 4010
259+
TLV_TYPE_EVENT_CATEGORY = TLV_META_TYPE_UINT | 4011
260+
TLV_TYPE_EVENT_STRING = TLV_META_TYPE_STRING | 4012
261+
TLV_TYPE_EVENT_DATA = TLV_META_TYPE_RAW | 4013
247262

248263
##
249264
# Power
250265
##
251-
TLV_TYPE_POWER_FLAGS = TLV_META_TYPE_UINT | 4100
252-
TLV_TYPE_POWER_REASON = TLV_META_TYPE_UINT | 4101
266+
TLV_TYPE_POWER_FLAGS = TLV_META_TYPE_UINT | 4100
267+
TLV_TYPE_POWER_REASON = TLV_META_TYPE_UINT | 4101
253268

254269
##
255270
# Sys
@@ -367,6 +382,18 @@ def stdapi_sys_config_getuid(request, response):
367382
response += tlv_pack(TLV_TYPE_USER_NAME, getpass.getuser())
368383
return ERROR_SUCCESS, response
369384

385+
@meterpreter.register_function
386+
def stdapi_sys_config_getenv(request, response):
387+
for env_var in packet_enum_tlvs(request, TLV_TYPE_ENV_VARIABLE):
388+
pgroup = ''
389+
env_var = env_var['value'].translate(None, '%$')
390+
env_val = os.environ.get(env_var)
391+
if env_val:
392+
pgroup += tlv_pack(TLV_TYPE_ENV_VARIABLE, env_var)
393+
pgroup += tlv_pack(TLV_TYPE_ENV_VALUE, env_val)
394+
response += tlv_pack(TLV_TYPE_ENV_GROUP, pgroup)
395+
return ERROR_SUCCESS, response
396+
370397
@meterpreter.register_function
371398
def stdapi_sys_config_sysinfo(request, response):
372399
uname_info = platform.uname()

0 commit comments

Comments
 (0)