diff --git a/.github/.yamllint.yml b/.github/.yamllint.yml
new file mode 100644
index 0000000..e66ccad
--- /dev/null
+++ b/.github/.yamllint.yml
@@ -0,0 +1,2 @@
+rules:
+ line-length: disable
\ No newline at end of file
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
deleted file mode 100644
index b018957..0000000
--- a/.github/workflows/build.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-on: push
-name: Build ChopChop
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - name: Install Go
- uses: actions/setup-go@v2
- with:
- go-version: 1.14.x
- - name: Checkout code
- uses: actions/checkout@v2
- - name: Unit Tests
- run: go test ./...
- - name: Install gox
- run: go get github.com/mitchellh/gox
- - name: Build using gox
- run: gox -ldflags "-X main.Version=$BUILD_VERSION -X main.BuildDate=$BUILD_DATE" -output "dist/ChopChop_{{.OS}}_{{.Arch}}"
- - name: Upload ChopChop builds
- uses: actions/upload-artifact@v2
- with:
- name: chopchop-artifacts
- path: dist/*
- - name: Release
- uses: fnkr/github-action-ghr@v1
- if: startsWith(github.ref, 'refs/tags/')
- env:
- GHR_COMPRESS: gz
- GHR_PATH: dist/
- GITHUB_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..ce5beb3
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,161 @@
+name: CI
+
+on: [push, pull_request]
+
+jobs:
+ setup:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Cancel previous
+ uses: styfle/cancel-workflow-action@0.8.0
+ with:
+ access_token: ${{ github.token }}
+
+ unit-tests:
+ strategy:
+ matrix:
+ go-version: [1.x, 1.16.x]
+ platform: [ubuntu-latest, macos-latest, windows-latest]
+ include:
+ - go-version: 1.x
+ platform: ubuntu-latest
+ update-coverage: true
+ runs-on: ${{ matrix.platform }}
+ needs: [setup]
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Setup Go
+ uses: actions/setup-go@v2
+ with:
+ go-version: ${{ matrix.go-version }}
+
+ - name: Cache go modules
+ uses: actions/cache@v2
+ with:
+ path: ~/go/pkg/mod
+ key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
+ restore-keys: ${{ runner.os }}-go-
+
+ - name: Run go fmt
+ if: runner.os != 'Windows'
+ run: diff -u <(echo -n) <(gofmt -d -s .)
+
+ - name: Ensure go generate produces a zero diff
+ shell: bash
+ run: go generate -x ./... && git diff --exit-code; code=$?; git checkout -- .; (exit $code)
+
+ - name: Run go vet
+ run: go vet ./...
+
+ - name: Run go test
+ run: go test -v -race -coverprofile coverage.txt ./...
+
+ - name: Upload coverage to Codecov
+ if: ${{ matrix.update-coverage }}
+ uses: codecov/codecov-action@v1
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+
+ chopchop-endpoint:
+ runs-on: ubuntu-latest
+ needs: [setup]
+ steps:
+ - uses: actions/checkout@v1
+ - run: |
+ cat chopchop.yml | grep "uri:" | sort | uniq -c | sort -n
+ test=`cat chopchop.yml | grep "endpoint:" | sort | uniq -c | grep -v 1 | wc -l`
+ if [ $test != 0 ]; then echo "There shouldn't be multiple (and identical) 'endpoint'. It should be refactored. "; exit 1; fi
+
+ go-lint:
+ runs-on: ubuntu-latest
+ needs: [setup]
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-go@v2
+ with:
+ go-version: 1.16.x
+
+ - name: go-lint
+ run: |
+ curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.39.0
+ golangci-lint run
+
+ yaml-lint:
+ runs-on: ubuntu-latest
+ needs: [setup]
+ steps:
+ - uses: actions/checkout@v2
+ - name: yaml-lint
+ uses: ibiqlik/action-yamllint@v3
+ with:
+ file_or_dir: chopchop.yml
+ config_file: .github/.yamllint.yml
+
+ functional-tests:
+ runs-on: ubuntu-latest
+ needs: [unit-tests, chopchop-endpoint, go-lint, yaml-lint]
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-go@v2
+ with:
+ go-version: 1.16.x
+
+ - name: Install RobotFramework
+ run: pip install robotframework
+
+ - name: Run RobotFramework tests
+ run: |
+ cd robot
+ ./run.sh
+
+ - name: Upload Robot outputs
+ uses: actions/upload-artifact@v2
+ with:
+ name: robot-output
+ path: robot/out/*
+
+ build-and-publish:
+ runs-on: ubuntu-latest
+ needs: [functional-tests]
+ if: ${{ github.event_name == 'push' }}
+ steps:
+ - name: Install Go
+ uses: actions/setup-go@v2
+ with:
+ go-version: 1.16.x
+
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Cache go modules
+ uses: actions/cache@v2
+ with:
+ path: ~/go/pkg/mod
+ key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
+ restore-keys: ${{ runner.os }}-go-
+
+ - name: Install gox
+ run: go get github.com/mitchellh/gox
+
+ - name: Build using gox
+ run: |
+ cd cmd
+ gox -ldflags "-X main.Version=$BUILD_VERSION -X main.BuildDate=$BUILD_DATE" \
+ -output "../artifacts/ChopChop_{{.OS}}_{{.Arch}}" \
+ -osarch="!darwin/386"
+
+ - name: Upload ChopChop builds
+ uses: actions/upload-artifact@v2
+ with:
+ name: chopchop-artifacts
+ path: artifacts/*
+
+ - name: Release
+ uses: fnkr/github-action-ghr@v1
+ if: startsWith(github.ref, 'refs/tags/')
+ env:
+ GHR_COMPRESS: gz
+ GHR_PATH: artifacts/
+ GITHUB_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml
index fe50703..d663b4b 100644
--- a/.github/workflows/docker-publish.yml
+++ b/.github/workflows/docker-publish.yml
@@ -10,53 +10,23 @@ on:
tags:
- v*
- # Run tests for any PRs.
- pull_request:
-
env:
IMAGE_NAME: gochopchop
jobs:
- # Run tests.
- # See also https://docs.docker.com/docker-hub/builds/automated-testing/
- test:
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v2
-
- - name: Run tests
- run: |
- if [ -f docker-compose.test.yml ]; then
- docker-compose --file docker-compose.test.yml build
- docker-compose --file docker-compose.test.yml run sut
- else
- docker build . --file Dockerfile
- fi
-
# Push image to GitHub Packages.
# See also https://docs.docker.com/docker-hub/builds/
push:
- # Ensure test job passes before pushing image.
- needs: test
-
runs-on: ubuntu-latest
- if: github.event_name == 'push'
-
steps:
- - name: Install Go
- uses: actions/setup-go@v2
- with:
- go-version: 1.14.x
+ - name: Log into GitHub Container Registry
+ # The CR_PAT secret is a PAT with `read:packages` and `write:packages` scopes
+ run: echo "${{ secrets.CR_PAT }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
+
- uses: actions/checkout@v2
- - name: Unit Tests
- run: go test ./...
- - name: Build image
- run: docker build . --file Dockerfile --tag $IMAGE_NAME
- - name: Log into GitHub Container Registry
- # TODO: Create a PAT with `read:packages` and `write:packages` scopes and save it as an Actions secret `CR_PAT`
- run: echo "${{ secrets.CR_PAT }}" | docker login https://ghcr.io -u ${{ github.actor }} --password-stdin
+ - name: Build image
+ run: docker build -t $IMAGE_NAME .
- name: Push image to GitHub Container Registry
run: |
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
deleted file mode 100644
index 59f77fd..0000000
--- a/.github/workflows/lint.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-name: ChopChop YAML configuration Linter
-
-on: [push]
-
-jobs:
- lintAllTheThings:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v1
- - name: yaml-lint
- uses: ibiqlik/action-yamllint@v1
- with:
- file_or_dir: chopchop.yml
- config_file: .yamllint.yml
- lint:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v1
- - run: |
- cat chopchop.yml | grep "uri:" | sort | uniq -c | sort -n
- test=`cat chopchop.yml | grep "endpoint:" | sort | uniq -c | grep -v 1 | wc -l`
- if [ $test != 0 ]; then echo "There shouldn't be multiple (and identical) 'endpoint'. It should be refactored. "; exit 1; fi
diff --git a/.gitignore b/.gitignore
index da21c80..67d71c3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,132 +1,7 @@
+# IDE
+/.idea/**
+/.vscode/**
-# Created by https://www.toptal.com/developers/gitignore/api/go,jetbrains
-# Edit at https://www.toptal.com/developers/gitignore?templates=go,jetbrains
-
-### Go ###
-# Binaries for programs and plugins
-*.exe
-*.exe~
-*.dll
-*.so
-*.dylib
-
-# Test binary, built with `go test -c`
-*.test
-*.txt
-*.json
-*.csv
-
-# Output of the go coverage tool, specifically when used with LiteIDE
-*.out
-
-# Dependency directories (remove the comment below to include it)
-# vendor/
-
-### Go Patch ###
-/vendor/
-/Godeps/
-
-### JetBrains ###
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-# .idea/artifacts
-# .idea/compiler.xml
-# .idea/jarRepositories.xml
-# .idea/modules.xml
-# .idea/*.iml
-# .idea/modules
-# *.iml
-# *.ipr
-
-# CMake
-cmake-build-*/
-
-# Mongo Explorer plugin
-.idea/**/mongoSettings.xml
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-# mpeltonen/sbt-idea plugin
-.idea_modules/
-
-# JIRA plugin
-atlassian-ide-plugin.xml
-
-# Cursive Clojure plugin
-.idea/replstate.xml
-
-# Crashlytics plugin (for Android Studio and IntelliJ)
-com_crashlytics_export_strings.xml
-crashlytics.properties
-crashlytics-build.properties
-fabric.properties
-
-# Editor-based Rest Client
-.idea/httpRequests
-
-# Android studio 3.1+ serialized cache file
-.idea/caches/build_file_checksums.ser
-
-### JetBrains Patch ###
-# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
-
-# *.iml
-# modules.xml
-# .idea/misc.xml
-# *.ipr
-
-# Sonarlint plugin
-# https://plugins.jetbrains.com/plugin/7973-sonarlint
-.idea/**/sonarlint/
-
-# SonarQube Plugin
-# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
-.idea/**/sonarIssues.xml
-
-# Markdown Navigator plugin
-# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
-.idea/**/markdown-navigator.xml
-.idea/**/markdown-navigator-enh.xml
-.idea/**/markdown-navigator/
-
-# Cache file creation bug
-# See https://youtrack.jetbrains.com/issue/JBR-2257
-.idea/$CACHE_FILE$
-
-# CodeStream plugin
-# https://plugins.jetbrains.com/plugin/12206-codestream
-.idea/codestream.xml
-
-# End of https://www.toptal.com/developers/gitignore/api/go,jetbrains
+# RobotFramework
+**/__pycache__/**
+/robot/out/**
\ No newline at end of file
diff --git a/.yamllint.yml b/.yamllint.yml
deleted file mode 100644
index 52e823b..0000000
--- a/.yamllint.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
- rules:
- line-length: disable
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index bc3f9de..4702ec3 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,16 +1,16 @@
-FROM golang:1.13 AS build
-RUN mkdir /app
-ADD . /app/
-WORKDIR /app
+# Build stage
+FROM golang:1.16 AS builder
+WORKDIR /go/src
COPY go.mod go.sum ./
RUN go mod download
-COPY chopchop.yml ./
-RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build .
-CMD ["/app/gochopchop"]
+COPY . .
+ENV GOOS=linux
+ENV GOARCH=amd64
+ENV CGO_ENABLED=0
+RUN go build -o /go/bin/gochopchop cmd/main.go
+# Prod stage
FROM alpine:3.8
-RUN mkdir -p /tmp
-COPY --from=build /app/gochopchop /tmp/gochopchop
-COPY --from=build /app/chopchop.yml /tmp/chopchop.yml
-WORKDIR /tmp
-ENTRYPOINT ["/tmp/gochopchop"]
\ No newline at end of file
+COPY --from=builder /go/bin/gochopchop /bin/gochopchop
+COPY chopchop.yml /etc/chopchop.yml
+ENTRYPOINT [ "/bin/gochopchop" ]
diff --git a/README.md b/README.md
index b9e6650..8d1f585 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,6 @@
-
+
+
+
[](https://github.com/michelin/ChopChop/actions)
[](https://opensource.org/licenses/Apache-2.0)
@@ -11,7 +13,9 @@
Its goal is to scan several endpoints and identify exposition of services/files/folders through the webroot.
Checks/Signatures are declared in a config file (by default: `chopchop.yml`), fully configurable, and especially by developers.
-
+
+
+
> "Chop chop" is a phrase rooted in Cantonese. "Chop chop" means "hurry" and suggests that something should be done now and **without delay**.
@@ -33,10 +37,8 @@ Checks/Signatures are declared in a config file (by default: `chopchop.yml`), fu
We tried to make the build process painless and hopefully, it should be as easy as:
-
```bash
-$ go mod download
-$ go build .
+go build -o gochopchop cmd/main.go
```
There should be a resulting `gochopchop` binary in the folder.
@@ -46,7 +48,7 @@ There should be a resulting `gochopchop` binary in the folder.
Thanks to [Github Container Registry](https://github.blog/2020-09-01-introducing-github-container-registry/), we are able to provide you some freshly-build Docker images!
```
-docker run ghcr.io/michelin/gochopchop scan https://foobar.com -v debug
+docker run ghcr.io/michelin/gochopchop scan -v debug https://example.com
```
But if you prefer, you can also build it locally, see below:
@@ -59,62 +61,83 @@ docker build -t gochopchop .
## Usage
-We are continuously trying to make `goChopChop` as easy as possible. Scanning a host with this utility is as simple as :
+We are continuously trying to make `gochopchop` as easy as possible. Scanning a host with this utility is as simple as:
```bash
-$ ./gochopchop scan https://foobar.com
+./gochopchop scan https://example.com
```
+Notice you can specify multiple URLs.
+
### Using Docker
```bash
-docker run gochopchop scan https://foobar.com
+docker run gochopchop scan https://example.com
+```
+
+Notice by default the Docker image has the configuration file at
+`/etc/chopchop.yml`, so you may add `-c /etc/chopchop.yml` to your
+command. If so, run the following command.
+
+```bash
+docker run gochopchop scan -c /etc/chopchop.yml https://example.com
```
#### Custom configuration file
+Of course you can use your own configuration files, using the following.
+
```bash
-docker run -v ./:/app chopchop scan -c /app/chopchop.yml https://foobar.com
+docker run -v $(pwd):/app gochopchop scan -c /app/chopchop.yml https://example.com
```
## What's next
The Golang rewrite took place a couple of months ago but there's so much to do, still. Here are some features we are planning to integrate :
-[x] Threading for better performance
-[x] Ability to specify the number of concurrent threads
-[x] Colors and better formatting
-[x] Ability to filter checks/signatures to search for
-[x] Mock and unit tests
-[x] Github CI
-And much more!
+ - [ ] Improve logging
+ - [ ] HTTP & SOCKS5 proxies
+ - [ ] Plugin method (GET, POST, ...)
+ - [ ] Plugin Cookie
+ - [ ] Improve caching (Docker build & CI)
+ - [ ] Implement a request gateway to avoid brute-forcing websites
+ - [ ] Re-implement `query_string` for the HTTP GET method
+ - [ ] Improve "severity reached" cases (currently ChopChop crashes if matches a plugin)
+ - [ ] Fix default status_code (200 if not specified)
## Testing
-To quickly end-to-end test chopchop, we provided a web-server in `tests/server.go`.
-To try it, please run `go run tests/server.go` then run chopchop with the following command `./gochopchop scan http://localhost:8000 --verbosity Debug`.
-ChopChop should print "no vulnerabilities found".
+### Unit tests
+
+Unit tests are achieved using Go-tests. You can run them using the following.
+
+```bash
+go test ./... -cover
+```
+
+To visualize the code coverage, for developement purposes, you can also run.
+
+```bash
+go test ./... -coverprofile=cov.out -count=1 && go tool cover -html=cov.out && rm cov.out
+```
+
+### Acceptance tests
-There are also unit test that you can launch with `go test -v ./...`.
-These tests are integrated in the github CI workflow.
+For acceptance tests, those are achieved using RobotFramework. Notice you can
+build ChopChop using another language and validate the CLI using those tests.
+Run them using the following.
+
+```bash
+cd robot
+./run.sh
+```
## Available flags
-You can find the available flags available for the `scan` command :
-
-| Flag | Full flag | Description |
-|---|---|---|
-| `-h` | `--help` | Help wizard |
-| `-v` | `--verbosity` | Verbose level of logging |
-| `-c` | `--signature` | Path of custom signature file |
-| `-k` | `--insecure` | Disable SSL Verification |
-| `-u` | `--url-file` | Path to a specified file containing urls to test |
-| `-b` | `--max-severity` | Block the CI pipeline if severity is over or equal specified flag |
-| `-e` | `--export` | Export type of the output (csv and/or json) |
-|| `--export-filename` | Specify the filename for the export file(s) |
-| `-t` | `--timeout` | Timeout for the HTTP requests |
-|| `--severity-filter` | Filter Plugins by severity |
-|| `--plugin-filter` | Filter Plugins by name of plugin |
-|| `--threads` | Number of concurrent threads |
+You can find the available flags and doc for each command using `gochopchop [cmd] -h`.
+
+Available commands are:
+ - `scan` to scan for endpoints ;
+ - `plugins` to parse and check the configuration file.
## Advanced usage
@@ -124,61 +147,49 @@ Note: Redirectors like `>` for post processing can be used.
- Ability to scan and disable SSL verification
```bash
-$ ./gochopchop scan https://foobar.com --insecure
+./gochopchop scan --insecure https://foobar.com
```
- Ability to scan with a custom configuration file (including custom plugins)
```bash
-$ ./gochopchop scan https://foobar.com --insecure --signature test_config.yml
+./gochopchop scan --insecure --signature test_config.yml https://foobar.com
```
-- Ability to list all the plugins or by severity : `plugins` or ` plugins --severity High`
+- Ability to specify number of concurrent threads (in Go those are goroutines): `--threads 4` for 4 workers
```bash
-$ ./gochopchop plugins --severity High
+./gochopchop scan --threads 4 https://foobar.com
```
-- Ability to specify number of concurrent threads : `--threads 4` for 4 workers
+- Ability to specify specific signatures to be checked, with a debug log level
```bash
-$ ./gochopchop plugins --threads 4
+./gochopchop scan --timeout=1 --verbosity=debug --export=csv --export=json --export-filename=boo --plugin-filters=Git,Zimbra,Jenkins https://foobar.com
```
-- Ability to block the CI pipeline by severity level (equal or over specified severity) : `--max-severity Medium`
+- Set a list or URLs located in a file
```bash
-$ ./gochopchop scan https://foobar.com --max-severity Medium
+./gochopchop scan --url-file url_file.txt
```
-- Ability to specify specific signatures to be checked
+- Export GoChopChop results in CSV and JSON format
```bash
-./gochopchop scan https://foobar.com --timeout 1 --verbosity --export=csv,json --export-filename boo --plugin-filters=Git,Zimbra,Jenkins
+./gochopchop scan https://foobar.com --export csv --export json --export-filename results
```
- Ability to list all the plugins
```bash
-$ ./gochopchop plugins
-```
-
-- List High severity plugins
-
-```bash
-$ ./gochopchop plugins --severity High
-```
-
-- Set a list or URLs located in a file
-
-```bash
-$ ./gochopchop scan --url-file url_file.txt
+./gochopchop plugins
```
-- Export GoChopChop results in CSV and JSON format
+- Ability to list all the plugins or by severity : `plugins` or `plugins --severity High`
```bash
-$ ./gochopchop scan https://foobar.com --export=csv,json --export-filename results
+./gochopchop plugins --severity High
```
## Creating a new check
@@ -186,17 +197,20 @@ $ ./gochopchop scan https://foobar.com --export=csv,json --export-filename resu
Writing a new check is as simple as :
```yaml
- - endpoint: "/.git/config"
+ - endpoints:
+ - "/.git/config"
checks:
- name: Git exposed
match:
- "[branch"
remediation: Do not deploy .git folder on production servers
description: Verifies that the GIT repository is accessible from the site
- severity: "High"
+ severity: High
```
-An endpoint (eg. ```/.git/config```) is mapped to multiple checks which avoids sending X requests for X checks. Multiple checks can be done through a single HTTP request.
+An endpoint (e.g. `/.git/config`) is mapped to multiple checks which avoids
+sending X requests for X checks. Multiple checks are achieved through a
+single HTTP request.
Each check needs those fields:
| Attribute | Type | Description | Optional ? | Example |
@@ -210,21 +224,19 @@ Each check needs those fields:
| no_headers | List of string | List of headers there should NOT be in the HTTP response | Yes | N/A |
| match | List of string| List the strings there should be in the HTTP response | Yes | "[branch" |
| no_match | List of string | List the strings there should NOT be in the HTTP response | Yes | N/A |
-| query_string | GET parameters that have to be passed to the endpoint | String | Yes | `query_string: "id=FOO-chopchoptest"` |
## External Libraries
-| Library Name | Link | License |
-|---|---|---|
-| Viper | https://github.com/spf13/viper | MIT License |
-| Go-pretty | https://github.com/jedib0t/go-pretty| MIT License |
-| Cobra | https://github.com/spf13/cobra| Apache License 2.0 |
-| strfmt |https://github.com/go-openapi/strfmt | Apache License 2.0 |
-| Go-homedir | https://github.com/mitchellh/go-homedir| MIT License |
-| pkg-errors | https://github.com/pkg/errors| BSD 2 (Simplified License)|
-| Go-runewidth | https://github.com/mattn/go-runewidth | MIT License |
-
-Please, refer to the `third-party.txt` file for further information.
+| Library Name | Link | License |
+|--------------|---------------------------------------|----------------------|
+| go-md2man | https://github.com/cpuguy83/go-md2man | MIT License |
+| strfmt | https://github.com/go-openapi/strfmt | Apache License 2.0 |
+| go-cmp | https://github.com/google/go-cmp | BSD-3-Clause License |
+| go-pretty | https://github.com/jedib0t/go-pretty | MIT License |
+| go-runewidth | https://github.com/mattn/go-runewidth | MIT License |
+| logrus | https://github.com/sirupsen/logrus | MIT License |
+| cli | https://github.com/urfave/cli/v2 | MIT License |
+| yaml | https://github.com/go-yaml/yaml | Apache License 2.0 |
## Talks
diff --git a/chopchop.yml b/chopchop.yml
index 41b52f9..b23fec9 100644
--- a/chopchop.yml
+++ b/chopchop.yml
@@ -1,15 +1,15 @@
----
-insecure: false
plugins:
- - endpoint: "/status.shtml"
+ - endpoints:
+ - "/status.shtml"
checks:
- name: GENEREX UPS
match:
- 'UPS Status:'
remediation: Make sure that GENEREX UPS access is restricted & monitored
description: GENEREX UPS is accessible | don't move this rule to avoid client timeout
- severity: "Medium"
- - endpoint: "/"
+ severity: Medium
+ - endpoints:
+ - "/"
checks:
- name : GLPI vulnerable version
match:
@@ -20,129 +20,129 @@ plugins:
remediation: Upgrade GLPI in latest version
description: GLPI vulnerable version detected
status_code: 200
- severity: "High"
+ severity: High
- name : PACS NGI GXD5
match:
- 'GXD5 Pacs Connexion utilisateur'
remediation: Make sure that PACS NGI GXD5 access is restricted & monitored
description: PACS NGI GXD5 detected
status_code: 200
- severity: "High"
+ severity: High
- name: AudioCodes SIP Gateway
match:
- 'AudioCodes'
- '