인시큐어뱅크 활용 안드로이드 모의해킹 공부

취약한 인증 메커니즘

원준킹 2020. 12. 22. 19:20

취약한 인증 메커니즘

  • 어플리케이션 사용시 약한 인증 관리로 침해돼선 안될 부분이 침해되어 사용자에게 피해를 입히는 취약점
  • Insecurebankv2 앱의 Transfer 기능은 약한 사용자 인증으로 인해 From 값을 변조하여 다른 사람의 계좌에서 돈을 보낼 수 있는 취약점이 존재

진단방법

  • SQLiteBrowser를 활용하여 서버의 DB 점검
  • Transfer 기능을 담당하는 컴포넌트의 소스코드 점검
  • Insecurebankv2의 서버인 app.py의 소스코드 점검

 

  • SQLiteBrowser를 활용하여 서버의 DB 점검

서버의 db파일

돈을 송금하는 계좌를 별도의 인증없이 다른 유저의 계좌로 바꿀 수 있음

  • Transfer 기능을 담당하는 컴포넌트의 소스코드 점검

전송 버튼

안드로이드 클라이언트 측에서는 그냥 로그인 정보 패킷만 전송하는 걸로 판단, 서버 코드 점검

안드로이드에서 서버의 dotransfer 함수 호출하기 위해 메시지 보내는 부분

피들러 안드로이드 avd에서 사용법

  • 안드로이드에서 : 네트워크->more->셀룰러, 모바일 네트워크 ->APN-> 피들러 동작 중인 컴퓨터 IP, 포트번호 입력
  • 피들러에서 : 리모트 컨트롤 옵션 on, 피들러 옵션->커넥션->포트 8080으로 변경, 8888은 인시큐어뱅크에서 사용중이니까

송신 계좌 인증관련 코드 추가 필요

대응방안

  • Insecurebankv2의 서버인 app.py에서 인증관련 코드 추가
  • 클라이언트에서는 인증 실패시 Fail 메시지가 나오도록 코드 수정
     인시큐어뱅크에서는 인증 성공 여부가 서버에서 오기 때문에 별도의 Fail 메시지 추가 필요없음

 

  • Insecurebankv2의 서버인 app.py에서 인증관련 코드 추가

 

 

정상적으로 Get Accounts에서 자신의 계좌번호를 받아와 Transfer할 때

임의로 계좌번호를 바꿔서 Transfer할 때