Skip to content
Closed
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@

# Templates
/*.yaml
!/.sops.yaml
!/.golangci.yaml

# Generated docs
/dsl.md
Expand Down
4 changes: 4 additions & 0 deletions .golangci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
issues:
exclude-rules:
- path: pkg/js/devtools/(bindgen/generator|scrapefuncs/main)\.go
text: "SA1019:"
4 changes: 4 additions & 0 deletions .sops.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# SOPS Creation Rules for Secret File (ref: https://docs.projectdiscovery.io/tools/nuclei/authenticated-scans)

creation_rules:
- encrypted_regex: ^(password|username|token|value|key|raw)$
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Build
FROM golang:1.21-alpine AS build-env
FROM golang:1.22-alpine AS build-env
RUN apk add build-base
WORKDIR /app
COPY . /app
Expand Down
2 changes: 1 addition & 1 deletion README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Nuclei使用零误报的定制模板向目标发送请求,同时可以对主

# 安装Nuclei

Nuclei需要 **go1.21** 才能安装成功。执行下列命令安装最新版本的Nuclei
Nuclei需要 **go1.22** 才能安装成功。执行下列命令安装最新版本的Nuclei

```sh
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
Expand Down
2 changes: 1 addition & 1 deletion README_ES.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ Tenemos un [repositorio dedicado](https://github.com/projectdiscovery/nuclei-tem

# Instalación de Nuclei

Nuclei requiere **go1.21** para instalarse correctamente. Ejecute el siguiente comando para instalar la última versión -
Nuclei requiere **go1.22** para instalarse correctamente. Ejecute el siguiente comando para instalar la última versión -

```sh
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
Expand Down
2 changes: 1 addition & 1 deletion README_ID.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Kami memiliki [repositori khusus](https://github.com/projectdiscovery/nuclei-tem

# Instalasi Nuclei

Nuclei membutuhkan **go1.21** agar dapat diinstall. Jalankan perintah berikut untuk menginstal versi terbaru -
Nuclei membutuhkan **go1.22** agar dapat diinstall. Jalankan perintah berikut untuk menginstal versi terbaru -

```sh
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
Expand Down
2 changes: 1 addition & 1 deletion README_JP.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Nucleiは、テンプレートに基づいてターゲット間でリクエス

# Nucleiのインストール

Nucleiを正常にインストールするには、**go1.21**が必要です。以下のコマンドを実行して最新バージョンをインストールしてください -
Nucleiを正常にインストールするには、**go1.22**が必要です。以下のコマンドを実行して最新バージョンをインストールしてください -

```sh
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
Expand Down
2 changes: 1 addition & 1 deletion README_KR.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Nuclei는 템플릿을 기반으로 대상 간에 요청을 보내기 위해 사

# 설치

Nuclei를 성공적으로 설치하기 위해서 **go1.21**가 필요합니다. 다음 명령을 실행하여 최신 버전을 설치합니다.
Nuclei를 성공적으로 설치하기 위해서 **go1.22**가 필요합니다. 다음 명령을 실행하여 최신 버전을 설치합니다.

```sh
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
Expand Down
158 changes: 112 additions & 46 deletions go.mod

Large diffs are not rendered by default.

350 changes: 250 additions & 100 deletions go.sum

Large diffs are not rendered by default.

29 changes: 21 additions & 8 deletions pkg/authprovider/authx/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"regexp"
"strings"

"github.com/getsops/sops/v3/decrypt"
errorutil "github.com/projectdiscovery/utils/errors"
"github.com/projectdiscovery/utils/generic"
stringsutil "github.com/projectdiscovery/utils/strings"
Expand Down Expand Up @@ -205,18 +206,30 @@ func (c *Cookie) Parse() error {

// GetAuthDataFromFile reads the auth data from file
func GetAuthDataFromFile(file string) (*Authx, error) {
ext := filepath.Ext(file)
if !generic.EqualsAny(ext, ".yml", ".yaml", ".json") {
return nil, fmt.Errorf("invalid file extension: supported extensions are .yml,.yaml and .json got %s", ext)
var data []byte

ext := strings.TrimPrefix(filepath.Ext(file), ".")
if !generic.EqualsAny(ext, "yml", "yaml", "json") {
return nil, fmt.Errorf(`unsupported extensions: valid extensions are "yml", "yaml", and "json"; got %q`, ext)
}
bin, err := os.ReadFile(file)

data, err := decrypt.File(file, ext)
if err != nil {
return nil, err
if err.Error() == "sops metadata not found" { // regular file (prolly not encrypted)
data, err = os.ReadFile(file)
if err != nil {
return nil, fmt.Errorf("could not read secret file: %w", err)
}
} else {
return nil, fmt.Errorf("could not decrypt file: %w", err)
}
}
if ext == ".yml" || ext == ".yaml" {
return GetAuthDataFromYAML(bin)

if ext == "yml" || ext == "yaml" {
return GetAuthDataFromYAML(data)
}
return GetAuthDataFromJSON(bin)

return GetAuthDataFromJSON(data)
}

// GetTemplatePathsFromSecretFile reads the template IDs from the secret file
Expand Down
36 changes: 34 additions & 2 deletions pkg/authprovider/authx/file_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,50 @@ package authx
import (
"testing"

"github.com/getsops/sops/v3/pgp"
"github.com/stretchr/testify/require"
)

func TestSecretsUnmarshal(t *testing.T) {
loc := "testData/example-auth.yaml"
data, err := GetAuthDataFromFile(loc)
data, err := GetAuthDataFromFile("testData/example-auth.yaml")
require.Nil(t, err, "could not read secrets file")
require.NotNil(t, data, "could not read secrets file")

for _, s := range data.Secrets {
require.Nil(t, s.Validate(), "could not validate secret")
}

for _, d := range data.Dynamic {
require.Nil(t, d.Validate(), "could not validate dynamic")
}

t.Run("encrypted", func(t *testing.T) {
loc := "testData/example-auth.yaml"
gnupgHome, err := pgp.NewGnuPGHome()
require.NoError(t, err)

defer func() {
err := gnupgHome.Cleanup()
require.NoError(t, err)
}()

err = gnupgHome.ImportFile("testData/private.asc")
require.NoError(t, err)

err = gnupgHome.ImportFile("testData/public.asc")
require.NoError(t, err)

decryptedData, err := GetAuthDataFromFile(loc)
require.Nil(t, err, "could not read secrets file")
require.NotNil(t, decryptedData, "could not read secrets file")
require.Equal(t, data, decryptedData, "decrypted data should match original data")

for _, s := range decryptedData.Secrets {
require.Nil(t, s.Validate(), "could not validate secret")
}

for _, d := range decryptedData.Dynamic {
require.Nil(t, d.Validate(), "could not validate dynamic")
}
})
}
89 changes: 89 additions & 0 deletions pkg/authprovider/authx/testData/example-auth.enc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
id: pd-nuclei-auth-test
info:
name: ProjectDiscovery Test Dev Servers
author: pdteam
description: |
This is a auth file for ProjectDiscovery dev servers.
It contains auth data of all projectdiscovery dev servers.
# Note: this is a dummy example file. none of the secrets here are real.
# static secrets
static:
# for header based auth session
- type: header
domains:
- api.projectdiscovery.io
- cve.projectdiscovery.io
- chaos.projectdiscovery.io
headers:
- key: ENC[AES256_GCM,data:w4et2u5QOC2a+A==,iv:RkrhnsvyxheCyBDxf+QuwCkfjflji4+V/78pHYVRp54=,tag:KS8oezRo5kiiGSH9DS3P/A==,type:str]
value: ENC[AES256_GCM,data:Xfsp/ysTMGA19Avj5KQ=,iv:idqGuAg0TiS1BCLmKFn6V6dh8KuFdkycO1rs9J0khJs=,tag:zipBSCO5IpQ3G27fAT4Hxw==,type:str]
# for query based auth session
- type: Query
domains:
- scanme.sh
params:
- key: ENC[AES256_GCM,data:e7gyzSU=,iv:2n+zAGA3+ZfSKZW6zQeqkJP61M2x2NucA4BuPM30NKA=,tag:h1yJEMXpuNLTdCQUTfPyPg==,type:str]
value: ENC[AES256_GCM,data:Q+xtw2sqcD6/dh2LLr1DB/9cO3I=,iv:AcEg/ZuNNG6iUaVx6nOVgLgy9GmM94F3RCcZOxTycvE=,tag:EvCmBDkYCvMi+++eqkDbcw==,type:str]
# for cookie based auth session
- type: Cookie
domains:
- scanme.sh
cookies:
- key: ENC[AES256_GCM,data:yc1FH70NQvSd,iv:jXqCn7QMTLPYTwPNFobLYSLdOp+GDG024RSI9DJ9CfY=,tag:+3rBAaRgSj03q53I+9+wjA==,type:str]
value: ENC[AES256_GCM,data:01Iq1e144BrHmU0cY/ZzbNKpo/Q=,iv:uwoPqkmL7oNkhOKqbZ9AUEDvcJkvqCvcSzdVeJvrrmE=,tag:9Xw7ACU6gEVUoRxe60CajA==,type:str]
# for basic auth session
- type: BasicAuth
domains:
- scanme.sh
username: ENC[AES256_GCM,data:FoJCow==,iv:xxQIa91fH2tKJw0aoWUxt8iqBeHswxjxJ8kgwtx8q5w=,tag:nkn/9DhZ8cwJXg1EPX17JQ==,type:str]
password: ENC[AES256_GCM,data:oldoEw==,iv:63lG+60DLtiwD5SSg2POnsYVb4v04/XBGYbXkxl8ImM=,tag:2NL5HCBzZ4aW5/0DVkKeqQ==,type:str]
# for authorization bearer token
- type: BearerToken
domains-regex:
- .*scanme.sh
- .*pdtm.sh
token: ENC[AES256_GCM,data:X7qf4A==,iv:UzXvYgxOJYRk+SRVqExF5qRVTmMsv4k6IBnm+nBAcK0=,tag:fe3J5vH6AuTCZY+QGZ0ntA==,type:str]
# dynamic secrets (powered by nuclei-templates)
dynamic:
- template: /path/to/wordpress-login.yaml
variables:
- name: username
value: ENC[AES256_GCM,data:WFGVf0SB,iv:/Tt247XYHPwATL19euhGrXy46tUwtQgqOh18Ikc3CVc=,tag:cAVTwY0ztL6CgwRCWtTy5Q==,type:str]
- name: password
value: ENC[AES256_GCM,data:DUA8UHq+oOQUHaU3Ww==,iv:S8GO5uznYOsHfZJh5z0ZYQnau2/Fyb9bRGXyPEet4Pw=,tag:wc8KT2ZDuUkpdtoxCKPFSQ==,type:str]
type: Cookie
domains:
- localhost:8080
cookies:
- raw: ENC[AES256_GCM,data:mJ8SkxcWptbAxEqURSIR7oQZNcA=,iv:fzn4S+GvzrA1Wf+kkUL4ulatHI0xFeeHMeTuyTAYJNM=,tag:ebbE+mIDLA4QLcWfcPudwA==,type:str]
- raw: ENC[AES256_GCM,data:H+b2Gc8GEGum60iCJJQ2vT0Y3Q==,iv:1JQl1Y6buUSmNMMpUQDvSGIeMLe8LyBqR9JHqynW7DA=,tag:hZvg5hz0PKjV1vf4UGjuYw==,type:str]
- raw: ENC[AES256_GCM,data:9i6umUdwloIrKphZN8MdxVHPL90=,iv:pDVsiPh95Ay9BZ/cURjtXfr0087LU+mKUoXtm+bFuMU=,tag:Z1v+R8ZCTolBD69GsQgQpQ==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: []
lastmodified: "2024-11-20T20:39:28Z"
mac: ENC[AES256_GCM,data:rm/izVgX2WDD2c0+1K2cLH/aX9dTOZCHrSqupsxzWNmf0IqWc+mucypJXOSwQX+0gd0IWpyCScYPWIxWAblgTNcPk6YTmVCRmCCU1JBc8kVYYp3f1hihkJmuAbRY0D2DosIEs/bNXwc6kdJjIgO2vueFtMpmafRKDaIjwdgPiz8=,iv:EPleIjkkHLgppaCDewgqwySzw9FRIlFHllh3C9Ltn1c=,tag:rqcYGavBJW+m5Qbxy6dMPg==,type:str]
pgp:
- created_at: "2024-11-20T20:39:28Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMAxla1kdz48mxAQwAlDKiY30YWv2WDKWIUQ1eteVmKsc1oppjTogUlAM13Z5u
TA/bSFGOP5Ol5bhKdQsxNBgcCXo/vRDIks9TqfEUJGBOyPseDih0jxgO2mLWAWUj
IvOd0wRhpwJlMgrPgObomHQJ1obwYfS9r4AeQuzFJKOjMpsfgOihCnbQ646Ng1zH
maGgjPu8hlrdS5mAUp77ihORb0ALfS293JRaLJi+V9yERtVh6hkM/0gxexxSjUx5
cixmk997cakhJVevjlE2tmdt93WUR8Z4TY+xFMgQf5bz9v8vJG3fpgGxoqZ3pIsW
LjMLaoTVO9gammmml15gaJdV9PolpbwSHMgFvoVv4eSADsCO1Cs1zFrFbTbmHq2L
4wUa6f9Df6jS4M4radl5mh+AQI2JCvwTia1eVduDZxTiKxXDGTwYIDDsLd8GZrf/
Vfy/bwhmNtSCFx9raavSjCURpfNSqhkQnMnrsTpIVe8bl+YQNkmJY4+ZUGFeVXYH
GzQm7AIxTsUe5dYO3T1W0lwBfxopAXTorhFy9VsMY7ZjaOUPnOrFyCLD8+WXUERU
B/ixpZ2X+0Qeax5vnAaykJKr9UNVW5oxS4mfPvQ8+AUUsjJdC3RZHOKIlHTbvT0v
aXOSeHkaNJ+TWnRBow==
=tiYG
-----END PGP MESSAGE-----
fp: C6C11FC4DA74DC979109CBD48EB7405A1F8D1930
encrypted_regex: ^(password|username|token|value|key|raw)$
version: 3.9.1
82 changes: 82 additions & 0 deletions pkg/authprovider/authx/testData/private.asc
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----

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
NEE=
=Hrxu
-----END PGP PRIVATE KEY BLOCK-----
41 changes: 41 additions & 0 deletions pkg/authprovider/authx/testData/public.asc
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
AKxzOKeH+1IX2MHOWJt8raSAe2TNWfMkBW80QQ==
=1BKJ
-----END PGP PUBLIC KEY BLOCK-----
Loading
Loading