6344 Commits

Author SHA1 Message Date
Mzack9999 f480e863c1 Merge pull request #7254 from Gengyscan/feat/pdf-export
feat(reporting): add PDF export option for scan results
2026-03-20 00:09:49 +01:00
Mzack9999 c56fe37743 ci: integrate typos spell checker into CI workflow (#6532)
ci: integrate typos spell checker into CI workflow
2026-03-19 19:17:38 +01:00
Mzack9999 06c228d38a ignoring alias 2026-03-19 18:23:42 +01:00
Mzack9999 032fc8d9b2 Merge pull request #7215 from sandiyochristan/fix/use-crypto-rand-in-js-globals
fix: use crypto/rand instead of math/rand in JS global functions
2026-03-17 22:29:21 +01:00
Mzack9999 3ec23a9505 Merge pull request #7045 from projectdiscovery/dwisiswant0/fix/utils/normalize-unbracketed-IPv6-literals-for-probing
fix(utils): normalize unbracketed IPv6 literals for probing
2026-03-17 21:11:17 +01:00
Mzack9999 2e5ed57bf9 Merge pull request #7119 from projectdiscovery/dwisiswant0/ci/add-GITHUB-TOKEN-to-workflows-for-auth-d-template-updates
ci: add GITHUB_TOKEN to workflows for auth'd template updates
2026-03-17 21:06:56 +01:00
Gengyscan baddf6aeb7 fix: address CodeRabbit review findings
- Update -omit-raw help text to include PDF in scope
- Move require.NoError out of goroutine in concurrency test (FailNow semantics)
- Truncate raw request/response at buffer time in Export() to prevent memory accumulation
2026-03-17 17:50:28 +01:00
Gengyscan 42b7a11f2c feat(reporting): add PDF export option for scan results 2026-03-17 14:58:40 +01:00
Mzack9999 34977389f9 Merge pull request #6760 from JawsKim/fix/issue-5579-large-exclusion-hang
fix(input): optimize removeTargets to prevent hang on large exclusions
2026-03-16 18:16:03 +01:00
Mzack9999 95258ec315 refactor cidr contain logic 2026-03-16 17:29:56 +01:00
Mzack9999 2dad77adaf fix lint 2026-03-16 16:27:00 +01:00
Mzack9999 31f53a87f5 Merge branch 'dev' into pr/6760 2026-03-16 16:12:34 +01:00
Dwi Siswanto d221732016 fix(expressions): only eval template-authored expressions (#7221)
* fix(expressions): only eval template-authored expressions

`expressions.Evaluate()` currently replaces
placeholders first and then scans the substituted
output for expressions which allows
response-derived values, including extractor
output, to be reinterpreted as DSL/helper syntax
on a second pass, which then becomes more serious
when env-backed variables are enabled.

So making this by collecting expressions from the
original template text before placeholder
substitution and then evaluating only those
original expressions after normal replacement to
keep trusted template-authored helpers working,
including placeholders nested inside helper
arguments while treating substituted response data
as literal text.

Fixes #7210

Signed-off-by: Dwi Siswanto <git@dw1.io>

* test: add resp data literal reuse test

Signed-off-by: Dwi Siswanto <git@dw1.io>

---------

Signed-off-by: Dwi Siswanto <git@dw1.io>
2026-03-16 18:25:36 +07:00
dependabot[bot] b0998529c6 chore(deps): bump the modules group across 1 directory with 4 updates (#7236)
Bumps the modules group with 2 updates in the / directory: [github.com/projectdiscovery/interactsh](https://github.com/projectdiscovery/interactsh) and [github.com/projectdiscovery/httpx](https://github.com/projectdiscovery/httpx).


Updates `github.com/projectdiscovery/interactsh` from 1.3.0 to 1.3.1
- [Release notes](https://github.com/projectdiscovery/interactsh/releases)
- [Commits](https://github.com/projectdiscovery/interactsh/compare/v1.3.0...v1.3.1)

Updates `github.com/projectdiscovery/httpx` from 1.8.1 to 1.9.0
- [Release notes](https://github.com/projectdiscovery/httpx/releases)
- [Commits](https://github.com/projectdiscovery/httpx/compare/v1.8.1...v1.9.0)

Updates `github.com/projectdiscovery/wappalyzergo` from 0.2.70 to 0.2.71
- [Release notes](https://github.com/projectdiscovery/wappalyzergo/releases)
- [Commits](https://github.com/projectdiscovery/wappalyzergo/compare/v0.2.70...v0.2.71)

Updates `github.com/projectdiscovery/cdncheck` from 1.2.25 to 1.2.26
- [Release notes](https://github.com/projectdiscovery/cdncheck/releases)
- [Commits](https://github.com/projectdiscovery/cdncheck/compare/v1.2.25...v1.2.26)

---
updated-dependencies:
- dependency-name: github.com/projectdiscovery/interactsh
  dependency-version: 1.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/httpx
  dependency-version: 1.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/wappalyzergo
  dependency-version: 0.2.71
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: modules
- dependency-name: github.com/projectdiscovery/cdncheck
  dependency-version: 1.2.26
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: modules
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-16 06:18:52 +00:00
Dogan Can Bakir bc37a26d10 Merge pull request #7043 from projectdiscovery/dwisiswant0/fix/http/isolate-project-cache-keys-by-scheme-host
fix(http): isolate project cache keys by scheme & host
2026-03-16 03:35:03 +03:00
sandiyochristan 44ef9ce34f fix: use crypto/rand instead of math/rand in JS global functions
Replace insecure math/rand PRNG with crypto/rand in Rand() and
RandInt() JavaScript helper functions. math/rand is predictable
and unsuitable when these functions are used for generating
security-sensitive values like tokens or nonces in templates.
2026-03-15 02:18:42 +05:30
XiKi-Home e38953da4a fix: address CodeRabbit review feedback 2026-03-11 00:29:12 +01:00
Dogan Can Bakir 979c867301 Merge pull request #7033 from projectdiscovery/fix/encoding-hides-unresolved-vars
fix(expressions): propagate unresolved variable markers through encoding functions
2026-03-10 00:46:58 +03:00
ZachL111 ef4bb2273d fix(fuzz): fix URI detection, duplicate type attr, and missing urlAttrs 2026-03-09 08:21:57 -07:00
ZachL111 2b3cb3e74d fix(fuzz): fix godoc comments on package-level vars 2026-03-09 07:58:25 -07:00
ZachL111 a22ead4acb fix(fuzz): add missing event handlers and strip MIME params from script type 2026-03-09 07:42:36 -07:00
ZachL111 0d5dc6d8d9 fix(fuzz): fix error propagation and remove dead code in XSS analyzer 2026-03-09 07:28:05 -07:00
ZachL111 049b4f2a84 fix(fuzz): address edge cases in XSS context analyzer 2026-03-09 06:56:02 -07:00
ZachL111 0d4c4cb6de feat(fuzz): add XSS reflection context analyzer
Implements context-aware XSS reflection analysis for the nuclei fuzzing
engine, addressing issue #5838. Uses golang.org/x/net/html tokenizer
for robust context detection across 8 injection contexts including
javascript: URIs, non-executable script blocks, srcdoc attributes,
event handlers, style blocks, and HTML comments.

All 48 tests pass with comprehensive table-driven coverage including
malformed HTML, empty inputs, and case-insensitive matching.
Zero modifications to existing files.
2026-03-09 06:18:16 -07:00
dependabot[bot] 6b4a9c4b06 chore(deps): bump docker/login-action from 3 to 4 in the workflows group (#7160)
Bumps the workflows group with 1 update: [docker/login-action](https://github.com/docker/login-action).


Updates `docker/login-action` from 3 to 4
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: workflows
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 06:11:04 +00:00
leo 31ba00cc44 fix: add backward-compatible deprecated alias for ExludedDastTmplStats
Retain the old exported identifier as a deprecated alias pointing to
the corrected ExcludedDastTmplStats so external consumers are not broken
by the rename.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 22:56:27 -04:00
leo 63e5492ce3 ci: integrate typos spell checker into CI workflow
Add the crate-ci/typos GitHub Action to automatically catch spelling
errors in future PRs. This includes:

- New `.github/workflows/typos.yaml` workflow that runs on pushes to
  dev, pull requests, and manual dispatch
- `_typos.toml` configuration to suppress false positives from
  non-English READMEs, test fixtures, certificate data, CLI flag
  short names, and intentional identifiers
- Fix genuine typos found by the tool:
  - `PostReuestsHandlerRequest` -> `PostRequestsHandlerRequest`
  - `fiter` -> `filter`
  - `thant` -> `that`
  - `seperate` -> `separate`
  - `ExludedDastTmplStats` -> `ExcludedDastTmplStats`
  - `splitted` -> `split` (local variables)
  - `formated` -> `formatted` (local variables)
  - Rename `worflow_loader.go` -> `workflow_loader.go`

Fixes #6532
2026-03-08 22:11:26 -04:00
Mzack9999 b5cb4ccb6c Merge pull request #7026 from n3integration/fix/executor-concurrency-improvement
fix: add Snapshot method to prevent InFlight map race condition
2026-03-08 00:21:48 +01:00
Mzack9999 da97a745d8 Merge pull request #7020 from Pitrat-wav/fix-docs-links-proper
docs: update outdated documentation links in all translations
2026-03-07 23:53:09 +01:00
Mzack9999 1fe5647973 Merge pull request #7129 from usernametooshort/fix/host-spray-skip-unresponsive-early
fix(core): stop spawning template goroutines in host-spray once host is unresponsive
2026-03-07 23:23:41 +01:00
Mzack9999 29561766a8 fixing further race condition 2026-03-07 23:19:46 +01:00
Mzack9999 c40fec06ae use per field lock 2026-03-07 23:12:04 +01:00
Mzack9999 20a565fd9e Merge pull request #7042 from projectdiscovery/dwisiswant0/refactor/types/make-resume-state-as-cache-data
refactor(types)!: make resume state as cache data
2026-03-07 22:57:05 +01:00
Mzack9999 824668036a Merge pull request #7044 from projectdiscovery/dwisiswant0/feat/http/respect-raw-annotations-in-unsafe-mode
feat(http): respect `annotations` in `unsafe` mode
2026-03-07 22:54:45 +01:00
Mzack9999 f9b21a7ca3 Merge pull request #7145 from projectdiscovery/dwisiswant0/fix/runner/use-Print-instead-to-listAvailableStoreTags
fix(runner): use Print instead to listAvailableStoreTags
2026-03-07 22:51:18 +01:00
Mzack9999 61dd5d2802 adding skip event 2026-03-07 22:16:03 +01:00
Dwi Siswanto 18b4981ca7 perf(runner): using a fastpath for tag listing (#7143)
Uses metadata caching via catalog index to reduce
runtime overhead.

Add `(*Store).LoadTemplateTags` for efficient tag
aggregation.

Signed-off-by: Dwi Siswanto <git@dw1.io>
2026-03-07 13:14:24 +07:00
Dwi Siswanto b53ec96e99 fix(runner): use Print instead to listAvailableStoreTags
Tag listing (`-tgl`) output was moved to debug log
level, making it invisible during normal runs.
Restore tag output to default log level (Print)
for better usability.

Fixes #7142

Signed-off-by: Dwi Siswanto <git@dw1.io>
2026-03-07 12:40:52 +07:00
usernametooshort 5dd94cb9b9 fix(core): skip remaining templates in host-spray when host is unresponsive
In host-spray mode (executeTemplatesOnTarget), the goroutine-spawn loop
iterated over ALL templates for a target even after HostErrorsCache had
marked that target as permanently unresponsive.  Each spawned goroutine
immediately detected the unresponsive state and wrote a 'skipped' event
to the output before returning.

Without JSON output the skip events are cheap (no I/O), so the scan
still finishes quickly.  With -j or -je enabled, each skip event
triggers a synchronous JSON write; for a full template set (~18k
templates) this serialises thousands of writes and keeps the process
running for hours instead of the expected few minutes (issue #7049).

Fix: check HostErrorsCache at the top of the template-spawn loop and
break out as soon as the target is known to be permanently unresponsive.
This mirrors the identical guard already present in the template-spray
path (executeTemplateWithTargets, line 153) and avoids spawning
O(templates) no-op goroutines for dead hosts.

Fixes #7049
2026-03-05 22:13:10 +01:00
usernametooshort 2d8e4031cc fix(time-delay): propagate custom headers to follow-up delay requests
The time_delay analyzer's reqSender rebuilt follow-up requests from
gr.Component.Rebuild() which clones the component's base request.  That
base request is parsed from rule.BaseRequest *before* post-parse header
injection happens (custom -H flags, auth provider headers, cookies).
As a result every follow-up request was sent without the headers that the
original triggering request carried, including Cookie/Authorization —
the server rejected them or ran the SQL in an unauthenticated context.

Fix: after Rebuild(), copy the complete header set from gr.Request (the
original fuzz-generated request, which has all headers) into the rebuilt
request.  This mirrors the same approach used everywhere else in the
request pipeline and makes the time_delay analyzer behave consistently.

Fixes #7106
2026-03-05 19:40:13 +01:00
Mzack9999 870ad4607d Merge branch 'dev' into fix/encoding-hides-unresolved-vars 2026-03-05 14:33:42 +01:00
Dwi Siswanto 2f315237d5 ci: add GITHUB_TOKEN to workflows for auth'd template updates
* Updated `.github/workflows/tests.yaml`:
  * Added `GITHUB_TOKEN` to `validate` job to
    support `make template-validate`.
* Updated `.github/workflows/flamegraph.yaml`:
  * Added `GITHUB_TOKEN` to `flamegraph` job for
    `nuclei -update-templates`.
* Updated `.github/workflows/generate-pgo.yaml`:
  * Added `GITHUB_TOKEN` to `pgo` job for
    `nuclei -update-templates`.

This make sure auth'd GitHub API calls during
template updates, avoiding rate limit issues.

Signed-off-by: Dwi Siswanto <git@dw1.io>
2026-03-05 13:39:48 +07:00
Dwi Siswanto a2e49abfab feat(http): respect annotations in unsafe mode
Apply request annotations during `unsafe` raw
request generation so @Host/@timeout/etc affect
the effective target and execution context.

Strip leading annotation directives from `unsafe`
wire bytes before sending, since `rawhttp`
transmits raw payload verbatim and annotation
lines can produce malformed HTTP requests.

Close #6747

Signed-off-by: Dwi Siswanto <git@dw1.io>
2026-03-05 13:20:07 +07:00
Dwi Siswanto 50996a7481 fix(http): isolate project cache keys by scheme & host
Prev. project keyed cache lookups from dumped HTTP
request bytes alone. For eq requests, this allowed
"http" and "https" targets to collide and reuse
cached responses across schemes.

Derive a scoped cache key by prefixing normalized
scheme://host before `projectfile.{Get,Set}`
keying input in the HTTP protocol path.

Close #6866

Signed-off-by: Dwi Siswanto <git@dw1.io>
2026-03-05 13:15:17 +07:00
Dwi Siswanto b84480ae18 fix(utils): normalize unbracketed IPv6 literals for probing
Fix ambiguous interpretation of IPv6 addresses
like "::1:8065" by bracketing them before URL
formation to make sure they are treated as hosts
rather than "host:port" pairs.

Close #6960

Signed-off-by: Dwi Siswanto <git@dw1.io>
2026-03-05 12:50:52 +07:00
Dwi Siswanto c159e62681 refactor(types)!: make resume state as cache data
Resume files are runtime artifacts and SHOULD NOT
be presented as persistent config.

Update reset messaging to separate config vs cache
and explicitly include resume state under cache
cleanup. Also delete the cache dir during `-reset`
to keep behavior aligned with the new semantics.

Close #6792

Signed-off-by: Dwi Siswanto <git@dw1.io>
2026-03-05 12:49:11 +07:00
dependabot[bot] 884d0b5bed chore(deps): bump github.com/docker/cli (#7116)
Bumps the go_modules group with 1 update in the / directory: [github.com/docker/cli](https://github.com/docker/cli).


Updates `github.com/docker/cli` from 27.4.1+incompatible to 29.2.0+incompatible
- [Commits](https://github.com/docker/cli/compare/v27.4.1...v29.2.0)

---
updated-dependencies:
- dependency-name: github.com/docker/cli
  dependency-version: 29.2.0+incompatible
  dependency-type: indirect
  dependency-group: go_modules
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-05 03:59:50 +00:00
Richard Brown 51205f8470 fix(clustering): updated cluster failure handling (#6843)
* fix(clustering): updated cluster failure handling and mock output

* fix(interactsh): updated callbacks for interactsh

* fix(callbacks): reverted callbacks an just fixed clustered output
2026-03-05 01:55:38 +05:30
Dogan Can Bakir 70ac8bf72b Merge pull request #7018 from projectdiscovery/dwisiswant0/chore/go-fix
chore: `golangci-lint run --fix ./...`
2026-03-04 16:39:33 +03:00
Dogan Can Bakir bde0272084 Merge pull request #6825 from bimakw/fix/replace-panic-with-error-handling
fix(loader): replace panic with error handling in template loader
2026-03-04 16:37:13 +03:00