일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 곱셈 암호
- node.js
- 개인정보보호위원회
- Writeup
- 무료교육
- 디오판투스 알고리즘
- 웹 프레임워크
- 개인정보보호교육
- function scope
- 한국정보보호산업협회
- 한국산업인력공단
- 백엔드입문
- 호이스팅
- package-lock.json
- package.json
- pwnable.tw
- 동적타이핑
- 마감임박
- 유클리드_알고리즘
- 국가인적자원개발컨소시엄
- arrow function
- 개인정보안전성
- 개인정보보호
- 덧셈 암호
- 확장 유클리드 알고리즘
- 모듈러 연산
- 한국정보보호산업협회기자단
- 포너블
- 백엔드
- 가명정보처리
- Today
- Total
짱짱해커가 되고 싶은 나
[안드로이드 취약점 진단] 3-2. Intent Sniffing and Injection 본문
Intent
4가지 컴포넌트들이 서로 호출, 메시지 및 데이터를 수신하는 역할 수행
- 명시적(explicit) intent : 수신 대상을 구체적으로 명시
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(i);
- 암시적(implicit) intent : 수신 대상을 명시하지 않고 호출
Intent i = new Intent("blah");
startActivity(i);
-> startActivity(intent)가 아닌 this.sendBroadcast(intent)를 사용하는 경우 암시적 intent를 모든 apk에 브로드캐스트하게 된다. 즉, 드로저에서도 intent가 도착하면 스니핑이 가능하다는 것이다.
인시큐어뱅크 - Flawed Broadcast Receivers
intent를 사용하는 곳은 아주 많고 implicit 인텐트를 사용하는 곳도 많다.
브로드캐스트에 인텐트를 사용하는 곳은?
이 중에서 ChangePassword 를 타겟으로 해보자
ChangePassword
broadcastChangepasswordSMS 함수를 보면 intent에 theBroadcast 액션을 넣고 phonenumber와 newpass를 넣어서 브로드캐스트를 보낸다. 그리고 해당 함수는 postData -> doInBackground 에서 실행된다.
여기서 theBroadcast 액션은 1에서 본 친구랑 같이 exported=true 였기 때문에 밖으로 인텐트를 뿜뿜해준다.
그렇다면 이 브로드캐스트를 받아보자..
Exploit
run app.broadcast.sniff --action "theBroadcast" 로 드로저 앱에 리시버를 등록한다.
그리고 인시큐어뱅크에서 change password를 누를 경우 드로저에서 전화번호와 새 비밀번호를 확인할 수 있다.
(드로저 설치하고 직접 해보겠습니다..)
그렇다면 스니핑만 되냐? injection도 된다. (3-1과 동일)
run app.broadcast.send --action theBroadcast --extra string phonenumber 123456789 --extra string newpass supersecurepass
'모바일' 카테고리의 다른 글
[안드로이드 취약점 진단] 3-4. 로컬 암호화 이슈 (0) | 2022.06.11 |
---|---|
[안드로이드 취약점 진단] 3-3. 취약한 인증 메커니즘 (0) | 2022.06.11 |
[안드로이드 취약점 진단] 3-1. 브로드캐스트 리시버 결함 (0) | 2022.06.11 |
[안드로이드 취약점 진단] 2-3. 드로저(drozer) (0) | 2022.06.09 |
[안드로이드 취약점 진단] 2-2. adb (0) | 2022.06.09 |