📦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.

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}

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:

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

Agora vamos pegar os dados:

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.

Last updated