Skip to content

Commit db9a3d1

Browse files
author
Brent Cook
committed
fix deletekey API usage from the meterpreter CLI
There is an old-looking bug where the deletekey command opens the key it tries to delete, then deletes the same key name again. Basically, it uses the wrong level of indirection.
1 parent a54182a commit db9a3d1

File tree

2 files changed

+7
-3
lines changed
  • lib/rex/post/meterpreter

2 files changed

+7
-3
lines changed

lib/rex/post/meterpreter/extensions/stdapi/sys/registry_subsystem/registry_key.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,11 @@ def delete_value(name)
163163
# Returns the path to the key.
164164
#
165165
def to_s
166-
return self.root_key.to_s + "\\" + self.base_key
166+
if self.base_key.nil?
167+
self.root_key.to_s + "\\"
168+
else
169+
self.root_key.to_s + "\\" + self.base_key
170+
end
167171
end
168172

169173
#

lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/sys.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -641,11 +641,11 @@ def cmd_reg(*args)
641641
when "deletekey"
642642
open_key = nil
643643
if not rem
644-
open_key = client.sys.registry.open_key(root_key, base_key, KEY_WRITE + wowflag)
644+
open_key = client.sys.registry.open_key(root_key, nil, KEY_WRITE + wowflag)
645645
else
646646
remote_key = client.sys.registry.open_remote_key(rem, root_key)
647647
if remote_key
648-
open_key = remote_key.open_key(base_key, KEY_WRITE + wowflag)
648+
open_key = remote_key.open_key(nil, KEY_WRITE + wowflag)
649649
end
650650
end
651651
open_key.delete_key(base_key)

0 commit comments

Comments
 (0)