안드로이드 앱에서 다른 애플리케이션에서 자신의 데이터에 접근하는 것을 금지하고 있다.
그러나 콘텐츠 프로바이더를 이용하여 자신의 데이터에 다른 애플리케이션이 접근하거나 부여한 권한대로 이용하도록 할 수 도 있다.
콘텐츠 프로바이더는 다른 애플리케이션의 데이버베이스나 파일에 접근 할 수 있는 인터페이스를 제공하며, 주로 프로세스 간 통신(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로 선언
'보안 공부 > 모바일 보안' 카테고리의 다른 글
안드로이드 취약점 진단(3) - 액티비티 컴포넌트 취약점 (0) | 2024.02.19 |
---|---|
안드로이드 취약점 진단(2) - 취약한 인증 메커니즘(activity 취약점) (0) | 2024.02.18 |
안드로이드 취약점 진단(1) - 브로드캐스트 리시버 취약점 (0) | 2024.02.17 |
드로저(drozer) 사용법 - 취약점 분석(1) (1) | 2024.02.03 |
드로저(drozer) 사용법 - 앱 패키지 정보 확인 (0) | 2024.02.02 |