티스토리 뷰

Web/Concept

[Concept] CSRF (feat. dreamhack)

ch4njun 2020. 9. 17. 18:06
반응형
CSRF?
Cross Site Request Forgery의 약자로,
공격자가 악의적으로 사용자의 의도와 다르게 다른사이트에서 HTTP Request를 보내는 공격

 

공격자는 CSRF를 통해 Cookie/Session을 가져야만 사용할 수 있는 기능에 대해 Request를 보낼 수 있다.

 

CSRF 공격이 가능한 최소조건은 아래와 같다.

1. 해당 Web 페이지가 Cookie를 사용한 인증 방식이여야 한다. (Cookie에 Session값을 저장하는 것도 결국 Cookie를 사용한 방식이기 때문에 가능하다.)

2. 공격자가 사전에 알 수 없는 파라미터가 있으면 안된다. (자동입력방지문자, 패스워드 변경기능에서 기존 패스워드와 같은 항목이 이에 해당된다.)

 

 

아래 코드에 대해서 사용자가 실행하게되면 CSRF 취약점이 발생한다.

<img src='/sendmoney?to=slolee&amount=1337'>
<img src=about: onerror="fetch('/sendmoney?to=slolee&amount=1337')">
<link rel="stylesheet" href="/sendmoney?to=slolee&amount=1337">

 

CSRF의 경우 포인트는 XSS와 매우 유사하다. 그러나 사용자에게 그 포인트가 발생했을 때 동작하는 방식에 차이가 있다. XSS는 악성 Script가 실행되지만, CSRF는 서버에게 원하지 않는 HTTP Request를 보내게 된다.

 

따라서 포인트를 찾기 위한 방법과 여러 우회방법은 XSS에 대한 자료를 참고하자.

 

 


CSRF 방어

Session을 Cookie대신 커스텀 헤더를 사용해 사용자를 인증한다.

공격자가 예측할 수 없는 파라미터를 추가하고, 그에 대해 검증함으로써 CSRF 공격을 방어할 수 있다.

 

 

참고) 위 코드는 XSS 에서 소개하지 않은 코드이기 때문에 꼭 기억하자. 특히 fetch API 사용하는거.

반응형

'Web > Concept' 카테고리의 다른 글

[Concept] SQL Injection (feat. dreamhack)  (0) 2020.09.21
[Concept] CSP (feat. dreamhack)  (0) 2020.09.17
[Concept] XSS (feat. dreamhack)  (0) 2020.09.17
[Concept] Tunneling  (0) 2019.09.16
[Concept] Port Forwarding  (0) 2019.09.16
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함