Commit Graph
107 Commits
Author SHA1 Message Date
Yogesh Ojha 47d788df41 Add vuln nuclei module 2026-09-04 18:57:42 +05:30
Yogesh OjhaandClaude Opus 5 2375f1f1e4 feat(scan): service-level port pipeline, Services tab and Exposure panel
The unit of exposure is now a service — (ip, port) — not a bare open port.

Pipeline (EXPANSION): L0 produce hosts, L1 cdn_check + passive_ports,
L2 port_scan, L3 http_probe, L4 screenshot/waf_detect/service_fingerprint.

- cdn_check applies to every target type and records cdn_type, so a domain
  scan finally knows which addresses are CDN-fronted. cdn/waf is an edge you
  do not own (edge ports only); cloud is your own machine (scanned in full).
- port_scan decides and records a per-address scan_policy (full/web/skip)
  honouring the scan context's excluded_ips, and offers port profiles,
  exclusions, scan type, a tarpit threshold and an address budget.
- passive_ports reads Shodan internetdb through naabu -passive: keyless,
  touches_target=False, so a passive-intensity scan still gets exposure data.
- http_probe seeds its host x port matrix from open ports and folds every
  live response back onto the port (is_http, tls, product).
- service_fingerprint names the software behind non-web ports with a pure
  Python banner prober (tools/banner/), including a SOCKS5 CONNECT so it
  honours the context proxy. naabu -sV is unimplemented.
- shared/definitions/ports.py is the one vocabulary; ip_inventory and
  port_inventory are the only writers of ip_addresses/ports.
- open_ports_found is measured from the table (DERIVED_COUNTS): four stages
  write ports, so summing stage results double-counted.
- naabu failures no longer report zero open ports as success.

Surfaces: a Services tab (SERVICE_QUERY grammar, 16 fields, 18 counted
leads, 9 group dimensions, detail sheet) built on the shared results shell,
and an outlier-first Exposure panel on the Overview. Every count is a
promise — leads, groups and panel pivots were verified to equal the row
count they land on.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BnC2xMMzV6WQnpDp5zcXoU
2026-09-03 23:50:17 +05:30
Yogesh Ojha a5e6c0ac0d feat: add target enrichment, vhost discovery, and WAF detection stages
- Implemented TargetEnrichmentStage for enriching targets with DNS, WHOIS, and BGP context.
- Added VhostStage for virtual host discovery using host-header fuzzing.
- Introduced WafDetectStage for fingerprinting web application firewalls.
- Created configuration files for each new stage with relevant parameters.
- Updated Dockerfile to copy stages instead of engines.
- Enhanced existing tools and services for better integration with new stages.
- Refactored task management in Celery to accommodate new stages and improve error handling.
2026-09-02 10:18:03 +05:30
Yogesh Ojha 1b83165e0d feat: add scan insights and correlation utilities
- Introduced new utilities for scan insights in `scan-insights.ts`, including functions for certificate state, days until expiry, and query compilation.
- Added interfaces for web asset queries, subdomain filters, and insights structures.
- Enhanced `scan-status.ts` with new constants for pagination and search debounce.
- Updated the scan results page to utilize the new insights and remove unused subdomain and asset APIs.
- Modified the `HttpAsset` model to include raw request/response data and body previews.
- Created new models for scan correlation and insights, including surface stats and attention items.
- Implemented streaming JSON parsing in the HTTPX client for memory efficiency.
- Enhanced the executor to support streaming JSON output from subprocesses.
2026-06-26 16:25:30 +05:30
Yogesh Ojha d7ed513d6a feat(scans): correlation-heavy per-scan results page
Rebuild the scan detail view into a tabbed results page: Overview
(tech/status/web-server distributions, TLS health, top networks and
services), Web assets (rich httpx table with screenshots, status,
tech, CDN/WAF/TLS-expired badges + a full per-asset detail drawer),
Subdomains (denormalized HTTP summary), Infrastructure (IP-centric
cards correlating open ports and the hosts resolving to each IP), and
Pipeline. Assets correlate by value within the scan (subdomain.name /
http_asset.host / ip), so one IP card surfaces every co-located host.

API: add per-scan http-assets, ports and ips list+summary endpoints
plus services mirroring the subdomains pattern, and serve screenshots
through an authenticated /media/screenshot route; mount scan_media
into the api container so it can read worker-written captures.

Fix two serializers that silently dropped fields: ScanRead omitted
http_assets_found (scan detail and list 500'd), and the subdomain
serializer never emitted the denormalized HTTP summary it stores.

Drop leftover docstrings and banner comments from the httpx client,
parser and field-map.
2026-06-26 16:17:53 +05:30
Yogesh Ojha fc55b48fcb feat(scans): capture full httpx field set + denormalize onto subdomain
httpx is a goldmine and we were dropping most of it. Now:

- tools/runner/fieldmap.py: a declarative field map (single source of truth) —
  adding/renaming a tool's output field is a one-line edit, reusable per tool
- httpx parser rewritten as a HTTPX_FIELDS map; captures jarm (was bugged),
  cpe (CVE mapping), response_time, words/lines, body+header hashes, all A/AAAA
  IPs, http2/pipeline, cdn_type, and a far richer TLS block (cipher, issuer_org,
  serial, fingerprint, not_before, expired-derivation)
- HttpAsset gains ~21 columns for all of it
- the primary web service summary (status/title/webserver/response_time/
  content_length/tech/cdn/screenshot) is denormalized onto the Subdomain row so
  the subdomain table renders 2.x-style without joins; HttpAsset keeps full
  per-port detail
2026-06-26 16:17:53 +05:30
Yogesh Ojha f49ff0ff82 fix(scans): http asset correlation — probed host + resolved IP
HttpAsset.ip was storing httpx's request host (the hostname), not the
resolved IP, which broke the http-asset <-> IpAddress/Port value-join. Now:

- host = the probed host (from httpx `input`) -> exact match to Subdomain.name
- ip   = the resolved IP (host_ip / A record) -> exact match to Port / IpAddress
- final_url = where a followed redirect landed, kept separate from the probed
  url so the correlation key never drifts

Adds http_assets.final_url.
2026-06-26 16:17:52 +05:30
Yogesh Ojha 81fa9e899b feat(scans): expansion phase — host discovery, vhost, screenshots, waf
Rounds out expansion (host discovery, virtual hosts, screenshots, WAF):

- host_discovery: naabu liveness sweep marks IpAddress.is_alive for
  ip_range/asn; port_scan then deep-scans only live hosts
- vhost: ffuf Host-header bruteforce (domain, opt-in) -> vhost-only
  Subdomains that http_probe then picks up
- screenshot: httpx headless chromium -> HttpAsset.screenshot_path under
  a scan_media volume
- waf_detect: wafw00f fingerprints WAFs -> HttpAsset.waf

All config-driven (ExpansionConfig) with proxy / user-agent / headers +
per-tool custom args threaded through. Adds ffuf, chromium and wafw00f to
the worker image and a scan_media volume.
2026-06-26 16:17:52 +05:30
Yogesh Ojha 42a9aa8d96 feat(scans): expansion phase — cdn check, port scan, http probe
The host:port -> live HTTP asset convergence. After discovery, a scan now
runs expansion:

- port_scan: naabu (cdn-gated, well-known service names) -> Port
- cdn_check: cdncheck flags CDN/WAF/cloud IPs (ip family)
- http_probe: httpx probes the host:port matrix; one pass enriches each
  service with status/title/tech/server/TLS/cdn/jarm/favicon/hash ->
  HttpAsset, with asn backfilled from the resolved IP

httpx -tls-grab carries cert data inline (no separate tlsx pass); nmap is
dropped — naabu for ports, httpx for HTTP service id.

Also: every engine moved to its own folder; net_options() threads
proxy/headers/user-agent into every tool; rengine-tools no longer installs
top-level modules that shadowed libs (httpx); tool binaries resolve from the
go bin ahead of venv console scripts. New Port + HttpAsset models + migration
and the http_assets headline rollup.
2026-06-26 16:17:52 +05:30
Yogesh Ojha 621d1b207c feat(scans): discovery phase for all target types
Every scan now runs a discovery phase, gated per seed type:

- seed_resolution: expand ip / cidr / asn seeds into IpAddress assets
  (stdlib ipaddress, even-stride sampling + rfc1918 skip on big ranges)
- reverse_dns: dnsx -ptr over discovered IPs
- ip_enrichment: asn / org / country from cached bgp + whois
- target_enrichment: consolidate cached whois/dns/bgp, refresh on miss/stale

The engine framework grows a phase axis (discovery/expansion/depth) and
per-stage applies_to gating so a stage skips cleanly when it doesn't apply
to the seed; subdomain discovery is retagged as expansion. Adds the
IpAddress model + migration.
2026-06-25 13:56:07 +05:30
Yogesh Ojha 2faf1dddaf feat: Implement scan orchestrator with event publishing and tracking
- Add aggregate functions for scan status and counts in orchestrator.
- Create ScanEventPublisher for emitting scan-related events.
- Introduce ScanActivityService for managing scan activities.
- Implement ScanCommandRecorder for logging command executions.
- Develop canvas building and finalization logic for scan tasks.
- Refactor scan task to utilize orchestrator functions for running stages and finalizing scans.
- Enhance scan notification system to dispatch relevant events.
- Integrate command recording into CLI tool execution for better tracking.
2026-06-23 20:07:46 +05:30
Yogesh Ojha 69239333bc Refactor validation and DNS tools, implementation of onboarding wizard
- Added `clean_name` function to `validation.py` for name validation with max length.
- Simplified docstrings in `dnsx` client, parser, and service files for clarity.
- Enhanced error handling in `ViewDNSService` to prevent disabling keys on rate limits.
- Improved WHOIS service to handle concurrent inserts gracefully with integrity checks.
- Updated `Settings` class in worker config to inherit from `BaseAppSettings`.
- Added new dependencies in `pyproject.toml` for `apprise` and `cryptography`.
2026-06-21 21:56:20 +05:30
Yogesh Ojha 48b16be96f style(correlation): terse comments
Collapse descriptive docstrings/comment blocks in the correlation engine
to single-line notes.
2026-05-31 08:03:20 +05:30
Yogesh Ojha 4bd86e79c7 Reduce correlation false positives and bound correlation queries
WHOIS/DNS correlation was grouping unrelated targets on low-signal keys.
Add centralized privacy-redaction and shared-infrastructure detection,
drop country from auto-correlation, and bound every correlation query.

Backend:
- shared/utils/privacy.py: detect privacy-proxy/redacted registrant names
  and emails (Withheld for Privacy, Domains By Proxy, WhoisGuard, GDPR
  masked, etc.) so they never become correlation keys
- shared/utils/infra.py: detect shared/managed DNS (Cloudflare, Route 53,
  GoDaddy, ...) so targets are not linked merely by DNS provider
- wire redaction into WHOIS entity extraction; guard correlation queries
  defensively so legacy redacted rows do not correlate
- drop country from get_correlations_for_target (links whole regions)
- filter shared nameservers out of WHOIS nameserver correlation
- bound all WHOIS/DNS correlation queries (limit + distinct)
- exclude CDN-fronted IPs and shared nameservers from DNS correlation
- normalize country code casing at storage to fix missed matches
- return accurate cache-hit provenance from WhoisService.lookup
- reuse service finders from correlation API endpoints (DRY)

Frontend:
- remove country as a correlation type across types, API client, and the
  related/lookup/overview WHOIS components (still shown as a record field)
2026-05-31 07:18:40 +05:30
Yogesh Ojha fca02d813a refactor logger, add shared sse 2026-02-25 07:14:16 +05:30
Yogesh Ojha a9cda464d1 add endpoints for target level details 2026-02-11 11:43:55 +05:30
Yogesh Ojha 8529ff0982 add dnsx and add executor for common tool execution 2026-02-10 22:26:55 +05:30
Yogesh Ojha e2be88bfee add to types 2026-02-10 20:17:21 +05:30
Yogesh Ojha d387559c36 add ripestat api for asn and ip 2026-02-10 19:59:31 +05:30
Yogesh Ojha c2fefa74b5 add option to fetch cache only 2026-02-09 16:48:33 +05:30
Yogesh Ojha d5e46bab57 remove viewdns pagination 2026-02-09 14:14:56 +05:30
Yogesh Ojha 777d2ccf6f add viewdns 2026-02-09 14:14:26 +05:30
Yogesh Ojha 75a0f9e6a7 fix whois junction schema 2026-02-08 13:14:52 +05:30
Yogesh Ojha 7a6f3f8c16 change project structure, add whois celery worker, made redis notif handler sync 2026-02-07 20:42:40 +05:30
Yogesh Ojha 2e6f0060f8 Refactor datetime handling across models and services to use centralized utc_now function; add datetime utility for normalization 2026-02-07 12:08:12 +05:30
Yogesh Ojha 58b6aac5ef Add WHOIS service integration and update router configuration 2026-02-07 11:10:11 +05:30
Yogesh Ojha cbd8669e8c ruff cleanup 2026-02-07 10:45:32 +05:30
Yogesh Ojha 4792f70305 Implement WHOIS service with RDAP provider integration
- Added models for WHOIS responses including WhoisDomainResponse, WhoisIPResponse, and WhoisASNResponse.
- Created a parser for WHOIS data to convert raw responses into structured models.
- Developed an RDAPProvider class to handle RDAP lookups using the whoisit library.
- Implemented a WhoisService class for performing WHOIS lookups with optional database caching.
- Added methods for finding correlations between WHOIS records based on registrant, registrar, network, country, and nameservers.
- Updated Dockerfile to include tools directory and added rengine-tools dependency in pyproject.toml.
2026-02-07 10:43:08 +05:30
Yogesh Ojha c073889e6a Moved django app to /web, fixed docker files 2021-06-26 00:05:20 +05:30
Yogesh Ojha 7c083b9b36 Dockerfile modified for git cloning dependencies, introduced EyeWitness and the harvester 2021-06-23 23:49:49 +05:30
Yogesh Ojha d3f7207c6f Added People/Employee osint 2021-06-20 00:14:37 +05:30
Yogesh Ojha f874cbd0e5 Removed aquatone, brought back ubuntu 20.04 image 2021-06-20 00:14:25 +05:30
Yogesh Ojha 440b026a49 Fetching Endpoints fixed 2021-05-11 22:58:02 +05:30
Yogesh Ojha 457a194f4e Ignore file extension while scanning for urls and tasks.py modified for fetch_url 2021-05-11 21:13:28 +05:30
Yogesh Ojha b2ccb9ae42 Increased length for description, added grep for urls 2021-05-10 22:52:21 +05:30
Yogesh Ojha dcd5ed176c Added gauplus, waybackurls, gospider
Added technology, response time, is_external and webserver in endpoints
2021-05-10 00:41:43 +05:30
Yogesh Ojha e054f2b40b Changed tasks to functions 2021-05-04 22:54:22 +05:30
Yogesh Ojha 21f1780e3a Endpoints to vulnerability scan 2021-04-25 23:44:10 +05:30
Yogesh Ojha 03b2f74c10 Unique endpoints 2021-04-25 23:44:10 +05:30
Yogesh Ojha 878d4f07ab Lookup title added 2021-04-25 23:43:56 +05:30
Yogesh Ojha 33073eeea2 Endpoints to vulnerability scan 2021-04-25 23:43:56 +05:30
Yogesh Ojha 3ed42a1946 Unique endpoints 2021-04-25 23:43:56 +05:30
Yogesh OjhaandGitHub be50d0255b Merge pull request #286 from JoshuaMart/AmassUpdate
Update amass binary
2020-12-04 11:10:47 +05:30
Jomar 33ab7bc37d Update amass binary 2020-12-03 10:41:38 +01:00
jaykumarjpandGitHub f992592d99 Update default_settings.yaml
User facing problem when adding new scan engine, A note is available at page that " Copy configuration from https://github.com/yogeshojha/rengine/edit/master/tools/default_settings.yaml " but it is outdated which result scan failed.
2020-12-01 13:03:29 +05:30
Yogesh Ojha 7749e94db3 Oneforall fixed 2020-11-26 19:15:08 +05:30
Yogesh Ojha f3eabde76c Oneforall Added 2020-11-26 01:06:51 +05:30
Yogesh Ojha dff9778eb5 Added new definitions 2020-11-14 01:12:21 +05:30
Yogesh Ojha e2ae8d1e0d Removed shell file to get subdomains 2020-11-14 01:08:46 +05:30
RobbieandGitHub 7d8c61ccd3 Update get_dirs.sh 2020-11-13 09:28:07 +00:00