본문 바로가기

모바일 해킹/안드로이드

파라미터 조작 - 버프스위트

안녕하세요 이번에는 저번 포스팅에서 간단하게 조작을 해봤었는데요.

이번에 한 번 제대로 조작을 해서 저희가 원하는 공격을 해보겠습니다.

 

버프 스위트와 녹스 키시고 연결하시고 python app.py로 인스큐어 뱅크 키고 난 뒤에 실습 진행하시면 됩니다.

 

행여나 버프 스위트와 녹스랑 연결 안 하신 분들은 전 포스팅을 참고해서 연결 하고 오셔야만 합니다!

 

-계좌로 금액을 보낼 때 금액 조작해서 보내보기

 

저번 포스팅에서 해보았죠?

이번에는 부연 설명도 붙여가면서 실습을 해보겠습니다.

 

버프스위트에 intercept on으로 하시고

 

중간에서 데이터를 볼겁니다

 

인스큐어 뱅크 로그인 하시고 Transfer 메뉴에서 한 번 금액을 적어서 보내보겠습니다.

 

 

소소하게 만 원만

 

 

그럼 버프 스위트에서 요청을 볼 수 있습니다.

 

 

8888888 계좌에서 6666666으로 10000원 보낸다 의미죠

 

그럼 10000원 말고 1000000원으로 수정하고 보내보겠습니다.

 

 

이렇게요 수정하고 forward 누르면 됩니다.

 

그럼 서버 응답까지 intercept 되어서 볼 수 있는데 보시면 

만약 안보이신 다면 방금 데이터 수정하시고 forward 누르시기 전에 우클릭 -> Do intercept -> Response to this request 하시면 됩니다.

응답에서도 10000000이 성공적으로 보내졌다고 말하네요

 

그럼 앱에 View Statement 매뉴 통해 제가 보낸 금액을 확인 해보겠습니다.

 

오호..

 

저는 분명히 10000000을 보냈는데 저기서는 10000이 보냈다고 나오네요!

 

그럼 둘 중 하나 입니다. 요청을 보내기 전에 저희가 적은 값을 여기다가 작성한 후 보내느냐

아니면 이미 적은 값으로 고정시킨 뒤 보내서 요청에 수정을 해도 고정 값으로 보내느냐 입니다.

 

직접 계좌를 봐야지만 알겠지만 제가 봤을 땐 후자 일 가능성이 큰 거 같습니다.

보통 거래가 성공해야지만 기록에 남기도록 코딩을 하잖아요. 성공하기 전에 기록하는 경우는 매우 드뭅니다.

 

그러니깐 저희는 Tranfers 보낼 때 금액을 조작하고 보내는데 아무런 반응이 없으니

amount 파라미터에 데이터 조작이 불가능 하다는 것을 알 수 있습니다.

 

계좌 파라미터를 바꿔서 보내도 서버에서 에러가 나면서 안되는 것을 확인 할 수 있습니다.

 

 

- 비밀번호 변경 요청 조작

 

그럼 이번에는 비밀번호 변경 요청을 할 때 파라미터를 조작해보겠습니다

 

마찬가지로 intercept on 키신 다음, Change password 메뉴에서 dinesh 아이디의 비밀번호를 변경해보겠습니다.

 

아이디와 변경할 패스워드를 전송하네요

 

이때 인스큐어 뱅크 앱에 기본적으로 제공하는 dinesh 아이디와 jack이라는 아이디가 있습니다.

dinesh를 jack으로 변경한 뒤에 보내보겠습니다.

 

 

되면 큰일이겠죠 jack이라는 다른 아이디의 비밀번호 변경하는 거니깐요

 

forward

 

응답으론 성공이라고 나오네요

그럼 로그인을 해보겠습니다

intercept off로 하고

 

앱을 껐다 키고 로그인을 jack으로 변경한 비밀번호로 해보겠습니다.

 

과연?

 

성공!

 

서버로그에도

 

jack으로 로그인 성공

 

로그인이 정상적으로 성공했다고 나오네요.

 

비정상적으로 비밀번호를 변경을 할 때 조작해서 다른 아이디의 비밀번호를 변경했는데 됬습니다.

 

그럼 이건 취약점이죠. 매우 위험한 취약점입니다.

 

 

-대응 방안 

 

파라미터 값을 암호화해서 조작이 불가능하게 해야합니다.

또한 세션 값 검증 통해 다른 사용자 계정에 대한 조작이 불가능 해야합니다.

파라미터 조작 통한 입력 값의 유효성 검증은 서버에서 해야합니다.

민감한 데이터 통신은 HTTPS 통신 이용합니다.

비밀번호 변경 요청을 할 때 전 비밀번호까지 입력하게 해서 인증 과정을 추가합니다.