---
# System prepended metadata

title: App-pentestrapport 280922

---

# App-pentestrapport 280922

Inne i assets/secret.txt ligger følgende:

    H4sIAAAAAAAAAFWOMQ7CMAxFr/KZuqAegA11YYKZ0XWc1qKKkZOgduMaXI+TEMH
    E/vTeGyxNTqUuVNRS3uFqtXsIotUUUGZBFnYpiLpIj5O4dBmEYa58w9ncNSMSN8
    Acm9UDLomlEWyjE0Ytf+z7+cIiU49jLOLN2lqBtgyLkJW9sraTNOFOmvbfgZ8oq
    IT+AzmvnemuAAAA

Dette må vi svare på:
-
• Hvordan gikk du frem for å løse oppgaven?
• Hvilke sårbarheter fant du?
• Hvilke sårbarheter var du i stand til å utnytte?
- Hvilke verktøy benyttet du deg av for å løse oppgaven?
        - Android Studio
        - Jadx
        - apktool


Ting å se på:
-
- Saarbare libraries -> typ sjekker om noen av filene som ligger under mappen lib har tidligere vaert utnyttet + finne deres tilhorende PoC eller CVE
- Finne funskjonene som er ansvarlige for å sende og motta meldinger + prøve å bruke Frida/Dozer/Am på disse
- Finne funskjoner som er ansvarlige for kommunikasjonen med MQTT serveren og prøve å forke disse (aka endre smali koden og bygge appen på nytt)
- Teste om vi kan leake noe sårbar info (typ fra users.sqli og secret.txt)
- Dekryptering av databasen (SQLCipher eller FUSE: https://github.com/libfuse/libfuse)

Statisk analyse
-
-- TBD --
Skrive om hvordan koden funker og hva vi ser basert på kun source code (så det ser ut som at vi har gjort litt work lol)


Mulige Sårbaheter:
-
- Sqlinjection:
![](https://i.imgur.com/u7CA6tw.png)

- Sjekk denne i filen
![](https://i.imgur.com/NZaMG1T.png)
AIzaSyDyeKRaJnuEUlcPs2DfSDnBelBG57gLGho
![](https://i.imgur.com/oG7CovG.png)

Ligger i $b:
![](https://i.imgur.com/dB2aGxK.png)

Ikke lurt aa ha hele databasen i klartekst:

     CREATE TABLE users ( id integer PRIMARY_KEY, first_name text NOT NULL, last_name text NOT NULL, alias text NOT NULL, address text NOT NULL, password text NOT NULL)

Decode secret.txt
-
**Flytte dette?**
Brukte CyberChef:
![](https://i.imgur.com/Uw0kBUF.png)

**Input:**
H4sIAAAAAAAAAFWOMQ7CMAxFr/KZuqAegA11YYKZ0XWc1qKKkZOgduMaXI+TEMHE/vTeGyxNTqUuVNRS3uFqtXsIotUUUGZBFnYpiLpIj5O4dBmEYa58w9ncNSMSN8Acm9UDLomlEWyjE0Ytf+z7+cIiU49jLOLN2lqBtgyLkJW9sraTNOFOmvbfgZ8oqIT+AzmvnemuAAAA

**Output:**
Congratulations! You've found the secret file. Here's a Chuck Norris fact for you: Once a cobra bit Chuck Norris’ leg. After five days of excruciating pain, the cobra died.


Patching:
-

### Level 1
Første problemet vi møtte på var å komme oss inn på selve appen. Følgende funksjon er ansvarlig for at dette skjer

**Java**
![](https://i.imgur.com/UTcDrhI.png)

Smali i fil: 
![](https://i.imgur.com/mKy8HIf.png)

![](https://i.imgur.com/A9utQWx.png)

Vi la også merke til at funskjonen ble kalt i to filer, både $e og $d, som betydde at begge måtte patches for at dette skulle funke.

Her prøvde vi mye rart, som å endre på flag verdiene, endre på if setningene, kommentere ut ulike deler av koden, og legge til flere andre jump conditions. Alt dette førte til at selve appen ikke åpnet på mobilen.

Vi fant senere ut at MainActivity har en System.exit(0) funsjon som blir invoked av koden over. Dermed kommenterte vi ut følgende linjer i filene MainActivity\$d\$a.smali og MainActivity\$e\$a.smali:

![](https://i.imgur.com/18RemM5.png)

som ga oss tilgang til innloggingen for chatten. 

### Level 2
Nå som vi kom oss inn i appen, fikk vi ikke starte opp chaten med mindre vi hadde riktig brukernavn og passord.

Vi prøvde først å legge til verdier i databasen med følgende kode (brukte INSERT INTO):
![](https://i.imgur.com/JKZDQKl.png)
![](https://i.imgur.com/2M9xzdQ.png)
Dette kræsjet appen.

Så testet vi ut ulike former for SQL injection i selve appen. 


Dette fungerte:
username: admin
password: ' OR 1=1 OR '




Nyttige funksjoner for å kompilere og dekompilere apper:
-

Dekompilering:

    apktool d app.apk

Kompilering:

    0. Pass på at det står android:extractNativeLibs="true" i AndroidManifest.xml
    1. apktool b app --use-aapt2
    1. apktool b ChatApp_v2 --use-aapt2
    2. keytool -genkey -v -keystore crystalux.keystore -alias Crystalux -keyalg RSA -validity 10000 
    (gjør dette ini dist mappen, så slipper man å gjøre det flere ganger)
    3. jarsigner -verbose -keystore crystalux.keystore dist/app.apk Crystalux
    4. zipalign 4 dist/app.apk dist/base-zipaligned.apk
    4. zipalign 4 dist/ChatApp_v2.apk dist/chat-zipaligned.apk
    
