Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(authx): SOPS integration #5841

Draft
wants to merge 8 commits into
base: dev
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all 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
dwisiswant0 marked this conversation as resolved.
Show resolved Hide resolved

```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 -
dwisiswant0 marked this conversation as resolved.
Show resolved Hide resolved

```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
156 changes: 110 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.

3 changes: 3 additions & 0 deletions lib/tests/sdk_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ var knownLeaks = []goleak.Option{
// net/http transport maintains idle connections which are closed with cooldown
// hence they don't count as leaks
goleak.IgnoreAnyFunction("net/http.(*http2ClientConn).readLoop"),
// NOTE(dwisiswant0): This is an indirect call and not used anywhere, not
// even within SOPS (#5841). See `go mod why go.opencensus.io/stats/view`.
goleak.IgnoreAnyContainingPkg("go.opencensus.io/stats/view"),
}

func TestSimpleNuclei(t *testing.T) {
Expand Down
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

dwisiswant0 marked this conversation as resolved.
Show resolved Hide resolved
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)
dwisiswant0 marked this conversation as resolved.
Show resolved Hide resolved
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)
}
dwisiswant0 marked this conversation as resolved.
Show resolved Hide resolved
}
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"
dwisiswant0 marked this conversation as resolved.
Show resolved Hide resolved
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)
dwisiswant0 marked this conversation as resolved.
Show resolved Hide resolved

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")
}
})
dwisiswant0 marked this conversation as resolved.
Show resolved Hide resolved
}
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]
dwisiswant0 marked this conversation as resolved.
Show resolved Hide resolved
# dynamic secrets (powered by nuclei-templates)
dynamic:
- template: /path/to/wordpress-login.yaml
dwisiswant0 marked this conversation as resolved.
Show resolved Hide resolved
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
dwisiswant0 marked this conversation as resolved.
Show resolved Hide resolved
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
dwisiswant0 marked this conversation as resolved.
Show resolved Hide resolved
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-----
dwisiswant0 marked this conversation as resolved.
Show resolved Hide resolved
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