-->

[인시큐어뱅크] 컨텐츠 프로바이더 (Content Provider) 취약점

컨텐츠 프로바이더 (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로 선언해주어야 한다.

 

댓글

Designed by JB FACTORY