본문 바로가기
3. 웹 애플리케이션 취약점 진단/비박스를 활용한 웹 애플리케이션 취약점 진단

[비박스를 활용한 웹 취약점 진단] 12-2. 크로스 사이트 요청 변조(CSRF) [Transfer Amount]

by Robert8478 2023. 12. 14.

[난이도 하]

이번 페이지는 계좌이체 기능을 제공한다. 현재 계좌의 돈이 1000 EUR이다. CSRF 취약점을 이용해서 계좌에 있는 돈을 수정해보자. GET 방식이기에 account와 amount 변수를 노출하고 있다. 악성 img 태그를 만들어 htmli_stored 페이지에 올려보자.

<img src="http://192.168.56.102/bWAPP/csrf_2.php?account=152-48624-42&amount=-100&action=transfer" width="0" height="0"> 

악성 img 태그를 삽입해 주었다. -값을 넣어줌으로써 계좌의 돈이 증가할 것이다. 이제 계좌의 돈을 확인해보자.

계좌의 금액이 100유로가 증가하였다.

그리고 게시판 페이지에 사용자가 방문할 때마다 100유로가 증가하고 있는것을 볼 수 있다. 이 금액을 이제 다른 계좌로 강제 이체 시켜보자.

<img src="http://192.168.56.102/bWAPP/csrf_2.php?account=111-11111-11&amount=6000&action=transfer" width="0" height="0"> 코드를 이용, 111-11111-11 계좌에 6000 유로를 강제 이체시키고 계좌의 남은 잔액을 보니 -4300이 된 것을 확인할 수 있다.

[대응방안]

난이도 중 이상부터는 token값을 이용하기 때문에 계좌에 들어있는 금액과 관련한 변수가 드러나지 않는것을 볼 수 있다.

계좌 이체는 생성한 토큰이 일치할 때만 가능한데, 중복된 토큰을 사용하지 못하므로 계좌번호를 변경할 수 없다. 

그러나 high 레벨도 이체할 금액에 마이너스값은 입력할 수 있기 때문에 입력값을 필터링하여 금액이 더 늘어나지 않도록 방어해야한다.

값에 -600을 넣었더니 계좌 금액이 증가한 것을 볼 수 있다.