보안 공부/모바일 보안

안드로이드 취약점 진단(3) - 액티비티 컴포넌트 취약점

H.J.World 2024. 2. 19. 20:30
728x90
반응형

액티비티란 애플리케이션 실행 시 나타나는 화면이라고 생각하면 좋다.

안드로이드 모바일 앱은 " 메인 액티비티" 가 존재하고 메인 액티비티는 애플리케이션 시작 시 나타는 화면이다.

새로운 액티비티가 나오게되면 이전 실행되었던 액티비티는 잠시 멈추고 새로운 액티비티가 실행된다.

그리고 뒤로가기 실행 시 세컨 액티비티는 사라지고 메인 액티비티가 나오게된다.

 

해당 취약점은 권한이 없는 사용자가 특정 액티비티에 접근하여 권한 없이 특정 기능을 활성화 할 수 있는 취약점을 말한다.

 

-- 취약점 진단 방법 --

1.  androidmanifest.xml 확인

<application android:allowBackup="true" android:debuggable="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Holo.Light.DarkActionBar">
                
        <activity android:label="@string/app_name" android:name="com.android.insecurebankv2.LoginActivity">
                        
            <intent-filter>
                                
                <action android:name="android.intent.action.MAIN"/>
                                
                <category android:name="android.intent.category.LAUNCHER"/>
                            
            </intent-filter>
                    
        </activity>
                
        <activity android:label="@string/title_activity_file_pref" android:name="com.android.insecurebankv2.FilePrefActivity" android:windowSoftInputMode="adjustNothing|stateVisible"/>
                
        <activity android:label="@string/title_activity_do_login" android:name="com.android.insecurebankv2.DoLogin"/>
                
        <activity android:exported="true" android:label="@string/title_activity_post_login" android:name="com.android.insecurebankv2.PostLogin"/>
                
        <activity android:label="@string/title_activity_wrong_login" android:name="com.android.insecurebankv2.WrongLogin"/>
                
        <activity android:exported="true" android:label="@string/title_activity_do_transfer" android:name="com.android.insecurebankv2.DoTransfer"/>
                
        <activity android:exported="true" android:label="@string/title_activity_view_statement" android:name="com.android.insecurebankv2.ViewStatement"/>

- <activity> 내 선언되어 있는 액티비를 확인

- android:name 속성은 액티비티 이름, 속성 값은 "com.android.insecurebankv2.ChangePassword"와 같이 선언

 

2. ADB를 사용해 액티비티 취약점 확인

명령어 : adb shell am start -n com.android.insecurebankv2/.ChangePassword

 - '-n' 명령어 뒤로 "패키지명/.액티비티 경로"를 입력

 

3. 드로저를 사용해 액티비티 취약점 확인

 >> 노출된 액티비티 확인

 

명령어 : run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.ChangePassword

 >> 액티비티 실행 확인

 

명령어 : run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.ChangePassword --extra string uname jack

user name에 "jack"이라는 stirng 값을 넣어서 실행 시키는 방법

 

4. 대응 방안

- exported="false"로 선언

- 특정 퍼미션을 주고 권한을 가진 사람만이 액티비티를 사용할 수 있도록 설정

728x90
반응형