
Herramienta automatizada de pruebas de seguridad para Salesforce Experience Cloud que descubre aplicaciones Aura mal configuradas, registros accesibles y funcionalidades no autorizadas desde contextos de invitado y autenticado.
Este no es un producto oficialmente respaldado por Google. Este proyecto no es elegible para el Programa de Recompensas por Vulnerabilidades de Software de Código Abierto de Google.
aura-inspector es una navaja suiza de pruebas de Salesforce Experience Cloud. Facilita el descubrimiento de aplicaciones Salesforce Experience Cloud mal configuradas y automatiza gran parte del proceso de prueba. Para más información, consulte la publicación del blog de Mandiant: Auditing Salesforce Aura Data Exposure.
Algunas de sus funcionalidades incluyen:
La herramienta se puede instalar con pipx usando el siguiente comando.
pipx install git+<URL>
La herramienta requiere Python 3 para ejecutarse y pip para descargar las dependencias. Recomendamos crear un entorno virtual para instalar las dependencias.
git clone <URL>
cd aura-inspector
virtualenv env
source ./env/bin/activate
pip3 install -r requirements.txt
El menú de ayuda se puede invocar usando la bandera -h, que proporciona una lista de configuraciones.
python3 aura_cli.py -h
usage: python3 aura_cli.py [-h] [-u URL] [-c COOKIES] [-o OUTPUT_DIR] [-l OBJECT_LIST] [-d] [-v] [-p PROXY] [-k] [-a] [--app APP] [--aura AURA] [--context CONTEXT] [--token TOKEN] [--no-gql] [-r AURA_REQUEST_FILE]
options:
-h, --help show this help message and exit
-u, --url URL Root URL of Salesforce application to audit
-c, --cookies COOKIES
Cookies after authenticating to Salesforce application
-o, --output-dir OUTPUT_DIR
Output directory
-l, --object-list OBJECT_LIST
Pull records only the provided objects. Comma separated list of objects.
-d, --debug Print debug information
-v, --verbose Print verbose information
-p, --proxy PROXY Proxy requests
-k, --insecure Ignore invalid TLS certificates
--app APP Provide the target salesforce app's path (e.g: /myApp), the script will try to detect it if not provided
--aura AURA Provide the target salesforce aura's path (e.g: /aura), the script will try to detect it if not provided
--context CONTEXT Provide a context to be used as aura.context in POST requests, the script will use a dummy one if not provided
--token TOKEN Provide an aura token to be used as aura.token in POST requests, the script will use a dummy one if not provided
--no-gql Do not check for GraphQL capability and do not use it
--no-banner Do not display banner
-r, --aura-request-file AURA_REQUEST_FILE
Provide a request file to an /aura endpoint
La herramienta ofrece una variedad de opciones que pueden ser útiles en diferentes escenarios. Las siguientes cubren algunas situaciones diferentes.
Usar la herramienta en la configuración estándar es tan simple como ejecutar el siguiente comando. Esto ejecutará todas las comprobaciones de manera no autenticada y devolverá lo que es accesible desde la perspectiva de un usuario Invitado.
python3 aura_cli.py -u <URL>
La salida también revelará si hay una funcionalidad de auto-registro que puedes usar para crear una cuenta. Si tienes la oportunidad de registrarte en la instancia, ejecutar la herramienta desde un contexto autenticado probablemente producirá más resultados.
Para ejecutar la herramienta en un contexto autenticado, proporcione la cookie SID usando el parámetro -c o deje que la herramienta analice esto y otros parámetros proporcionando un archivo con el contenido de una solicitud arbitraria al endpoint aura en una sesión autenticada.
python3 aura_cli.py -r <AURA_REQUEST_FILE>
Una sola instancia puede tener múltiples aplicaciones personalizadas alojadas en ella. Esto se puede identificar típicamente si ves algo como /<custom-app-name>/s en la ruta. Si ese es el caso, recomendamos encontrar todas las aplicaciones y especificarlas usando el parámetro --app, ya que la salida puede diferir significativamente. También se recomienda intentar ejecutar la herramienta contra la aplicación predeterminada "/" si hay alguna aplicación personalizada alojada en la instancia.