[IT] XSS, CSRF

노유성·2023년 7월 31일
0
post-thumbnail

XSS(Cross-Site Scriping)

SQL Injection과 마찬가지로 웹에서 가장 기초적인 공격이며, 악의적으로 사용자가 공격하려는 사이트에 스크립트를 끼워넣는 것을 의미한다. 이런 공격은 웹 어플리케이션이 사용자가 보낸 데이터를 검사하지 않은 채로 데이터를 저장할 때 발생한다. 이렇게 공격에 성공하면 해당 사이트에 접속하는 사용자는 삽입된 코드를 실행하게 되며 쿠키나 세션등 민감한 정보를 탈취당한다. XSS 공격은 js를 이용하는 경우가 굉장히 많다. 게시판이나 댓글에 스크립트를 집어넣는 경우도 있고 닉네임에도 데이터를 집어넣는 경우도 있다.

XSS는 공격 방법에 따라서 2가지로 종류가 나뉜다.

Stored XSS

가장 일반적인 XSS 공격으로 스크립트를 웹서버의 DB에 저장하고 해당 DB에 저장된 내용을 다른 사용자들이 요청을 하면 그 때마다 해커가 심어놓은 스크립트를 실행하게 되는 것이다.

Reflexed XSS

URL의 query string의 값을 임의로 조작해서 공격하는 방식이다.

$ curl http://vulnerable-site.com/query?keyworkd=<script>malicious-script-code</script>

위와 같이 악성 URL을 만든 다음에 일반적인 사용자에게 제공한다. 사용자가 해당 링크를 클릭하면 사이트에게 사용자가 위 요청을 보내게 되고 해당 스크립트가 포함된 서버의 응답을 사용자가 받아서 실행을 하면 응답받은 정보가 해커에게 보내지게 되는 시나리오가 있다.

위 모든 상황은 결국엔 사용자가 서버(링크)를 신뢰하기 때문에 발생하는 경우이다. 이와 다르게 CSRF는 서버가 사용자의 브라우저를 신뢰하기에 발생한다.

CSRF(Cross-Site Request Fogery)

이 경우는 사용자가 자신의 의지와는 무관하게 해커의 의도대로 서버에 공격을 하게 되는 경우를 의미한다. 특정 웹서버가 특정 사용자를 신뢰한다는 가정 하에 사용자가 서버에 서버의 DB 데이터를 모조리 날려버리는 요청을 보냈다고 하자. 기존의 해커를 비롯한 다른 사용자들은 DB의 데이터를 날리는 요청을 보낼 수 없다. 하지만 서버가 신뢰하는 사용자가 보낸다면 할 수 있다. 이 점을 이용해서 해커가 서버에게 신뢰받는 사용자에게 공격을 하게 하는 URL을 클릭하게 하는 것이다. 이 경우에는 사용자가 웹 서버에게 많은 신뢰를 받고 많은 권한을 가질 수록 파괴력이 높아진다.

profile
풀스택개발자가되고싶습니다:)

0개의 댓글