| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- sql injection
- 쿠키변조
- bandit #밴딧 #웹해킹 #해킹 #화이트해커 #공부 #스터디 #IT #hacking #linux #openssl #nmap
- androGoat
- msfconsole #heartbleed #247ctf #misc #webhacking
- 리눅스
- androidhacking
- 안드로이드 모의해킹
- Bandit
- pentest
- time-based
- 모의해킹
- 밴딧
- error-based
- Linux
- 취약점 진단
- Today
- Total
d0r1
[androgoat] Insecure Data Storage 본문
insecure data storage
안전하지 않은 데이터 저장공간

1. shared preferences - part 1

이 둘 중 하나일 것으로 보입니다
먼저 두 개 다 확인해보도록 합시다

우선 어플을 열고 save를 누르면 어떤 반응이 나오는지 확인해보았더니
"data saved"라는 알림이 발생됩니다
또한, 문제의 제목에서 shared preferences 라는 것에 의해
힌트를 얻을 수 있는데,
| SharedPreferences는 안드로이드 앱의 데이터를 키-값 쌍으로 저장하기 위한 기본적인 데이터 저장 방식 중 하나입니다. 이 데이터는 해당 앱 내에서만 접근 가능하며 다른 앱에서 공유되지 않습니다. |
즉, 앱 내에 해당 저장공간이 존재하고 있음을 확인할 수 있습니다

해당 부분을 확인해보면

users.xml 이라는 파일이 존재하고 있음을 확인할 수 있고
해당 파일을 확인해보면

password와 username이 저장되고 있음을 확인할 수 있습니다
앱에서 그럼 값을 넣은 다음 확인을 해보도록 해보겠습니다


값이 저장되는 모습을 확인할 수 있습니다
2. shared perferences - part 2

다음 레벨로 가기 위해서는 10000 포인트가 필요한데, score를 누를때마다 1 포인트를 지급합니다
그러나, 10000번을 누르지는 말라고 합니다

이 또한, 한번 클릭시 shared_prefs에 생성되므로 ls 를 통해 확인할 수 있습니다

vi 에디터를 사용하여, score를 수정해준 다음, 앱을 재시작하여 버튼을 누르게되면

다음과 같이, 게임을 이겼다고 메시지가 전환됩니다
3. SQLite


파일을 확인해보면, aGoat라는 이름으로 데이터베이스 파일이 생성되고 있음을 확인할 수 있습니다.

이를 토대로 find 명령어를 통해 aGoat의 위치를 파악해보니, /data/data/owasp.sat.agoat/databases/에 위치하고 있음을 확인할 수 있습니다.

해당 디렉터리를 확인해보았더니, 3개의 파일이 존재했습니다.
|
- chatgpt
파일들은 다음과 같았습니다.
즉, aGoat를 제외한 파일들은 aGoat를 관리하기 위한 파일들로 보입니다.
aGoat는 sqlite로 작성되었으므로, sqlite 명령어를 통해 확인할 수 있습니다.

4. tempfile


onclick 이벤트 발생 시, users+tmp라는 이름으로 파일을 만들고 있음을 확인할 수 있습니다.
username과 password를 입력하고 save를 진행하면

다음과 같이 username과 password를 담고 있는 파일이 생성되었음을 확인할 수 있습니다
5. external storage - sdcard

외부 저장소에 값이 저장되는 듯 합니다

또한 코드를 분석해보면, getExternalStorageDirectory에 의해 외부 저장소의 루트폴더에 저장되고 있음을 확인할 수 있습니다.
우선 값을 입력해보겠습니다

다음과 같은 값을 입력했음에도 불구하고, 아무런 알림이 발생하지 않았습니다.
왜 그런가 확인해보았더니, 권한을 부여하지 않았기 때문이었습니다

권한을 부여하고, 다시 시도를 해보겠습니다

그랬더니, 정상적으로 저장되었음을 확인할 수 있었습니다.
우선 sdcard가 문제 이름이므로, sdcard로 이동하여 파일들을 확인해보겠습니다

앞서 봤던 tmp파일이 존재하고 있음을 확인할 수 있습니다
해당 파일을 열어보겠습니다

입력한 username과 password가 기록된 모습을 확인할 수 있습니다.
'모바일 진단 > Android' 카테고리의 다른 글
| [androgoat] HardCode Issue (0) | 2023.10.25 |
|---|---|
| [androgoat] side channel data leakage (0) | 2023.10.24 |
| [androgoat] Input Validations (0) | 2023.10.24 |
| [DROZER] 설치 (0) | 2023.10.20 |
| [androgoat] HTTP/HTTPS (0) | 2023.10.20 |