입력값 검증 부재 취약점은 사용자로부터 입력받은 데이터를 제대로 검증하지 않아 발생하는 보안 취약점이다. 악의적인 사용자가 의도적으로 조작된 데이터를 입력하여 시스템 오류, 데이터 유출 등 다양한 문제를 일으킬 수 있다.
입력값 검증 부재의 대표적인 취약점으로 웹 해킹때 배웠던 SQL Injection과 XSS가 있다.
취약점을 찾아보자
목표 : 유저 이름을 모르는 상태로 모든 유저의 정보를 access 해야 한다. 유저는 총 3명이고, 단 한 번의 검색으로 모두 확인해야 한다.
의미 없이 123을 입력했떠니 not found라고 뜬다. 이 상태에서는 유저 정보도 모르고 아무것도 확인할 수 없으니 로그캣 정보를 이용해보기로 한다.
싱글쿼터를 넣고 검색했더니 로그캣에 SQL 쿼리문이 그대로 뜬다. 조건절을 참으로 만들면 모든 정보를 확인할 수 있을 것이다.
' or '1'='1를 검색해보자 (쿼리는 SELECT * FROM sqliuser WHERE user = '' or '1'='1'이 된다.)
세 명의 유저 정보가 모두 출력되었다.
apk 파일을 디컴파일해서 SQLInjectionActivity 파일을 확인해보니
모든 유저의 계정 정보가 하드코딩 되어있다.
대응방안
- Prepared Statement를 사용해서 SQL 쿼리와 입력 데이터를 분리하여 처리함으로써 악의적인 SQL 문이 실행되는 것을 방지
'모바일 앱 해킹' 카테고리의 다른 글
FridaLab 1 ~ 4 풀이 (0) | 2024.06.03 |
---|---|
Frida 기본 정리 | Frida란?, 기본 문법, CLI 활용 (2) | 2024.06.03 |
[DIVA] Insecure Data Storage - Part4 (안전하지 않은 데이터 저장) | 안드로이드 앱 취약점 실습 (0) | 2024.05.23 |
[DIVA] Insecure Data Storage - Part2 (안전하지 않은 데이터 저장) | 안드로이드 앱 취약점 실습 (0) | 2024.05.23 |
[DIVA] Insecure Data Storage - Part1 (안전하지 않은 데이터 저장) | 안드로이드 앱 취약점 실습 (0) | 2024.05.18 |