forked from p15670423/monkey
Agent: Extract method _get_victim_os
This commit is contained in:
parent
dc8a0ac2ad
commit
b31eb885f0
|
@ -210,26 +210,8 @@ class SSHExploiter(HostExploiter):
|
||||||
self._set_interrupted()
|
self._set_interrupted()
|
||||||
return self.exploit_result
|
return self.exploit_result
|
||||||
|
|
||||||
if not self.host.os.get("type"):
|
if not self.host.os.get("type") and not self._get_victim_os(ssh):
|
||||||
try:
|
return self.exploit_result
|
||||||
_, stdout, _ = ssh.exec_command("uname -o", timeout=SSH_EXEC_TIMEOUT)
|
|
||||||
uname_os = stdout.read().lower().strip().decode()
|
|
||||||
if "linux" in uname_os:
|
|
||||||
self.exploit_result.os = OperatingSystem.LINUX
|
|
||||||
self.host.os["type"] = OperatingSystem.LINUX
|
|
||||||
else:
|
|
||||||
self.exploit_result.error_message = f"SSH Skipping unknown os: {uname_os}"
|
|
||||||
|
|
||||||
if not uname_os:
|
|
||||||
logger.error(self.exploit_result.error_message)
|
|
||||||
return self.exploit_result
|
|
||||||
except Exception as exc:
|
|
||||||
self.exploit_result.error_message = (
|
|
||||||
f"Error running uname os command on victim {self.host}: ({exc})"
|
|
||||||
)
|
|
||||||
|
|
||||||
logger.error(self.exploit_result.error_message)
|
|
||||||
return self.exploit_result
|
|
||||||
|
|
||||||
agent_binary_file_object = self.agent_binary_repository.get_agent_binary(
|
agent_binary_file_object = self.agent_binary_repository.get_agent_binary(
|
||||||
self.exploit_result.os
|
self.exploit_result.os
|
||||||
|
@ -316,6 +298,28 @@ class SSHExploiter(HostExploiter):
|
||||||
logger.error(self.exploit_result.error_message)
|
logger.error(self.exploit_result.error_message)
|
||||||
return self.exploit_result
|
return self.exploit_result
|
||||||
|
|
||||||
|
def _get_victim_os(self, ssh: paramiko.SSHClient) -> bool:
|
||||||
|
try:
|
||||||
|
_, stdout, _ = ssh.exec_command("uname -o", timeout=SSH_EXEC_TIMEOUT)
|
||||||
|
uname_os = stdout.read().lower().strip().decode()
|
||||||
|
if "linux" in uname_os:
|
||||||
|
self.exploit_result.os = OperatingSystem.LINUX
|
||||||
|
self.host.os["type"] = OperatingSystem.LINUX
|
||||||
|
else:
|
||||||
|
self.exploit_result.error_message = f"SSH Skipping unknown os: {uname_os}"
|
||||||
|
|
||||||
|
if not uname_os:
|
||||||
|
logger.error(self.exploit_result.error_message)
|
||||||
|
return False
|
||||||
|
except Exception as exc:
|
||||||
|
self.exploit_result.error_message = (
|
||||||
|
f"Error running uname os command on victim {self.host}: ({exc})"
|
||||||
|
)
|
||||||
|
|
||||||
|
logger.error(self.exploit_result.error_message)
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def _upload_agent_binary(
|
def _upload_agent_binary(
|
||||||
self,
|
self,
|
||||||
ssh: paramiko.SSHClient,
|
ssh: paramiko.SSHClient,
|
||||||
|
|
Loading…
Reference in New Issue