Sign inSign up

flopes/chopchop

By flopes

•Updated about 6 years ago

Image
0

151

flopes/chopchop repository overview

License Go Report Card

⁠ChopChop

ChopChop is a command-line tool for dynamic application security testing on web applications, initially written by the Michelin CERT.

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.


⁠Table of Contents

⁠Building

We tried to make the build process painless and hopefully, it should be as easy as:

$ go mod download
$ go build .

There should be a resulting gochopchop binary in the folder.

⁠Usage

We are continuously trying to make goChopChop as easy as possible. Scanning a host with this utility is as simple as :

$ ./gochopchop scan --url https://foobar.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 :

  • Threading for better performance
  • Colors and better formatting
  • Ability to filter checks/signatures to search for
  • And much more!

⁠Available flags

You can find the available flags here :

FlagFull flagDescription
-h--helpHelp wizard
-u--urlSet the target URL
-i--insecureDisable SSL Verification
-c--config-fileSet a custom configuration file
-f--url-fileSet a file containing a list of URLs
--csvExport results in CSV
--jsonExport results in JSON

⁠Advanced usage

Here is a list of advanced usage that you might be interested in. Note: Redirectors like > for post processing can be used.

  • Ability to scan and disable SSL verification
$ ./gochopchop scan --url https://foobar.com --insecure
  • Ability to scan with a custom configuration file (including custom plugins)
$ ./gochopchop scan --url https://foobar.com --insecure --config-file test_config.yml
  • Ability to list all the plugins or by severity : plugins or plugins --severity High
$ ./gochopchop plugins --severity High
  • Ability to block the CI pipeline by severity level (equal or over specified severity) : --block Medium
$ ./gochopchop scan --url https://foobar.com --insecure --block Medium
  • Ability to list all the plugins
$ ./gochopchop plugins
  • List High severity plugins
$ ./gochopchop plugins --severity High
  • Set a list or URLs located in a file
$ ./gochopchop scan --url-file url_file.txt
  • Export GoChopChop results in CSV and JSON format
$ ./gochopchop  scan --url https://foobar.com --json --csv 

⁠Creating a new check

Writing a new check is as simple as :

  - uri: "/.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"

An URI (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. Each check needs those fields:

AttributeTypeDescriptionOptional ?Example
namestringName of the checkNoGit exposed
descriptionstringA small description for the checkNoEnsure .git repository is not accessible from the webroot
remediationstringGive a remediation for this specific "issue"NoDo not deploy .git folder on production servers
severityEnum("High", "Medium", "Low", "Informational")Rate the criticity if it triggers in your environmentNoHigh
status_codeintegerThe HTTP status code that should be returnedYes200
headersList of stringList of headers there should be in the HTTP responseYesN/A
matchList of stringList the strings there should be in the HTTP responseYes"[branch"
no_matchList of stringList the strings there should NOT be in the HTTP responseYesN/A

⁠External Libraries

Library NameLinkLicense
Viperhttps://github.com/spf13/viper⁠MIT License
Go-prettyhttps://github.com/jedib0t/go-pretty⁠MIT License
Cobrahttps://github.com/spf13/cobra⁠Apache License 2.0
strfmthttps://github.com/go-openapi/strfmt⁠Apache License 2.0
Go-homedirhttps://github.com/mitchellh/go-homedir⁠MIT License
pkg-errorshttps://github.com/pkg/errors⁠BSD 2 (Simplified License)
Go-runewidthhttps://github.com/mattn/go-runewidth⁠MIT License

Please, refer to the third-party.txt file for further information.

⁠Talks

⁠License

ChopChop has been released under Apache License 2.0. Please, refer to the LICENSE file for further information.

⁠Authors

  • Paul A.
  • David R. (For the Python version)
  • Stanislas M. (For the Golang version)

Tag summary

Content type

Image

Digest

Size

8 MB

Last updated

about 6 years ago

docker pull flopes/chopchop