[Insecure Bank] 안전하지 않은 콘텐츠 프로바이더 접근

2024. 12. 4. 13:35·모바일 앱해킹(Android)/Insecure Bank

이번시간엔 '안전하지 않은 콘텐츠 프로바이더 접근' 취약점에 대하여 다뤄보겠습니다.

 

['안전하지 않은 콘텐츠 프로바이더 접근' 이란?]

> 안드로이드의 모든 애플리케이션은 기본적으로 다른 애플리케이션이 자신의 데이터에 접근하는 것을 금지하고 있습니다. 그러나 콘텐츠 프로바이더를 이용하여 자신의 데이터에 다른 애플리케이션이 접근하거나 부여한 권한대로 이용하도록 할 수 있습니다. 쉽게 말해서 콘텐츠 프로바이더는 다른 애플리케이션이 자신의 데이터를 사용하기 위한 통로 역할을 제공합니다.  이 프로바이더의 설정중 exported="true" 로 되어있고 외부앱에서 접근하는 것 에대한 별다른 조치가 없다면 외부에서 이 앱의 저장소에 접근하여 민감한 정보들을 빼낼 수 있는 위험성이 존재합니다.

 

 

[콘텐츠 프로바이더라는게 뭔데?]

<Provider> 태그를 이용하는 콘텐츠 프로바이더는 액티비티,서비스,브로드캐스트리시버와 함께 앱의 4대구성요소중 하나로, 주소인 URI 와 콘텐츠 리졸버 라는것이 필요합니다. 

 

URI : content://authority/path 형식으로 이루어져 있으며 Authority는 콘텐츠 프로바이더의 고유주소, path는 데이터 위치에 대한 정보가 담겨져있습니다. 이 주소가 A와 B 앱끼리의 데이터(DB) 공유에 필요한 주소값이 됩니다! , 즉 저 주소를 통해 직접적으로 A앱의 DB에 접근할 수 있는것이죠! 

 

콘텐츠 리졸버 : ContentResolver 형식인 콘텐츠 리졸버를 통해 A앱의 콘텐츠 프로바이더와 연결 통로를 이어줍니다. 여기서 어떤 콘텐츠 프로바이더와 연결할 것인지 지정하는 역할이 URI 이고, 연결이 되었으면 B어플은 A의 저장소에 CRUD 기능을 행사할 수 있습니다.


1. 취약점 탐색

1. AndroidManifest.xml 파일에 접근하셔서 검색창에 provider 라고 입력합니다. 그러면 provider 태그가 검색이 되는데 보시면 exported="true" 설정이 되어있는데 커스텀 권한같은 외부접근에 대한 특별한 제한조치가 없습니다. 따라서 이 부분을 취약점 포인트로 생각해볼 수 있습니다.


2. provider의 고유주소(Authority)가 가르키고 있는 TrackUserContentProvider 라는 액티비티로 가서 소스코드를 살펴보니 content:// 형식의 URI 주소가 적혀있는 것을 확인하실 수 있습니다. URI 주소와 외부 접근 설정여부도 알았으니 이제 공격을 시도해보겠습니다.


2. 공격과정

[ADB를 이용한 DB 추출]

1.1 우선 명령어창에서 해당 명령어를 통해 콘텐츠 프로바이더에 접근할 수 있습니다. 

> nox_adb shell content query --URI [URI 주소]

1.2 다음 명령어르 입력하시면 인시큐어 뱅크 내부DB 정보가 출력이 됩니다. 보니깐 로그인한 사람의 내역을 저장하고 있는것 같습니다.

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


1.3 이후 --projection 옵션을 사용하여 싱글쿼터를 삽입하니 Error가 뜨면서 select 에 사용된 SQL 구문이 출력이 되었습니다. 저희가 ' 쿼터로 넣은 값이 SELECT [입력값] FROM name ORDER BY name  로 들어가나 봅니다. 그러면 이 점을 이용하여 SQL Injection 을 시도해볼 수 있습니다.


1.4 해당 명령어를 통해 SQL Injection 공격 결과 SQLite DB에 있는 테이블 명을 출력하는 것에 성공하였습니다! 이를 통해 다른 테이블의 정보도 가져올 수 있게 되었습니다.

> nox_adb shell content query --uri content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers --projection \"* FROM SQLITE_MASTER WHERE type='table';--\"


3. 대응방안

1. exported="false" 설정

> 특별한 경우가 아니면 exported="false" 설정을 해두어야 합니다. 이 설정만 해도 외부에서 내부 db에 함부로 접근하는 일은 없어질 것입니다!

 

2. 권한 설정

> 만약 true 로 설정해야만 하는 상황이라면 권한 설정을 통해 이 provider에 접근할때 특정 권한이 필요하도록 조치하면 안전하게 이용하실 수 있습니다.

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

긴 글 읽어주셔서 감사합니다!

'모바일 앱해킹(Android) > Insecure Bank' 카테고리의 다른 글

[Insecure Bank] 애플리케이션 패칭 취약점  (2) 2024.12.05
[Insecure Bank] 취약한 웹 뷰 실행  (0) 2024.12.05
[Insecure Bank] 루팅 탐지 및 우회  (1) 2024.12.02
[Insecure Bank] 액티비티 컴포넌트 취약점  (0) 2024.11.29
[Insecure Bank] 로컬 암호화 이슈 취약점  (0) 2024.11.26
'모바일 앱해킹(Android)/Insecure Bank' 카테고리의 다른 글
  • [Insecure Bank] 애플리케이션 패칭 취약점
  • [Insecure Bank] 취약한 웹 뷰 실행
  • [Insecure Bank] 루팅 탐지 및 우회
  • [Insecure Bank] 액티비티 컴포넌트 취약점
무너박사
무너박사
IT 보안 블로그 입니다. 제가 작성하는 블로그가 누군가의 공부에 조금이라도 도움이 되길 바라며 작성하였습니다.
  • 무너박사
    무너박사의 연구일지
    무너박사
  • 전체
    오늘
    어제
    • 분류 전체보기 (104)
      • WEB 지식 (3)
      • 웹해킹 (13)
      • 웹개발(PHP-Mysql) (12)
      • 웹개발(JSP-Oracle) (2)
      • 워게임 문제풀이 (19)
        • Segfault (17)
        • Dreamhack (2)
      • SQL (3)
      • Python (2)
      • AI (1)
        • LLM(Large Language Model) (1)
      • Kail Linux (3)
      • 잡다한 지식 (2)
      • 모바일 앱개발(Kotlin-PHP-Mysql) (13)
      • 모바일 앱해킹(Android) (31)
        • Frida Lab (2)
        • Android DIVA (8)
        • Insecure Bank (20)
      • 안드로이드 위협 탐지 및 우회 (0)
        • 루팅 탐지 & 우회 (0)
        • 디버깅 탐지 & 우회 (0)
        • 에뮬레이터 탐지 & 우회 (0)
        • Frida 탐지 & 우회 (0)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      워게임
      모바일앱개발
      모바일 앱해킹
      안드로이드 스튜디오
      취업반
      시스템해킹
      php
      MySQL
      mobile diva
      취업반 6기
      insecure bank
      해킹
      Kotlin
      인시큐어 뱅크
      android diva
      sql injection
      앱해킹
      Blind sql injection
      모바일 앱개발
      Android Studio
      XSS
      모의해킹
      normaltic
      인시큐어뱅크
      취업반6기
      칼리리눅스
      Koltin
      리패키징
      웹해킹
      dom based xss
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    무너박사
    [Insecure Bank] 안전하지 않은 콘텐츠 프로바이더 접근
    상단으로

    티스토리툴바