# Insecure Data Storage

## Definição

Essa missconfiguration ocorre tanto no Android quanto no Iphone.

> Insecure Data Storage é quando a aplicação armazena de forma insegura dados sensíveis do lado do cliente, possibilitando assim invasores com acesso ao dispositivo, recuperar esses dados.

## Armazenamento de dados

* Plist files
* NSUserDefaults
* SQLite Databases
* Core Data
* Keychain

Esses são os tipos que o iOS suporta, eu poderia colocar exemplo de cada um deles aqui, mas iria ficar muito extenso, então caso queira ver como cada um funciona recomendo pesquisar sobre. Além do mais, o aplicativo que iremos explorar já aborda dois tipos de armazenamento: **plist** e **sqlite**

## Exploit time

Bem, vamos começar entrando no nosso aplicativo de teste, você pode efetuar login com as seguintes credenciais:

> User: securestore
>
> Pass: securestore

Ao logar na aplicação vemos uma opção de adicionar conta bancária, e logo abaixo vemos para mostrar os dados de uma conta bancária através de email, podemos deduzir que esses dados são armazenados em algum lugar obvio, vamos tentar achar achá-los com o objection.

<figure><img src="/files/Aib1bhPY7iUe5YhyxvqG" alt=""><figcaption></figcaption></figure>

```
Comandos usuados:

env -> printa informações sobre o app que está rodando, como por exemplo o local do arquivo
file cat {file} -> printa o conteúdo de {file}
sqlite connect {file.db} -> efetua a conexão no arquivo {file.db}, em outras palavras, faz a conexão no banco de dados
.tables; -> comando do sqlite3 para listar as tabelas
select * from {table} -> irá pegar todos os dados do banco da tabela {table}
```

<figure><img src="/files/nLjx1ExKbkj3FOpcrxUU" alt=""><figcaption></figcaption></figure>

Ao entrar no diretório aonde a aplicação salva os dados podemos ver arquivos **.plist** e um **.db**, vamos ver um exemplo de dados em plist:

<figure><img src="/files/iBgSEshtXNzl5HSeO5gh" alt=""><figcaption></figcaption></figure>

Agora vamos para o que interessa, o **.db**, o objection tem suporte para sqlite então podemos visualizar facilmente o conteúdo do arquivo:

<figure><img src="/files/BBX7H2UWDph6XdcF9IvF" alt=""><figcaption></figcaption></figure>

Agora vamos pegar os dados:

<figure><img src="/files/l5x9xilJgdNayDYzv7Xc" alt=""><figcaption></figcaption></figure>

## Impacto

Vamos ao mundo da imaginação agora, suponhamos que exista um banco chamado "Richs Company", esse banco possui um aplicativo que armazena os dados do cartão do lado do cliente para fazer a verificação na hora de entrar no aplicativo do cartão.

Roberto é um cliente desse banco, ele é assaltado por Cleiton, o Hacker.

Cleiton sabe dessa missconfiguration do banco e logo abre o app com o objection para pegar os dados, depois disso ele simplesmente pode utilizar o cartao do Roberto.

Agora basta aplicar o mesmo conceito em um ambiente real.


---

# 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://vida03.gitbook.io/redteam/mobile/ios-pentest/insecure-data-storage.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.
