사용자가 사이트에 정상적으로 로그인한 상태에서
해커가 보낸 피싱 링크를 클릭하면
로그인 되어 있던 사이트의 패스워드를 자동으로 변경되는 해킹 공격이다.
이후부터 해커가 변경된 패스워드로 계정에 접속할 수 있다.
필수조건 : 링크를 클릭하는 시점에 사이트에 사용자가 로그인 되어있어야 한다.
변경하고 Proxy > HTTP Proxy 에서 확인했을 때 하이라이트 표시한 요청의 첫번째 줄에보면
password_new=smit19&password_conf=smit19&Change=Change
라는 요청이 있다. 이는 패스워드를 변경하는 코드이다.
그리고, line 15의 다음과 같은 코드(Cookie)는 로그인이 되었을 때 나타는 것으로, CSRF 공격에서 반드시 필요하다.
Cookie: security=low; PHPSESSID=ekiv8q5d5a6eqnrrecpilhn827
다음 링크에서 csrf.html 으로 들어간다.
https://github.com/secuacademy/webhacking
RAW 를 누른 다음, 링크 복사 후 터미널에서 다음 명령을 입력한다.
> wget 링크주소
파일을 다운로드 받은 후, /opt/lampp/htdocs
로 이동시켜준다.
> cp csrf.html /opt/lampp/htdocs
nano 편집기로 csrf.html 파일을 보면, 새로운 패스워드를 hacker로 바꾸는 코드라는 것을 알 수 있다.
password_new=hacker&password_conf=hacker&Change=Change
이제 나에게 해킹 링크(csrf.html)가 담긴 메일을 보내고, DVWA에 로그인 한 상태에서 다른 탭으로 메일의 링크를 클릭해 나의 DVWA를 해킹해 보겠다.
(이때, Burp Suite 자체 웹에서는 보안상의 문제 때문에 구글로 로그인이 안되었다. 따라서 네이버 메일로 진행하였다)
위 링크를 누르면, 다음 화면이 뜬다.
Click 링크를 클릭한 후, DVWA에서 로그아웃하고 원래의 비밀번호(smit19)로는 로그인이 안되고, hacker 로 로그인이 되어야 하는데 나는 원래 비밀번호대로 로그인이 잘 되어, 이유를 알아보았다.
원래 로그인코드(왼)와 해킹으로 접속한 파일(오) 인데, 쿠키도 생략되어있고 빠진 코드가 많아서 그랬던 것 같다.
csrf.html 코드를 보완한 후에 다시 공격을 시도해봐야겠다.
(1) impossible 단계 : 현재 비밀번호를 입력해야 새로운 비밀번호를 설정할 수 있게 해둔다.