본문 바로가기

해킹-보안/모바일

취약한 콘텐츠 프로바이더 접근

반응형



설명


콘텐츠 프로바이더는 다른 앱이 현재 앱 정보에 접근할 수 있도록 도와주는 컴포넌트이다.
예를들어 뮤직 플레이어 앱을 설치하면 내 핸드폰에 저장된 음악들을 조회하는 콘텐츠 프로바이더를 사용해서 

음악 파일을 가져온다. 만약, 콘텐츠 프로바이더의 접근 권한이 설정되어 있지 않다면 외부에서 접근 권한이 없는 

용자가 데이터를 조회하거나 변경할 수 있다. 


앱에서 콘텐츠 프로바이더에 접근하려면 콘텐츠 리졸버와 URI가 필요하다.



콘텐츠 리졸버
다른 앱의 콘텐츠 프로바이더에 접근할 수 있게 해준다. 이때 콘텐츠 프로바이더의 주소인 URI가 필요하다.

URI
콘텐츠 프로바이더를 이용하여 데이터에 접근하려면 URI가 필요하다.
URI는 “content://authority/path”와 같은 형식으로 구성되며
autority는 콘텐츠 프로바이더 주소, path는 데이터 위치에 대한 정보를 의미한다.


취약점 진단


콘텐츠 프로바이더는 Androidmanifest.xml 파일에 <provider> 요소로 정의된다.
인시큐어 뱅크 앱을 디컴파일 하여 해당 파일을 보면 exported 속성이 "true"로 설정되어있다.



"content://" 가 포함된 항목을 검색하여 컨텐츠 프로바이더의 접근 가능한 URI 주소를 확인한다.



획득한 URI 주소를 사용해 데이터베이스에 접근할 경우, 아래 사진과 같이 로그인한 사용자 내역이 출력된다. 
이를 이용해 Error SQL Injection 후속 공격도 가능한 것으로 확인된다.


> nox_adb shell content query --uri content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers
> nox_adb shell content query --uri content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers --projection \'


대응방안


Androidmanifest.xml에 선언된 콘텐츠 프로바이더의 android:exported 속성을 "false"로 설정한다.



반응형