[AndroGoat]-Insecure_Data_Storage

김치찜·2026년 9월 3일

android

목록 보기
3/12
post-thumbnail

1. SHARED PREFERENCES -PART 1

문제 분석 및 익스플로잇

owasp.sat.agoat.InsecureStorageSharedPrefs 확인해보면 ID, Password를 user 라는 인자가 받고 있고 SharedPreferences에서 받아온다는 것을 알 수 있다.

문제는 준내 뒤졌는데 SharedPreferences 가 어디에 있는지 모른다는 것이다.

jadx 에서 찾는걸 뒤로 미루고 shell 에서 찾아봤는데 냄새 나는 녀석을 발견했다.

find / -type d -iname "*shared*" 2>/dev/null

해당 경로에 접근해서 users.xml에 접근하니 계정 정보가 나왔고 풀렸다.


2. SHARED PREFERENCES -PART 2

문제 분석 및 익스플로잇

InsecureStorageSharedPrefs1Activity 클래스에서 굉장히 냄새나는 메서드를 발견했는데 boolean으로 score를 검사하여 score를 return한다. 에뮬레이터에서 클릭을 많이 해봤더니 튕기기 때문에 다음 사항을 참고하여 익스 코드를 짰다.

# owasp.sat.agoat.InsecureStorageSharedPrefs1Activity
private final boolean checkScore(int score) {
    return score > 10000;
}

console.log("start");
Java.perform(function() {
    const InsecureStorageSharedPrefs1Activity = Java.use(
        "owasp.sat.agoat.InsecureStorageSharedPrefs1Activity"
    );
    InsecureStorageSharedPrefs1Activity.checkScore.implementation = function () {
        return true; 
    }   
});
console.log("fin");


3. SQLITE

문제 분석 및 익스플로잇

유저 입력값을 받으면 데이터 배이스에 새로운 파일이 생기는것을 확인했다.
경로는 1번과 마찬가지로 find 명령어를 통해 찾았다. (db, sqlite, database)

sqlite를 통해 평문으로 확인하려고 했지만 pass~


4. TEMPFILE

문제 분석 및 익스플로잇

코드를 살펴보면 onclick 이벤트 발생 시 user 입력값을 받아서 user + tmp 라는 이름으로 파일을 생성한다.

다음과 같은 형식으로~(박형식 아님)


5. EXTERNAL STORAGE SDCARD

문제 분석 및 익스플로잇

위에 TEMPFILE 문제와 마찬가지로 아이디 패스워드를 평문으로 users + _tmp 형식으로 저장하고 있다.

profile
I can't melt an IGLOO

2개의 댓글

comment-user-thumbnail
2026년 9월 4일

냄새를 굉장히 잘 맡으시는거 같은데 혹시 개세요?? 그리고 왜 이 포스팅엔 사진이 없는건가요 불편합니다,,,

1개의 답글