Website as input — analysis
A Website OOI combines IP+port+hostname, giving one scan per unique service endpoint — no duplicate work, and port/scheme-aware. Nuclei's -u flag accepts scheme://hostname:port, so it would work.
However, the input OOI arrives as a flat dict with Reference strings, not resolved objects:
{
"object_type": "Website",
"ip_service": "IPService|internet|192.168.1.5|tcp|443|https", # Reference string
"hostname": "Hostname|internet|example.com", # Reference string
}
To construct the nuclei target URL, the main.py would need to parse hostname, port, and scheme from these Reference strings. That's doable but fragile (relies on the PK format).
Proposed approach
Step 1 (this PR): Change all three nuclei boefjes to consume ["Hostname"] only. Simple, no duplicates, already works with the current main.py. This fixes the crash bug and eliminates duplicate scans.
Step 2 (follow-up PR): Add Website support to the shared main.py with proper Reference parsing, so nuclei scans become port/scheme-aware. This also needs normalizer updates to handle Website as input OOI for findings.
I'll update this PR with nuclei-exposed-panels consuming ["Hostname"] only. The Website support can be a separate, well-tested follow-up.
Originally posted by @hasecon in #5052 (comment)
Website as input — analysis
A
WebsiteOOI combines IP+port+hostname, giving one scan per unique service endpoint — no duplicate work, and port/scheme-aware. Nuclei's-uflag acceptsscheme://hostname:port, so it would work.However, the input OOI arrives as a flat dict with Reference strings, not resolved objects:
{ "object_type": "Website", "ip_service": "IPService|internet|192.168.1.5|tcp|443|https", # Reference string "hostname": "Hostname|internet|example.com", # Reference string }To construct the nuclei target URL, the
main.pywould need to parse hostname, port, and scheme from these Reference strings. That's doable but fragile (relies on the PK format).Proposed approach
Step 1 (this PR): Change all three nuclei boefjes to consume
["Hostname"]only. Simple, no duplicates, already works with the currentmain.py. This fixes the crash bug and eliminates duplicate scans.Step 2 (follow-up PR): Add
Websitesupport to the sharedmain.pywith proper Reference parsing, so nuclei scans become port/scheme-aware. This also needs normalizer updates to handleWebsiteas input OOI for findings.I'll update this PR with
nuclei-exposed-panelsconsuming["Hostname"]only. The Website support can be a separate, well-tested follow-up.Originally posted by @hasecon in #5052 (comment)