XSS란?
XSS는 공격자가 Target Website를 통해 희생자의 브라우저에 악성 코드를 심는다. 희생자는 Target Website를 신뢰하므로 Target Website는 세션이 연결된 사용자가 할 수 있는 모든 것을 희생자의 브라우저에서 할 수 있다. 예를 들어 사용자의 쿠키 값을 가져올 수 있다.
Cross-Site Request란?
위 그림을 보면 Same-site request와 Cross-site request의 차이를 알 수 있다. A사이트의 페이지에서 A사이트에 요청을 보내면 Same-site request이고 A사이트의 페이지에서 B사이트에 요청을 보내면 Cross-site request이다.
여기서 문제점은 B사이트에서는 A사이트의 페이지에서 B사이트의 페이지에서 요청을 보냈는지 알 수 없다는 것이다. 따라서 만약 A사이트의 페이지가 해커에 의한 악성 웹사이트일 경우 B사이트는 악성 웹사이트인 A사이트의 페이지에서 온 요청과 B사이트의 페이지에서 온 요청을 구별할 수 없다는 문제점이 있다. 이러한 문제점을 이용하는 것이 CSRF 공격이다.
예를 들면 만약 www.bank32.com 이라는 인터넷 뱅킹 사이트가 있다고 가정하자. 사용자들은 각각 로그인과 동시에 세션 쿠키를 unique하게 받는다. 만약 사용자 A와 B가 있고 B의 계좌번호가 1234라고 가정하면 A는 B에게 500원을 송금하기 위해 아래와 같은 GET 방식의 요청을 웹서버에 보낸다.
http://www.bank32.com/transper.php?to=1234&amount=500
만약 제 3의 공격자 C가 이러한 요청을 변조하려고 할 때 사용자 A의 세션 쿠키 값이 없으므로 사용자 A의 쿠키 값이 필요하다. 따라서 공격자는 악성 웹사이트를 제작한 후 사용자 A가 공격자가 만든 악성 웹사이트 하이퍼링크를 클릭하면 자동으로 http://www.bank32.com/transper.php?to=공격자&amount=500000 와 같은 요청이 발생하도록 하면 사용자 A의 쿠키 값이 패킷과 함께 웹서버에 전달되므로 50만원이 공격자의 계좌로 들어오게 된다.
XSS와 CSRF의 차이점
기본적으로 XSS는 Target Website를 통해 사용자를 공격하는 기법이고 CSRF는 사용자가 악성 웹사이트에서 희생자의 신분으로 Target Website에 위조된 요청을 보내어 서버를 공격하는 기법이다.
XSS는 Target Website에 악성코드가 심어져있는 경우 사용자는 악성코드가 심어진 페이지에 접근하면 사용자 브라우저는 서버에서 페이지의 코드를 가져오는데 악성 자바스크립트 코드도 같이 가져오기 때문에 사용자의 권한으로 할 수 있는 행동들을 자바스크립트 코드를 통해 실행할 수 있다. 따라서 사용자의 쿠키 값을 탈취할 수 있고 웹 페이지를 다른 fake 페이지로 변경할 수 있다.
CSRF 공격은 클라이언트의 권한 도용을 통해서 서버를 대상으로 공격한다. 희생자가 악성 웹사이트에 방문하면 사용자의 신분으로 Target Website에 위조된 요청을 보낸다. 서버에서 위조된 Cross-Site 요청을 알아채지 못하면 공격 성공이다.
'웹 해킹 > CTF' 카테고리의 다른 글
[HackCTF] Cookie (0) | 2021.10.17 |
---|---|
[HackCTF] 가위바위보 (0) | 2021.10.17 |
[HackCTF] Home (0) | 2021.10.17 |
[HackCTF] Input Check (0) | 2021.09.16 |
[HackCTF] Time (0) | 2021.09.16 |
댓글