Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Archives
Today
Total
관리 메뉴

의미없는 블로그

[Android] 인텐트 취약점 본문

# 나/nnobile (AOS, iOS)

[Android] 인텐트 취약점

SaltLee 2023. 12. 7. 11:30

AndroidManifest.xml 에서 스키마 존재할 때

am start -n [패키지명]/[액티비티명] -d [스키마]

인텐트에 대한 검증이 없으면 타 사이트로 리다이렉트 시킬 수 있다 (취약)

공격자가 해당 인텐트 호출하는 페이지 만들어서

클릭하면 타 사이트(ex. 악성 사이트)로 넘어가게끔 할 수 있다

↓ 요거 클릭하면 네이버로 넘어가게

 

인텐트에서 넘어가는 값에 대해 잘 검증해야 한다

getIntent() 같이 인텐트 받아오는곳 위주로 봐야 하는데

 

1. 스키마(wxxxx)가 있는 액티비티(SchemeInterfaceActivity.class)를 열어서

2. 액티비티(SchemeInterfaceActivity.class) 에서 OnCreate 를 찾는다

Intent intent = getIntent(); 인텐트 선언하고

intent.getDataString(); 으로 인텐트 받아온다 (-d 로 받아오는 값)

sendScheme(str) 로 보내고

sendScheme(str) 은 브로드캐스트(ShoppingSchemeBroadCastReceiver.class) 로 보내고 있네 

3. 브로드캐스트(ShoppingSchemeBroadCastReceiver.class) 에서 OnReceive 로 받는다

str 이 위에서 전달한 값이잖아

str 값이 있으면 ShoppingSchemeController.init(str) 하고 있다

아래 코드들은 브로드캐스트 처리하는 그런건가?

4. ShoppingSchemeController.class 는 SchemeActionController 상속 받고 있어서

5. SchemeActionController.class 에 init() 있다

parseData() 부른다

parseData() 는 입력값에서 getMethodName() 뽑아내서 str 에 담는데

입력값 형태가 wxxxx://aaaa?bbbb=&cccc=&dddd=... 이런식이잖아

그래서 getMethodName() 하면 str = aaaa 가 된다

str = moveTab 일때 hashMap 에서 index, url 값 뽑아다가 

뒤에 어딘가에서 갖다 쓰니까 실행되는거겠지..

넘 힘들어서 몬보게따

무튼 그래서 wxxxx://moveTab?url= 하거나 wxxxx://execute?url= 하면 인텐트 실행된다

 

디컴파일 할때 enjarify 가 잘 안나올 때 있다..

수동으로 디컴파일 하거나 apkautotool 사용해서 보기..

 

getLongExtra() 요런것도 있는데

나중에 긔긔

Comments