티스토리 뷰

- 특정 페이지에 도달할 수 있는 링크를 의미함.

   => 즉, 모바일 웹상에 있는 링크나 그림을 클릭할 경우

        기기 내 관련 앱이나 사전에 정의된 특정 페이지가 실행되는 모바일 기술

- 웹에서 사용되는 http://, https:// 와는 다르게 모바일 어플리케이션마다 각자 생성한 프로토콜을 사용하고 있어

  검증이 미흡한 경우 취약점 발생 가능성 존재


  • URL 스킴 방식 : 앱에 URl 스킴(scheme) 값을 등록하여 딥링크 사용
  • 앱링크(App Link) : Android 제공 - 도메인 주소를 이용한 딥링크 사용
  • 유니버셜 링크(Universal Link) : iOS 제공 - 도메인 주소를 이용한 딥링크 사용

android에서 URL Scheme 방식의 딥링크를 사용하기 위해

AndroidManifest.xml에서 data 태그에 host, scheme 정의 필요

<activity android:name="com.silver35.example">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:host="velog.io/silver35" android:scheme="http"/>
    </intent-filter>
</activity>

 


GitHub - optiv/InsecureShop: An Intentionally designed Vulnerable Android Application built in Kotlin.

 

GitHub - optiv/InsecureShop: An Intentionally designed Vulnerable Android Application built in Kotlin.

An Intentionally designed Vulnerable Android Application built in Kotlin. - GitHub - optiv/InsecureShop: An Intentionally designed Vulnerable Android Application built in Kotlin.

github.com

 

InsecureShop.apk 파일 디컴파일 후,

AndroidManifest.xml 파일에서

data 태그에 host가 com.insecureshop, scheme이 insecureshop로 정의됨을 확인

 


com.insecureshop.WebViewActivity

onCreate 함수에 intent0을 선언한 뒤

intent.getData()로 uri를 가져오고 uri0 변수가 null인지 확인함

 

 

만약 uri0이 null이 아니면 경로에 /web이 있는지 확인하고

        =>있으면 url 파라미터 값을 data 변수에 저장

그렇지 않으면 /webview가 있는지 확인하고

        =>url 파라미터 값을 data 값에 저장

 

/web과 /webview를 모두 포함하지 않으면

        =>앱 종료

포함하고 있으면

        =>webview.loadUrl(data)를 통해 웹 페이지가 로드 됨

 

 

 

따라서, 위의 앱에서 임의의 웹페이지를 로드하기 위해 아래와 같이 URL을 작성함

insecureshop://com.insecureshop/web?url=https://damti.tistory.com/

insecureshop://com.insecureshop/webview?url=https://damti.tistory.com/

nox로 앱 실행 후,

adb의 am 명령을 이용해 임의의 url로 리다이렉션을 하도록 실행

adb shell am start -W -a android.intent.action.VIEW -d "insecureshop://com.insecureshop/web?url=https://damti.tistory.com/"

 

의도한 url로 이동하는 것을 확인할 수 있음

 

 

참고 출처

https://velog.io/@silver35/Android-Open-redirect-vulnerability-Using-Deeplink

'보안 > App' 카테고리의 다른 글

[DVIA-v2] Bypassing Biometrics  (0) 2023.07.05
[DVIA-v2] Side Channel Data Leakage  (0) 2023.07.04
[DVIA-v2] Runtime Manipulation(Login Method 1)  (2) 2023.07.03
[DVIA-v2] Local Data Storage  (0) 2023.06.26
[DVIA-v2] Jailbreak Test 1,2  (0) 2023.06.12