ChopChop es una CLI que ayuda a los desarrolladores a escanear puntos finales e identificar servicios / archivos / carpetas confidenciales

ChopChop es una herramienta de línea de comandos para pruebas de seguridad de aplicaciones dinámicas para aplicaciones web originalmente escrita por Michelin CERT.

Su objetivo es escanear múltiples puntos finales e identificar la provisión de servicios / archivos / carpetas por webroot. Los cheques / firmas se declaran en un archivo de configuración (por defecto: chopchop.yml), totalmente configurable y lo más importante por desarrolladores.

edificio

Intentamos que el proceso de compilación sea sencillo y, con suerte, debería ser tan fácil como:

$ go mod download$ go build .

Debería ser un resultado gochopchop binario en la carpeta.

Usar Docker

¡Gracias a Github Container Registry, podemos proporcionarle algunas imágenes de Docker recién creadas!

docker run ghcr.io/michelin/gochopchop scan https://foobar.com -v debug

Pero si lo prefiere, también puede crearlo localmente, consulte a continuación:

Construye localmente

docker build -t gochopchop .

propósito de uso

Tratamos de hacer todo el tiempo goChopChop tan simple como sea posible. Escanear un host con esta utilidad es tan simple como:

$ ./gochopchop scan https://foobar.com

Usar Docker

docker run gochopchop scan https://foobar.com

Archivo de configuración personalizado

docker run -v ./:/app chopchop scan -c /app/chopchop.yml https://foobar.com

Que sigue

La refundición de Golang ocurrió hace unos meses, pero todavía queda mucho por hacer. Aquí hay algunas características que nos gustaría incluir:
[x] Enhebrado para un mejor rendimiento
[x] Posibilidad de especificar el número de subprocesos simultáneos.
[x] Colores y mejor formato
[x] Capacidad para filtrar cheques / firmas para la búsqueda
[x] Pruebas unitarias y simuladas
[x] ¡Github CI y mucho más!

Pruebas

Para habilitar una prueba rápida de un extremo a otro de Chopchop, tenemos un servidor web en formato. previsto tests/server.go. Para probar, por favor corre go run tests/server.go Luego ejecuta chochop con el siguiente comando ./gochopchop scan http://localhost:8000 –verbosity Debug. ChopChop debería mostrar «no se encontraron vulnerabilidades».

También hay pruebas unitarias para comenzar go test -v ./…. Estas pruebas están integradas en el flujo de trabajo de github CI.

Banderas disponibles

Puede encontrar las banderas disponibles para el scan Mando:

banderaBandera completadescripción-h–helpAsistente de ayuda-v–verbosityNivel de registro detallado-c–signatureRuta del archivo de firma personalizado-k–insecureDesactivar la verificación SSL-u–url-fileRuta a un archivo especificado con URL que se probarán-b–max-severityBloquear la canalización de CI si la gravedad es mayor o igual que la marca especificada-e–exportTipo de exportación de la salida (csv y / o json)–export-filenameIngrese el nombre del archivo para los archivos de exportación-t–timeoutTiempo de espera para las solicitudes HTTP–severity-filterFiltrar complementos por gravedad–plugin-filterFiltrar complementos por nombre del complemento–threadsNúmero de hilos simultáneos

Uso extendido

Aquí hay una lista de usos avanzados que pueden interesarle. Nota: redirecciona como > se puede utilizar para el posprocesamiento.

  • Posibilidad de escanear y deshabilitar la verificación SSL
$ ./gochopchop scan https://foobar.com --insecure
  • Posibilidad de escanear con un archivo de configuración personalizado (incluidos complementos personalizados)
$ ./gochopchop scan https://foobar.com --insecure --signature test_config.yml
  • Posibilidad de enumerar todos los complementos o por gravedad: plugins o plugins –severity High
$ ./gochopchop plugins --severity High
  • Posibilidad de especificar el número de subprocesos simultáneos: –threads 4 para 4 trabajadores
$ ./gochopchop plugins --threads 4
  • Capacidad para bloquear la canalización de CI por gravedad (igual o superior a la gravedad especificada): –max-severity Medium
$ ./gochopchop scan https://foobar.com --max-severity Medium
  • Posibilidad de especificar firmas específicas para verificar.
./gochopchop scan https://foobar.com --timeout 1 --verbosity --export=csv,json --export-filename boo --plugin-filters=Git,Zimbra,Jenkins
  • Posibilidad de enumerar todos los complementos
  • Lista de complementos de alta gravedad
$ ./gochopchop plugins --severity High
  • Definir una lista o URL que están en un archivo
$ ./gochopchop scan --url-file url_file.txt
  • Exportar resultados de GoChopChop en formatos CSV y JSON
$ ./gochopchop scan https://foobar.com --export=csv,json --export-filename results

Crear un nuevo cheque

Escribir un nuevo cheque es tan fácil como:

- endpoint: "/.git/config"checks:- name: Git exposedmatch:- "[branch"remediation: Do not deploy .git folder on production serversdescription: Verifies that the GIT repository is accessible from the siteseverity: "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.
Each check needs those fields:

AttributeTypeDescriptionOptional ?ExamplenamestringName of the checkNoGit exposeddescriptionstringA small description for the checkNoEnsure .git repository is not accessible from the webrootremediationstringGive a remediation for this specific «issue»NoDo not deploy .git folder on production serversseverityEnum(«High», «Medium», «Low», «Informational»)Rate the criticity if it triggers in your environmentNoHighstatus_codeintegerThe HTTP status code that should be returnedYes200headersList of stringList of headers there should be in the HTTP responseYesN/Ano_headersList of stringList of headers there should NOT be in the HTTP responseYesN/AmatchList 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/Aquery_stringGET parameters that have to be passed to the endpointStringYesquery_string: «id=FOO-chopchoptest»

External Libraries

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)