
owasp.sat.agoat.InsecureStorageSharedPrefs 확인해보면 ID, Password를 user 라는 인자가 받고 있고 SharedPreferences에서 받아온다는 것을 알 수 있다.
문제는 준내 뒤졌는데 SharedPreferences 가 어디에 있는지 모른다는 것이다.
jadx 에서 찾는걸 뒤로 미루고 shell 에서 찾아봤는데 냄새 나는 녀석을 발견했다.
find / -type d -iname "*shared*" 2>/dev/null

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

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");


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

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

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

다음과 같은 형식으로~(박형식 아님)
위에 TEMPFILE 문제와 마찬가지로 아이디 패스워드를 평문으로 users + _tmp 형식으로 저장하고 있다.

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