Bee-Box(비박스) CSRF

Bee-Box(비박스) CSRF

 

(1) Bee-Box에서 http://beebox/ 사이트로 이동하여 회원가입을 합니다.

 

(2) 계정이 잘 만들어졌는지 확인하기 위해 생성한 계정으로 로그인합니다.

bWAPP 로그인(test계정)

 

(3) 로그아웃 후 bee계정으로 로그인 합니다.

bWAPP 로그인(bee계정)

 

(4) Cross-Site Request Forgery(Change Password)로 이동합니다.

Cross-Site Request Forgery(Change Password) 문제로 이동

=> 패스워드 변경페이지를 보면 현재 패스워드를 입력하는 재인증을 위한 입력창이 존재하지 않음을 볼 수 있습니다.

 

(5) 패스워드를 password로 변경합니다.

패스워드 변경

=> 패스워드를 변경하는 중요 기능을 구현할 때 요청 주체 및 요청 절차를 확인하지 않고 요청을 처리(패스워드 변경)하고 있습니다.

=> 주소창을 확인해보면 정상적인 요청에 따른 절차인지 확인하는 토큰 값 또한 포함되어 있지 않음을 확인할 수 있습니다.

=> CSRF 취약점 존재

 

(6) 공격자 입장에서 패스워드 변경 요청을 발생시키는 코드를 작성합니다.

 

(6)-1 게시글을 작성하기 위해 Cross-Site Scripting - Stored(Blog)로 이동합니다.

Cross-Site Scripting - Stored(Blog)로 이동

 

(6)-2 HTML 태그가 입력되는지 확인합니다.

입력 > apple<u>underline</u>

=> HTML 태그가 작동되는 것을 확인할 수 있습니다.

 

(6)-3 패스워드를 자동으로 변경시키는 공격 코드를 입력합니다.

공격자 코드 > <iframe src="http://localhost/bWAPP/csrf_1.php?password_new=bug&password_conf=bug&action=change" width="0" height="0"></iframe>

공격구문 실행

 

(7) test 계정으로 로그인해서 게시글을 확인합니다.

확인할 때 Show all을 클릭하고 Submit을 클릭해야 다른 계정에서 작성한 게시글을 확인할 수 있습니다.

=> 블로그 내용을 확인하게 되면 현재 로그인한 계정(test)의 패스워드가 바뀝니다.

=> 4번째 게시글에 공격자의 코드가 포함되어 있기 때문입니다.

 

(8) 로그아웃 후 test 계정으로 재로그인합니다.

=> test / password로 로그인을 시도하면 실패합니다.

=> 공격구문이 실행되었기 때문에 비밀번호가 변경되었습니다.

 

test /bug로 로그인을 시도합니다.

로그인 시도
로그인 성공

=> test /bug로 로그인이 됩니다.

=> 공격자가 심어놓은 공격구문에 의해 비밀번호 변경됨을 확인