feat: widen port enumeration across recon stages
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
"""The recon stages must scan wider than the tools' narrow built-in defaults.
|
||||
|
||||
These guard the regressions behind the 'single open port / no banner' report:
|
||||
- naabu must not silently fall back to its top-100 default.
|
||||
- httpx must be told the discovered open ports (else it only probes 80/443).
|
||||
- nmap must probe version detection at full intensity.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from recon_triage.tools import httpx, naabu, nmap
|
||||
from recon_triage.tools.base import ToolRun
|
||||
|
||||
|
||||
def _capture(monkeypatch, module):
|
||||
"""Patch a tool module's run_tool to record the command and return empty output."""
|
||||
seen: dict = {}
|
||||
|
||||
def fake_run_tool(cmd, *, timeout=120.0, input_text=None):
|
||||
seen["cmd"] = cmd
|
||||
return ToolRun(cmd=cmd, returncode=0, stdout="", stderr="")
|
||||
|
||||
monkeypatch.setattr(module, "run_tool", fake_run_tool)
|
||||
return seen
|
||||
|
||||
|
||||
def test_naabu_widens_beyond_top_100_by_default(monkeypatch):
|
||||
seen = _capture(monkeypatch, naabu)
|
||||
naabu.run(["10.0.0.1"])
|
||||
cmd = seen["cmd"]
|
||||
# Default must explicitly request top-1000, not rely on naabu's top-100 default.
|
||||
assert "-top-ports" in cmd
|
||||
assert cmd[cmd.index("-top-ports") + 1] == "1000"
|
||||
|
||||
|
||||
def test_naabu_explicit_ports_override_top_ports(monkeypatch):
|
||||
seen = _capture(monkeypatch, naabu)
|
||||
naabu.run(["10.0.0.1"], ports="-") # full sweep
|
||||
cmd = seen["cmd"]
|
||||
assert "-p" in cmd and cmd[cmd.index("-p") + 1] == "-"
|
||||
assert "-top-ports" not in cmd # explicit ports win
|
||||
|
||||
|
||||
def test_httpx_probes_discovered_ports(monkeypatch):
|
||||
seen = _capture(monkeypatch, httpx)
|
||||
httpx.run(["10.0.0.1"], ports=[5000, 8080])
|
||||
cmd = seen["cmd"]
|
||||
assert "-p" in cmd
|
||||
assert cmd[cmd.index("-p") + 1] == "5000,8080"
|
||||
|
||||
|
||||
def test_httpx_without_ports_omits_flag(monkeypatch):
|
||||
seen = _capture(monkeypatch, httpx)
|
||||
httpx.run(["10.0.0.1"])
|
||||
assert "-p" not in seen["cmd"]
|
||||
|
||||
|
||||
def test_nmap_uses_full_version_intensity(monkeypatch):
|
||||
seen = _capture(monkeypatch, nmap)
|
||||
nmap.run(["10.0.0.1"], ports=[5000])
|
||||
cmd = seen["cmd"]
|
||||
assert "-sV" in cmd
|
||||
assert "--version-all" in cmd
|
||||
Reference in New Issue
Block a user