Cross-Site Request Forgery(CSRF) 는 공격자가 서버에서 실행되는 악의적인 스크립트/파일을 업로드하면, 사용자가 이를 실행하면 공격자 대신 웹 서버에게 악의적인 요청을 전송하는 취약점이다. CSRF 를 통해 계좌 송금 내역을 변경해보자.
bee-box 환경에서 실습해보자!
Level - low
송금 요청 패킷을 잡아 url 을 복사한다.
위와 같이 img 태그를 이용하여 게시판에 글을 작성한다. 해당 글은 height 과 width 를 0 으로 설정했기 때문에 내용이 보이지 않는다.
해당 글을 열람한 뒤 계좌 정보를 가보니 100 EUR 가 감소한 것을 볼 수 있다.
Level - medium, high
token 값을 받아와 같이 전달하고 있다. 때문에 CSRF 공격이 불가능하다.
medium, high level 에서는 랜덤함수와 sha1 해시를 이용해 토큰 값을 만든다.
패스워드 힌트 변경 요청 때, 이 토큰 값을 hidden 값으로 같이 넘기고 있다.
토큰 값이 없거나 유효한 토큰 값이 아니라면 송금 절차를 진행하지 않는다. 때문에 송금 페이지에서만 송금을 진행할 수 있다.
대응 방안
1. 추측이 불가능한 별도의 토큰 값으로 인증 수행
2. Referer 검증
'웹 취약점(bee-box)' 카테고리의 다른 글
XML External Entitiy Attack (XEE) (0) | 2020.05.11 |
---|---|
CSRF (Change Secret) (0) | 2020.05.11 |
CSRF (Change Password) (0) | 2020.05.11 |
Broken Authentication - Password Attack (0) | 2020.04.16 |
Broken Authentication - Forgotten Function (0) | 2020.04.14 |