안녕하세요 이번에는 저번 포스팅에서 간단하게 조작을 해봤었는데요.
이번에 한 번 제대로 조작을 해서 저희가 원하는 공격을 해보겠습니다.
버프 스위트와 녹스 키시고 연결하시고 python app.py로 인스큐어 뱅크 키고 난 뒤에 실습 진행하시면 됩니다.
행여나 버프 스위트와 녹스랑 연결 안 하신 분들은 전 포스팅을 참고해서 연결 하고 오셔야만 합니다!
-계좌로 금액을 보낼 때 금액 조작해서 보내보기
저번 포스팅에서 해보았죠?
이번에는 부연 설명도 붙여가면서 실습을 해보겠습니다.
버프스위트에 intercept on으로 하시고
인스큐어 뱅크 로그인 하시고 Transfer 메뉴에서 한 번 금액을 적어서 보내보겠습니다.
그럼 버프 스위트에서 요청을 볼 수 있습니다.
그럼 10000원 말고 1000000원으로 수정하고 보내보겠습니다.
그럼 서버 응답까지 intercept 되어서 볼 수 있는데 보시면
만약 안보이신 다면 방금 데이터 수정하시고 forward 누르시기 전에 우클릭 -> Do intercept -> Response to this request 하시면 됩니다.
그럼 앱에 View Statement 매뉴 통해 제가 보낸 금액을 확인 해보겠습니다.
저는 분명히 10000000을 보냈는데 저기서는 10000이 보냈다고 나오네요!
그럼 둘 중 하나 입니다. 요청을 보내기 전에 저희가 적은 값을 여기다가 작성한 후 보내느냐
아니면 이미 적은 값으로 고정시킨 뒤 보내서 요청에 수정을 해도 고정 값으로 보내느냐 입니다.
직접 계좌를 봐야지만 알겠지만 제가 봤을 땐 후자 일 가능성이 큰 거 같습니다.
보통 거래가 성공해야지만 기록에 남기도록 코딩을 하잖아요. 성공하기 전에 기록하는 경우는 매우 드뭅니다.
그러니깐 저희는 Tranfers 보낼 때 금액을 조작하고 보내는데 아무런 반응이 없으니
amount 파라미터에 데이터 조작이 불가능 하다는 것을 알 수 있습니다.
계좌 파라미터를 바꿔서 보내도 서버에서 에러가 나면서 안되는 것을 확인 할 수 있습니다.
- 비밀번호 변경 요청 조작
그럼 이번에는 비밀번호 변경 요청을 할 때 파라미터를 조작해보겠습니다
마찬가지로 intercept on 키신 다음, Change password 메뉴에서 dinesh 아이디의 비밀번호를 변경해보겠습니다.
이때 인스큐어 뱅크 앱에 기본적으로 제공하는 dinesh 아이디와 jack이라는 아이디가 있습니다.
dinesh를 jack으로 변경한 뒤에 보내보겠습니다.
forward
그럼 로그인을 해보겠습니다
intercept off로 하고
앱을 껐다 키고 로그인을 jack으로 변경한 비밀번호로 해보겠습니다.
서버로그에도
로그인이 정상적으로 성공했다고 나오네요.
비정상적으로 비밀번호를 변경을 할 때 조작해서 다른 아이디의 비밀번호를 변경했는데 됬습니다.
그럼 이건 취약점이죠. 매우 위험한 취약점입니다.
-대응 방안
파라미터 값을 암호화해서 조작이 불가능하게 해야합니다.
또한 세션 값 검증 통해 다른 사용자 계정에 대한 조작이 불가능 해야합니다.
파라미터 조작 통한 입력 값의 유효성 검증은 서버에서 해야합니다.
민감한 데이터 통신은 HTTPS 통신 이용합니다.
비밀번호 변경 요청을 할 때 전 비밀번호까지 입력하게 해서 인증 과정을 추가합니다.
'모바일 해킹 > 안드로이드' 카테고리의 다른 글
취약한 인증 메커니즘 액티비티 노출 취약점 분석 - Drozer 이용 (0) | 2023.09.22 |
---|---|
Drozer (설치) (0) | 2023.09.22 |
암호화 통신 여부 확인 - 버프 스위트, 와이어샤크 (0) | 2023.09.18 |
취약한 로깅 메커니즘 - 로그캣(logcat) (0) | 2023.09.18 |
앱 해킹 외부 저장소 진단 (0) | 2023.09.15 |