Bee-Box(비박스) CSRF
(1) Bee-Box에서 http://beebox/ 사이트로 이동하여 회원가입을 합니다.
(2) 계정이 잘 만들어졌는지 확인하기 위해 생성한 계정으로 로그인합니다.
(3) 로그아웃 후 bee계정으로 로그인 합니다.
(4) Cross-Site Request Forgery(Change Password)로 이동합니다.
=> 패스워드 변경페이지를 보면 현재 패스워드를 입력하는 재인증을 위한 입력창이 존재하지 않음을 볼 수 있습니다.
(5) 패스워드를 password로 변경합니다.
=> 패스워드를 변경하는 중요 기능을 구현할 때 요청 주체 및 요청 절차를 확인하지 않고 요청을 처리(패스워드 변경)하고 있습니다.
=> 주소창을 확인해보면 정상적인 요청에 따른 절차인지 확인하는 토큰 값 또한 포함되어 있지 않음을 확인할 수 있습니다.
=> CSRF 취약점 존재
(6) 공격자 입장에서 패스워드 변경 요청을 발생시키는 코드를 작성합니다.
(6)-1 게시글을 작성하기 위해 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로 로그인이 됩니다.
=> 공격자가 심어놓은 공격구문에 의해 비밀번호 변경됨을 확인