forked from p15670423/monkey
Tests: Add HTTP vs HTPS unit tests for PowerShellExploiter
This commit is contained in:
parent
a5af16e44e
commit
8144a3334e
|
@ -0,0 +1,68 @@
|
|||
from collections import namedtuple
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
import pytest
|
||||
|
||||
from infection_monkey.exploit import powershell
|
||||
from infection_monkey.exploit.powershell_utils.auth_options import AuthOptions
|
||||
from infection_monkey.exploit.powershell_utils.credentials import Credentials
|
||||
from infection_monkey.model.host import VictimHost
|
||||
|
||||
USER_LIST = ["user1", "user2"]
|
||||
PASSWORD_LIST = ["pass1", "pass2"]
|
||||
|
||||
Config = namedtuple("Config", ["exploit_user_list", "exploit_password_list"])
|
||||
|
||||
|
||||
class TestAuthenticationError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def powershell_exploiter(monkeypatch):
|
||||
host = VictimHost("127.0.0.1")
|
||||
pe = powershell.PowerShellExploiter(host)
|
||||
pe._config = Config(USER_LIST, PASSWORD_LIST)
|
||||
|
||||
monkeypatch.setattr(powershell, "AuthenticationError", TestAuthenticationError)
|
||||
|
||||
return pe
|
||||
|
||||
|
||||
def test_powershell_disabled(monkeypatch, powershell_exploiter):
|
||||
mock_powershell_client = MagicMock(side_effect=Exception)
|
||||
monkeypatch.setattr(powershell, "PowerShellClient", mock_powershell_client)
|
||||
|
||||
success = powershell_exploiter.exploit_host()
|
||||
assert not success
|
||||
|
||||
|
||||
def test_powershell_http(monkeypatch, powershell_exploiter):
|
||||
def allow_http(_, credentials: Credentials, auth_options: AuthOptions):
|
||||
if not auth_options.ssl:
|
||||
raise TestAuthenticationError
|
||||
else:
|
||||
raise Exception
|
||||
|
||||
mock_powershell_client = MagicMock(side_effect=allow_http)
|
||||
monkeypatch.setattr(powershell, "PowerShellClient", mock_powershell_client)
|
||||
powershell_exploiter.exploit_host()
|
||||
|
||||
for call_args in mock_powershell_client.call_args_list:
|
||||
assert not call_args[0][2].ssl
|
||||
|
||||
|
||||
def test_powershell_https(monkeypatch, powershell_exploiter):
|
||||
def allow_https(_, credentials: Credentials, auth_options: AuthOptions):
|
||||
if auth_options.ssl:
|
||||
raise TestAuthenticationError
|
||||
else:
|
||||
raise Exception
|
||||
|
||||
mock_powershell_client = MagicMock(side_effect=allow_https)
|
||||
monkeypatch.setattr(powershell, "PowerShellClient", mock_powershell_client)
|
||||
powershell_exploiter.exploit_host()
|
||||
|
||||
for call_args in mock_powershell_client.call_args_list:
|
||||
if call_args[0][1].password != "" and call_args[0][1].password != "dummy_password":
|
||||
assert call_args[0][2].ssl
|
Loading…
Reference in New Issue