뉴비에욤
[안드로이드 APK 진단] DIVA - 10.접근 제어 부재 파트 2 본문
10번 문제, "10. ACCESS CONTROL ISSUES - PART 2"를 클릭한다.
목표를 보면 Tveeter에 등록을 하고 나면 TVEETER API 자격 증명을 얻을 수 있다고 한다. 이 앱은 온라인 등록을 해야 하는데, 벤더가 핀 코드를 주면 해당 핀 코드를 이용해서 등록해야 한다.
우리의 목표는 핀 코드를 모르는 상태에서 앱 바깥에서 API 자격 증명을 얻는 것으로, 비즈니즈 로직 문제이기 때문에 코드를 봐야한다고 한다.
Register Now를 선택하고 VIEW TVEETER API CREDENTIALS 버튼을 클릭한다.
등록을 시도하면 핀 코드를 입력하라고 한다.
임의의 핀 코드를 입력하면 잘못된 코드라는 메시지가 나타난다.
Already Registered를 선택하고 API 자격 증명에 접근한다.
이미 등록 된 상태라면 API 자격 증명을 얻을 수 있다.
Manifiest.xml 파일을 보면 이번 문제와 관련 된 액티비티는 2개임을 볼 수 있다.
> AccessControl2Activity
> APICreds2Activity
AccessControlActivity 코드를 보면 부울린 데이터 타입의 v0 변수가 인텐트 v1과 함께 사용 된다.
APICreds2Activity 코드를 보면 어떤 조건이 거짓(제일 앞에 NOT을 뜻하는 느낌표가 있고, true와 비교, 즉 거짓)일 경우 API 자격 증명에 접근할 수 있게 된다.
> JEB를 통한 디컴파일은 제대로 된 변수명을 보여주지 않기 때문에 DIVA 앱의 소스 코드를 통해 확인해야 한다.
실제 소스 코드의 APICreds2Activity.java 파일을 보면 위 사진과 같은데 부울린 타입의 변수명이 bheck 임을 볼 수 있는데 R.string.chk_pin과 관련되어 있는 듯 하다.
소스 코드 폴더에서 values/string.xml을 보면 위 사진과 같이 chk_pin은 실제로 check_pin을 의미함을 볼 수 있다.
즉, 정리하자면 check_pin 변수가 false 라면 API 자격증명을 얻을 수 있따는 뜻이다.
기존 레벨에서 사용했던 코드를 그대로 사용하되, "--ez" 옵션을 사용하여 check_pin 변수를 false 상태로 실행하면 API 자격 증명을 앱을 실행하지 않고 볼 수 있다.
'Android_Vuln' 카테고리의 다른 글
[안드로이드 APK 진단] DIVA - 12.하드코딩 이슈 파트 2 (0) | 2018.03.20 |
---|---|
[안드로이드 APK 진단] DIVA - 11.접근 제어 부재 파트 3 (2) | 2017.10.18 |
[안드로이드 APK 진단] DIVA - 9.접근 제어 부재 파트 1 (0) | 2017.10.18 |
[안드로이드 APK 진단] DIVA - 8.입력 값 검증 부재 파트 2 (0) | 2017.10.18 |
[안드로이드 APK 진단] DIVA - 7.입력 값 검증 부재 파트 1 (0) | 2017.10.17 |