AdSense
Thursday, December 22, 2016
ANDROID PT / Client Side Injection
CLIENT SIDE INJECTION
- Layout for this exercise:
- Connecting Santoku to Nexus 5:
- The goal of this exercise is to inject a crafted SQL query to a database, so that the application yields the contents of the database due to the lack of proper input sanitization.
- Android mobile devices use SQLite as framework for local database storage, so let's install the application sqliteapp.apk into the mobile device:
- Clicking the icon of the application:
- The user is prompted to register:
- Registering a user:
- The valid user logins and his private details are displayed:
- With the purpose of bypassing the authentication proceses, let's disassemble the application with jadx and see how is written the source code:
- Running jadx over the application:
- A new directory is created:
- Going to the manifest to see what is the associated package:
- Moving trough the directory to reach the innermost folder of the package, the Java source code is found:
- Opening the connector to the database, there is a SQL instruction that takes credentials (username and password) from the user_records database:
- Now, taking advantage of the lack of input validation sanitization, let's try an "always true" SQL query.
- This SQL injection is based on the well-known fact that OR function yields TRUE whenever one the operands is 1:
0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1
- For instance: Joey1'or'1'='1'--
- The command injection is successful, because all the details about the user are displayed: