Web Hacking Study/수업 정리

[8주차] CSRF 정리 & 문제풀이, 대응방안

silver surfer 2022. 5. 20.

* 컨퍼런스

> 꼭! 시간이 되면 참여하기

> 코드게이트(연 초), POC, 화이트햇 콘테스트

 

** CSRF

피해자가 임의로 어떤 요청을 하게 만드는 것

ex) 비밀번호 변경, 돈 송금, 게시글 작성, 계정 생성 etc..

 

** 대응방안

1) 웹 메서드 변경: GET → POST

GET: URL 링크로 공격

 

▷ 우회 포인트

> POST 방식으로 보낸다. form 태그를 작성해서 공격을 수행한다 (XSS)

 

form 태그 전송 방법

① 클릭을 유도하는 방식

ex)

<form action = "~~" method ="post">
    <input ~>
    <input type = "submit" value = "Click Me!"> 
</form>

 

② 전송 자동화

onload라는 eventhandler 사용 → 이 태그들이 load 되면 바로 특정 form이 전송된다

<body onload="">
<form action = "~~" method ="post">
    <input ~>
    <input type = "submit" value = "Click Me!"> 
</form>

 

③ Stealth 버전

타겟 지정

<iframe>
<form action = "~~" method ="post" target="~">
    <input ~>
    <input type = "submit" value = "Click Me!"> 
</form>

xss, csrf는 프론트엔드를 더 많이 알아야한다 (ex.javascript)

 

이런 식으로 우회가 가능하기 때문에 제대로 된 대응방안이 아니다.

 

 

2) Referer 검증

> Referer 헤더 검증

→ Referer 헤더를 엄격하게 검증하면 CSRF 문제가 없다

 

▷ 우회 포인트

① Referer 체크를 도메인 단위로 하는 경우, 같은 도메인에서 XSS 취약점이 발견되면 우회가 가능하다

Referer이 상세 페이지가 아닌 도메인만 검증하는 경우가 있다

ex) http://normaltic.com/asdfasd (제거)  

http://normaltic.com (검증)

 

②  Referer가 없는 경우, 처리해주면 → 우회 가능 (false-positive)

Referrer 없애고 보내는 법

<meta name="referrer" content="no-referrer">

 

 

3) CSRF 토큰

→ 서버에서 응답할 때마다 랜덤한 난수값 생성 : asdfqfew13rkwefasd2r642

→ 세션에 token=asdfqfew13rkwefasd2r642

→ 응답할 때, 이 난수값을 같이 보내준다

<form>
    <input token=asdfqfew13rkwefasd2r642>
</form>

토큰 비교 → 똑같으면 처리하고 다르면 처리해주지 않는다.

 

▷ 우회 포인트

① CSRF 토큰을 적용하지 않은 곳, 일회용이 아닌 곳

 공격자가 CSRF 토큰을 가져오고 스크립트에 적용할 수 있다

 

② CSRF 토큰이 세션에 연결되지 않은 경우

ex) 개발자가 CSRF Token Table에 Token 값을 저장할 때

 공격자가 CSRF 토큰을 가져오고 스크립트에 적용할 수 있다

 

③ XSS

→ XSS이 되면 CSRF 토큰을 써도 무조건 우회가 된다

iframe으로 CSRF 토큰을 가져와서 form 태그를 작성한다

 

XSS는 웬만하면 있을 수 있다

 

 

4) Captcha

→ 로봇이 아닙니다 뭐시기

→ CSRF 공격을 막기위해 나온 것이 아니다

→ 자동화 공격을 막기 위한 것 (매크로 방지)

→ Challenge / Solve 기반, 해결한 정답 제출

 

▷ 우회 포인트

① Challenge가 세션에 묶여있지 않을 때

 공격자가 Challenge를 직접 풀고 풀이값을 Captcha 값으로 넣어 보낼 수 있다

 

CSRF 토큰도 자동화 공격을 막을 수 있기 때문에 Captcha보다 CSRF 토큰 쓰는 게 낫다

 

 

5) 인증 정보 추가

 비밀번호, OTP...

 

▷ 우회 불가능

댓글