in

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.

«Chop Chop» es un término cantonés. «Chop-Chop» significa «apúrate» y sugiere que se debe hacer algo ahora y sin retraso.

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:

bandera Bandera completa descripción
-h --help Asistente de ayuda
-v --verbosity Nivel de registro detallado
-c --signature Ruta del archivo de firma personalizado
-k --insecure Desactivar la verificación SSL
-u --url-file Ruta a un archivo especificado con URL que se probarán
-b --max-severity Bloquear la canalización de CI si la gravedad es mayor o igual que la marca especificada
-e --export Tipo de exportación de la salida (csv y / o json)
--export-filename Ingrese el nombre del archivo para los archivos de exportación
-t --timeout Tiempo de espera para las solicitudes HTTP
--severity-filter Filtrar complementos por gravedad
--plugin-filter Filtrar complementos por nombre del complemento
--threads Nú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 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 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:

Attribute Type Description Optional ? Example
name string Name of the check No Git exposed
description string A small description for the check No Ensure .git repository is not accessible from the webroot
remediation string Give a remediation for this specific «issue» No Do not deploy .git folder on production servers
severity Enum(«High», «Medium», «Low», «Informational») Rate the criticity if it triggers in your environment No High
status_code integer The HTTP status code that should be returned Yes 200
headers List of string List of headers there should be in the HTTP response Yes N/A
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

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)



What do you think?

Written by Helen Lafayette

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

GIPHY App Key not set. Please check settings

La explosión de correo electrónico fraudulento abusó de la codificación incorrecta en el sitio web del FBI – Krebs on Security

El Departamento de Educación de EE. UU. Instó a las escuelas K-12 a intensificar sus defensas contra el ransomware