3.Drozer 실습 (Insecurebankv2) - Content Provider

2025. 2. 8. 00:24·Mobile_security/Drozer_Android

0.Content Provider란?

Android에서 앱 간 데이터 공유를 위해 제공되는 컴포넌트이다.
앱의 데이터베이스(SQLite), 파일, 네트워크 데이터 등을 다른 앱과 공유할 때 사용된다.
주로 [content://] 스키마를 사용하여 URI 형태로 접근한다.

 

즉 데이터베이스 느낌이라고 생각하면 편할듯하다.

 

 

0-1.Content Provider의 기본 구조

Content Provider는 [content://] URI를 사용하여 데이터를 읽고 쓴다.

 

예를 들자면 Contacts 앱에서 연락처 데이터를 제공하는 URI는 이런 식으로 표현된다.

content://com.android.contacts/contacts

 

이를 통해서 다른 앱이 데이터에 접근할 수 있다.

 

 

0-2.Content Provider의 주요 메서드

메서드 설명
query() 데이터 조회 (SELECT)
insert() 데이터 삽입 (INSERT)
update() 데이터 수정 (UPDATE)
delete() 데이터 삭제 (DELETE)

 

 

 

 

1.취약한 Content Provider 분석

 

 

 

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

run app.provider.info -> 앱의 Content Provider 정보를 조회하라는 명령
-a com.android.insecurebankv2 -> 패키지(앱) 대상
출력 내용 분석

Package: com.android.insecurebankv2
-> 앱의 Content Provider 정보를 확인한 결과 ~

	Authrity: com.android.insecurebankv2.TrackUserContentProvider
	-> Authority [고유 식별자] (URI 형식으로 접근 가능하다)
    
    	Read Permission: null -> 읽기 권한 제한이 없음 (모든 앱이 읽을수 있음)
        Write Permission: null -> 쓰기 권한 제한이 없음 (모든 앱이 쓸 수 있음)
        Content Provider: com.android.insecurebankv2.TrackContentProvider -> 실제 클래스 이름
        Multiprocess Allowed: False -> 여러 프로세스에서 동시 접근이 제한됨 (딱히 의미 없음)
        Grant Uri Permissions: False -> 다른 앱이 특정 URI에 대해 임시 권한을 얻는 기능이 비활성화됨

 

이런 식으로 정리를 할 수 있다.

 

 

2. 취약한 Content Provider 접근

데이터 조회를 하기 위해 앞서 경로를 먼저 파악해야 한다.

 

2-1.table 경로 찾기 [finduri]

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

 

finduri를 통해서 insecurebankv2에 대한 경로를 파악했다.

trackusers에 대해서 먼저 확인해 보자.

 

 

 

2-2. 데이터 조회 [query]

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

 

query를 이용해서 trackerusers에 대한 데이터 조회를 총 2번에 jack으로 로그인했던 기록들이 나왔다.

 

 

 

 

2-3.SQL injection

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

 

injection 된 쿼리는 sqlite_master 테이블에서 type 이 table 인 모든 항목을 조회한다 즉 데이터베이스에 있는 모든 테이블 목록을 반환시키는 명령이다. [위험]

 

names에 대해서 추가적인 공격인 발생할 수도 있다. -> 사용자 정보 관리  [insert] <위험>

 

 

 

 

 

3. 해결방안?

1.Content Provider -> exported="false"

-> 외부 앱 허용 X

 

2. 입력 데이터 검증

->정규식 검증을 통해 허용된 값만 받는 것도 괜찮을듯하다.

 

3.android:permission -> 권한 설정

 

그나마 하기 쉬운 방안들이 이 정도인듯하다.

'Mobile_security > Drozer_Android' 카테고리의 다른 글

4.Drozer 실습 (Insecurebankv2) - Broadcast Receiver  (1) 2025.02.10
2.Drozer 실습 (InsecureBankv2) - activity  (0) 2025.02.05
1.Drozer 기초 (이론 + 실습)  (0) 2025.02.01
'Mobile_security/Drozer_Android' 카테고리의 다른 글
  • 4.Drozer 실습 (Insecurebankv2) - Broadcast Receiver
  • 2.Drozer 실습 (InsecureBankv2) - activity
  • 1.Drozer 기초 (이론 + 실습)
G_OM
G_OM
최대한 설명 열심히 하려고 합니다. 궁금한 거 있으면 언제든지 물어보셔도 좋습니다.
  • G_OM
    끄적끄적
    G_OM
  • 전체
    오늘
    어제
    • 분류 전체보기 (157)
      • 모의해킹 (18)
      • CTF (22)
      • Wargame (69)
        • Linux_bandit (33)
        • Webhacking.kr (36)
      • DreamHack (52)
        • WEB (14)
        • Reverising (9)
        • System (0)
      • Mobile_security (13)
        • Drozer_Android (4)
        • Frida_Android (1)
        • IOS (1)
        • tool (1)
      • 정보보안기사 (2)
      • IT? (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

    • DreamHack 에 대한 문제들...
  • 인기 글

  • 태그

    url encode
    모의해킹
    drozer
    Android
    워게임
    OSINT
    overthewire
    webhacking.kr
    bandit
    CTF
    cookies
    Linux
    php
    php wrapper
    난독화
    리눅스
    insecurebankv2
    Frida
    bandit30
    bandit20
    webhacking
    bandit18
    sql injection
    Linux wargame
    wargame
    리눅스 워게임
    bandit17
    정보보안기사
    lfi
    Dreamhack
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
G_OM
3.Drozer 실습 (Insecurebankv2) - Content Provider
상단으로

티스토리툴바