# Firebase/Appspot misconfig

## Firebase Realtime Misc

### Description

Les bases de données Firebase Realtime sont des bases de données NoSQL hébergée dans le cloud qui permettent de stocker et de synchroniser les données entre des utilisateurs en temps réel.

Certains endpoints Firebase peuvent être trouvés dans les applications mobiles. Il est possible que l'endpoint Firebase utilisé soit mal configuré, accordant à tout le monde les privilèges de lecture (et d'écriture) dessus.

### Reconnaissance

* Décompiler le fichier .apk
* Rechercher une URL du type <https://project-id.firebasio.com> ou <https://project-id.appspot.com> dans le fichier `res/values/strings.xml`

<pre class="language-bash"><code class="lang-bash"><strong>$ cat res/values/strings.xml | grep "firebase|appspot"
</strong></code></pre>

### Exploitation

Si une url firebase est trouvée de cette manière, rendez vous à l'URL et y ajouter un .json pour vérifier si on a les droits de lecture. (<https://project-id.firebaseio.com/.json> ou <https://project-id.appspot.com/.json>)

S'il est possible de lire la base de données, alors vérifier si on a les droits d'écriture avec.

{% hint style="warning" %}
**Attention**: Que la racine soit protégé ne veut pas forcément dire que les autres répértoires le sont également !
{% endhint %}

## Firebase Remote Config Leaks

### Description

Les Firebase Remote Config sont un service fourni par Google Firebase qui permet de modifier dynamiquement le comportement et l’apparence d’une application sans avoir besoin de publier une nouvelle version sur les stores.

Ces configurations ne sont pas sécurisées d'un point de vue de leur exposition car elles sont généralement publiques.

Il arrive ainsi parfois que des développeurs y expose des informations sensibles telles que des clés d'API privées, des tokens ou autres informations techniques sensibles transformant ce service en vecteur de fuite d'informations

Voici une application Android qui permet de vérifier simplement si une application mobile utilise des Remotes Configs publiques et de vérifier leur contenu :

{% embed url="<https://github.com/tusharonly/rcspy>" %}

## Outils

#### FireBaseScanner

FireBaseScanner est un outil permettant de scanner des bases de données Firebase à la recherche de problèmes de configuration.

Exemple d'utilisation:

*`$ python FireBaseScanner.py -p /path/to/target.apk`*

Ressource: <https://github.com/shivsahni/FireBaseScanner>

#### Insecure Firebase Exploit

Un simple exploit Python pour écrire des données dans des bases de données Firebase non sécurisées/vulnérables ! Communément trouvé dans les applications mobiles. Si le propriétaire de l'application a défini les règles de sécurité comme vraies pour la "lecture" et "l'écriture", un attaquant peut probablement vider la base de données et écrire ses propres données dans firebase db.

Ressource: <https://github.com/MuhammadKhizerJaved/Insecure-Firebase-Exploit>

#### RCspy

RCspy est une application mobile permettant d'analyser les applications Android installées afin de détecter si leur configuration Firebase Remote Config est accessible publiquement (et si oui de consulter leur contenu).

Ressource: <https://github.com/tusharonly/rcspy>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.s1rn3tz.ovh/pentest-mobile/android/firebase-appspot-misconfig.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
