본문 바로가기
App hacking

[모바일 앱 취약점] Diva tutorial 3 - Insecure data storage (Part 1)

by m_.9m 2022. 3. 19.

 

Diva 취약점 목록 중 Insecure data storage에 대한 풀이이다. 

 

 

 

해당 문제를 보면 어디서/어떻게 정보가 취약하게 저장되는지와 취약하게 만드는 코드를 찾아야한다.

3rd party service 이름과 비밀번호를 입력하라고 하는데, 3rd party service는 제 3자 서비스로 정보를 저장한 후 로그인을 대행해주는 서비스이다. 

 

 

 

 

 

정보를 입력하고 정상 저장을 확인한 후 어떻게 저장되는지 확인하기 위해 소스코드를 살펴본다.

 

 

해당 부분에 SharedPreferences의 함수를 사용하는 것을 알 수 있다. 소스코드 내에 따로 암호화 절차가 없어 평문으로 저장되는 것을 알 수 있다.

 

 

SharedPreferences

간단한 설정 값이나 문자열 같은 데이터를 저장하기 위해 안드로이드에서 기본적으로 제공하는 옵션.

데이터를 파일로 저장하며 앱 폴더 내에 저장된다. 

 

 

이제 ADB(Android Debug Bridge)를 사용하여 앱 내 파일을 확인해보면 된다. 안드로이드 디버그 브릿지는 안드로이드 기반 에뮬레이터 혹은 실제 휴대기기와 통신할 수 있는 툴로서, 앱 설치/ 로그캣 / 디버깅 등 뿐만아니라 Unix Shell에 접근할 수 있게 함으로 기기내 파일 관리 , 프로세스 확인 등 다양한 작업을 가능하게 한다. 위에 package처럼 보이는 앱 ID를 통해 앱 이름을 유추하고, 보통 애플리케이션이 저장되는 /data/data내 ls가 거부되기 때문에 run-as명령어를 통해 바로 앱의 위치로 들어간다.

 

$ run-as jakhar.aseem.diva

 

 

해당 명령어로 진입한 후 shared_prefs에 있는 폴더를 조회해 평문으로 저장된 데이터를 찾아내면 된다.

 

 

 

 

이름과 비밀번호가 저장된 것을 확인한다.