이번에는 XSS를 이용하여 사용자 계정을 탈취하는 방법에 대해 정리하려고 한다.
보통 XSS 공격은 세션 및 쿠키값 탈취, 피싱 사이트 유도, 악성코드 배포로 많이 알고 있겠지만
로그인 페이지에서 XSS 취약점이 발생할 경우 사용자 ID, PW를 탈취할 수 있다.
대부분의 로그인 기능은 URL Redirect 기능을 가지고 있다. 먼저 이 기능이 왜 필요한지부터 알아야 할 필요가 있다. 로그인 하지 않은 사용자가 마이페이지 메뉴에 접근하게 되면 로그인 페이지로 이동 시킨다. 그리고 사용자가 로그인 하게 되면 어떻게 되는가? 당연히 마이페이지로 이동한다.
그런데 왜.? 마이페이지로 이동할까 로그인 했으니 메인페이지로 가야하는거 아닌가? 이유는 서비스 하는 곳에서 사용자 편의를 위해 마지막으로 접근한 메뉴로 자동으로 이동 시키는 것이다.
위 그림은 해당 기능에서 특수문자 필터가 미흡한 것을 보여주고 있다.
자세히 보면 form태그에 ">XSS가 삽입된 것을 확인할 수 있다.
그렇다면 계정 탈취는 비교적 쉽게 이루어 질 수 있다.
기존에 존재하던 form태그를 닫고 그 뒤에 새로운 form태그를 열어 action값에 공격자의 주소가 담긴 페이지를 삽입하면 된다. 이렇게 되면 로그인 버튼을 눌렀을 때 form태그 안에 있는 모든 데이터들은 공격자의 서버로 넘어가게 된다.
로그인을 하게되면 공격자의 서버로 계정 정보가 넘어가게 되지만 이러한 방법으로 계정 탈취가 이루어지려면 몇가지 조건이 필요하다.
1. 로그인 페이지에서 특수문자 제한 없이 스크립트를 삽입할 수 있어야 한다.
2. 로그인 시 종단간의 암호화가 되어있지 않아야 한다.
현재 예제는 form태그 뒤에서 스크립트가 삽입되어서 간단하게 진행이 되었지만
input 태그에서 발생 하였다면 코드를 새로 만들어야 하기에 진단자의 스킬이 중요하다.