[인시큐어뱅크] 컨텐츠 프로바이더 (Content Provider) 취약점
- 안드로이드
- 2020. 4. 17. 20:51
컨텐츠 프로바이더 (Content Provider) 취약점
컨텐츠 프로바이더 (Content Provider)란, 다른 앱이 데이터베이스에 접근할 수 있도록 도와주는 역할을 한다. 컨텐츠 프로바이더는 앞서 살펴본 안드로이드 액티비티와 비슷하게 AndroidManifrest.xml에서 <provider>로 선언할 수 있다.
컨텐츠 프로바이더 취약점이 존재하게 되면, 데이터베이스에 접근할 권한이 없는데도 데이터베이스에 접근이 가능할 수 있게된다.
컨텐츠 프로바이더 (Content Provider) 취약점 진단
액티비티 취약점 진단과 비슷하게 android:exported="true"로 설정되어있는지 확인하면 된다. 인시큐어뱅크 앱의 AndroidManifest.xml의 <provider>를 살펴보면, 아래와 같이 .TrackUserContentProvider라는 이름의 프로바이더의 exported 여부가 true로 설정되어있다.
drozer를 사용해 해당 컨텐츠 프로바이더의 접근 가능한 URI 주소를 얻어보자. 아래 결과로 나온 Accessible content UIRs를 확인하면 URI 주소를 얻을 수 있다.
dz> run scanner.provider.finduris -a [패키지명]
dz> run scanner.provider.finduris -a com.android.insecurebankv2
얻은 URI 주소를 사용해 데이터베이스에 접근해보면, 로그인에 따라 아래 테이블의 행수가 증가하는 것으로 보아 로그인한 사용자 정보를 담고있는 테이블인 것 같다.
dz> run app.provider.query [URI]
dz> run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers
컨텐츠 프로바이더 (Content Provider) 취약점 진단결과 및 대응방안
- 인시큐어뱅크(InsecureBankv2) 앱의 경우 AndroidManifrest.xml의 <provider>의 exported 값이 true로 설정되어있어 외부에서 해당 컨텐츠 프로바이더의 특정 데이터베이스에 접근해 값을 보는 것이 가능했다.
- 따라서 권한없는 사용자에게 데이터가 유출되는 것을 방지하기 위해서는 아래와 같이 exported 값을 false로 선언해주어야 한다.
'안드로이드' 카테고리의 다른 글
[인시큐어뱅크] HTTP 통신 및 파라미터 조작 취약점 (0) | 2020.04.18 |
---|---|
[인시큐어뱅크] 안드로이드 웹뷰 (Webview) 취약점 (0) | 2020.04.17 |
안드로이드 취약점 진단도구, drozer 설치 및 사용법 (0) | 2020.04.17 |
[인시큐어뱅크] 안드로이드 액티비티 (Activity) 취약점 (0) | 2020.04.17 |
[인시큐어뱅크] 안전하지 않은 로깅 (Insecure Logging) 취약점 (0) | 2020.04.16 |