-
Notifications
You must be signed in to change notification settings - Fork 0
Parse Exploit Requirements
Irtsa edited this page Feb 22, 2025
·
4 revisions
Will attempt to parse the requirements of exploits when they are passed to the function and return them in a dictionary. You will want to pass the result of metaxploit.scan_address(lib, address) directly to the function. Example:
lib = metaxploit.load("/lib/libssh.so")
addresses = metaxploit.scan(lib)
exploits = metaxploit.scan_address(lib, addresses[0])
print(parseExploitRequirements(exploits))
parseExploitRequirements = function(exploits)
list.applyFunction = function(func)
for i in range(self.len - 1)
self[i] = func(self[i])
end for
return self
end function
getExploitNames = function(exploits)
exploits = exploits.split("Unsafe check: ")[1:]
for i in range(exploits.len - 1)
exploits[i] = exploits[i].split("<b>")[1].split("</b>")[0]
end for
return exploits
end function
getExploitRequirementType = function(requirement)
if not requirement.indexOf("guest active user") == null then return "activeGuest"
if not requirement.indexOf("an active user") == null then return "activeUser"
if not requirement.indexOf("root active user") == null then return "activeRoot"
if not requirement.indexOf("registered users equal") == null then return "registeredUsers:" + requirement.split("to ")[1].split("\.")[0]
if not requirement.indexOf("port forwarding") == null then return "portForwards:" + requirement.split(" port forwarding")[0].replace(" ","")
if not requirement.indexOf("namespace") == null then return ("namespace:" + requirement.split("namespace ")[1].split(" compiled")[0] + ":" + requirement.split(">= ")[1].replace(" ","")).replace("<b>","").replace("</b>","")
if not requirement.indexOf("path") == null then return "path:" + requirement.split("path ")[1].split(" exists")[0]
return "0"
end function
getCurrentRequirements = function(exploit)
reqs = exploit.split("\*")[1:]
if reqs.len == 0 then return []
for i in range(reqs.len - 1)
reqs[i] = getExploitRequirementType(reqs[i])
end for
return reqs
end function
ExploitNames = getExploitNames(exploits)
ExploitRequirements = exploits.split("Unsafe check: ")[1:]
ExploitRequirements.applyFunction(@getCurrentRequirements)
Exploits = {}
for i in range(ExploitNames.len - 1)
Exploits[ExploitNames[i]] = ExploitRequirements[i]
end for
return Exploits
end function