보안 공부/모바일 보안

안드로이드 취약점 진단(4) - 콘텐츠 프로바이더 취약점

H.J.World 2024. 2. 21. 00:34
728x90
반응형

안드로이드 앱에서 다른 애플리케이션에서 자신의 데이터에 접근하는 것을 금지하고 있다.

그러나 콘텐츠 프로바이더를 이용하여 자신의 데이터에 다른 애플리케이션이 접근하거나 부여한 권한대로 이용하도록 할 수 도 있다.

콘텐츠 프로바이더는 다른 애플리케이션의 데이버베이스나 파일에 접근 할 수 있는 인터페이스를 제공하며, 주로 프로세스 간 통신(IPC: Inter-Process Communication)으로 다른 애플리케이션과 데이터를 공유한다.

콘텐츠 프로바이더에 접근하기 위해서는 프로바이더 URI와 콘텐츠 리졸버가 필요하다.

 

타 앱에서 콘텐츠 리졸버를 사용해서 공격 타켓 대상에 대한 콘텐츠 프로바이더 URI로 접근한다.

Content Provider 주소는 "content://aurh/path" 형태로 나타난다.

 

-- 취약점 진단 방법 --

1. AndroidManifest.xml 확인

<provider android:authorities="com.android.insecurebankv2.TrackUserContentProvider" android:exported="true" android:name="com.android.insecurebankv2.TrackUserContentProvider"/>

- 실제 컨텐츠 프로바이더 주소는 소스코드 내 포함되어 있기 때문에 분석하는게 필요하다.

 

2.  adb를 사용한 취약점 진단

컨텐츠 프로바이더 주소 : content://com.android.insecurebankv2.TrackUserContentProvider/trackusers

 명령어 : adb shell content query --uri content://com.android.insecurebankv2.TrackUserContentProvider/trackusers

 

3. drozer를 사용한 취약점 진단

-  콘텐츠 프로바이더 검색

명령어 : run app.provider.info -a com.android.insecurebankv2

 

- 콘텐츠 프로바이더 URI 검색

명령어 : run scanner.provider.finduris -a com.android.insecurebankv2

 

- 콘텐츠 프로바이더를 사용한 데이터 확인

명령어 : run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackusers

 

-  콘텐츠 프로바이더를 사용한 SQL Injection 취약점 확인

명령어 : run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackusers --projection "'"

 

4. 대응방안

- exported를 false로 선언

728x90
반응형