일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 웹 프레임워크
- 백엔드입문
- 가명정보처리
- 한국정보보호산업협회
- 무료교육
- function scope
- 유클리드_알고리즘
- 덧셈 암호
- 곱셈 암호
- 호이스팅
- 백엔드
- 한국산업인력공단
- 한국정보보호산업협회기자단
- node.js
- 개인정보보호교육
- 포너블
- 확장 유클리드 알고리즘
- package-lock.json
- 국가인적자원개발컨소시엄
- 디오판투스 알고리즘
- 모듈러 연산
- 마감임박
- Writeup
- 개인정보안전성
- pwnable.tw
- 개인정보보호위원회
- package.json
- 개인정보보호
- arrow function
- 동적타이핑
- Today
- Total
짱짱해커가 되고 싶은 나
[안드로이드 취약점 진단] 3-5. 액티비티 컴포넌트 취약점 본문
액티비티
액티비티는 AndroidMainfest.xml의 <activity>에 선언하며 하나의 앱은 하나 이상의 액티비티로 구성되어 있다.
이 중 하나의 액티비티를 MainActivity라고 하며 mainfest에 MainActivity로 선언한다.
각 액티비티는 독립적으로 동작하기 때문에 현재 액티비티에서 다음 액티비티를 실행이다.
-> 액티비티가 취약하게 선언되어 있다면 로직을 무시하고 공격자가 강제로 특정 액티비티를 호출하거나 권한이 없는 사용자가 특정 액티비티에 접근해서 권한 없이 특정 기능을 활성화할 수 있다.
인시큐어뱅크 - Vulnerable Activity Components
3-3과 동일한 내용이다.
AndroidMainfest.xml
<activity>로 선언되어 있으며 exported=true가 되어 있는 것들이 있다.
intent-filter가 없으면 default는 false지만 intent-filter가 있다면 default는 true가 된다는 것을 명심하자.
Exploit
비밀번호 변경을 시도해보자.
am start com.android.insecurebankv2/com.android.insecurebankv2.ChangePassword 로 해당 액티비티를 실행시킬 수 있다. 하지만, username 텍스트 필드가 비활성화되서 username을 입력할 수 없기에 비밀번호 변경이 불가능하다.
코드를 분석해보면 ChangePassword는 uname을 받아서 사용한다.
따라서 해당 클래스가 호출되는 곳을 찾아보면 (jadx에서 find-usage 기능을 사용할 수 있다.)
PostLogin 클래스에서 사용하는 것을 볼 수 있다.
PostLogin에서 uname 값을 넣어서 전달해준다.
따라서 공격을 할 때 intent로 uname값을 넣어주면 해결할 수 있다.
대응 방안
1. exported=false
2. 퍼미션 추가
3. 사용자 인증 절차를 추가해 인증되지 않은 사용자의 접근 차단
'모바일' 카테고리의 다른 글
[안드로이드 취약점 진단] 3-7. 에뮬레이터 탐지 및 우회 (0) | 2022.06.19 |
---|---|
[안드로이드 취약점 진단] 3-6. 루팅 탐지 및 우회 (0) | 2022.06.19 |
[안드로이드 취약점 진단] 3-4. 로컬 암호화 이슈 (0) | 2022.06.11 |
[안드로이드 취약점 진단] 3-3. 취약한 인증 메커니즘 (0) | 2022.06.11 |
[안드로이드 취약점 진단] 3-2. Intent Sniffing and Injection (0) | 2022.06.11 |