CSRF (Cross-Site Request Forgery ) ?
- Cross-Site Request Forgery의 약어로 직역하면 사이트 간 요청 위조라는 의미
- 사용자의 의지와는 무관하게 공격자가 의도한 행위(게시글 작성, 수정, 삭제, 패스워드 변경 등)를 사용자의 권한으로 특정 웹 서버에 요청할 수 있는 취약점
- 보통 사회 공학 기법 중 하나인 피싱(Fishing)을 이용하여 악의적인 사이트를 전송하여 공격에 많이 이용한다.
DVWA 환경에서 CSRF 공격 실습
- 우선 본 실습에 앞서 실습 환경의 경우 리눅스 환경에서 DVWA 환경을 구축한 후 가장 취약한 환경인 Low 레벨 환경에서 실습을 진행하였습니다.
- 위 사진은 CSRF 공격 실습을 하기 위해 CSRF 탭에 들어온 모습
- 일반적인 패스워드 변경 기능이 있는 것을 확인할 수 있다.
- 해당 기능을 악용하여 CSRF 공격에 사용하기 위해 해당 패스워드 변경 요청이 어떠한 방식으로 웹 서버에 전송되는지 확인해보기 위해 Burp suite를 이용하여 패킷을 스니핑
- 확인해본 결과 CSRF 탭에서 패스워드 변경 텍스트란에 입력한 값이 password_new, password_conf 파라미터에 저장되고 change 파라미터와 함께 GET 메소드를 이용하여 서버에 전송하는 것을 확인할 수 있다.
- 해당 요청 정보를 이용해 공격자는 피해자(본인)에게 자신이 원하는 패스워드가 설정된 URL을 메일을 이용해 전달하게 됩니다.
- 예시로는 해킹 피해가 의심된다는 피싱 메일을 작성하고, 패스워드 변경 요청이 담긴 URL을 삽입하여 피해자에게 전송
- 해당 피싱 메일을 수신한 피해자는 아무런 의심 없이 해당 메일을 클릭하고 하이퍼링크가 설정된 텍스트를 클릭하는 순간 패스워드 변경 요청이 웹 서버로 전송되게 됩니다.
- 즉, 패스워드를 변경하는 요청이 웹 서버로 전송되어 피해자 계정의 패스워드가 공격자가 원하는 패스워드로 변경됩니다.
- 실제 해당 링크를 클릭하는 순간 DVWA의 CSRF 페이지가 나오며 CSRF 공격에 성공하여 Password Chagned 라는 문구가 출력되는 것을 확인할 수 있다.
CSRF 대응 방안
- 위와 같은 패스워드 변경 요청을 위조한 공격의 경우에는 기존에 사용하던 패스워드를 추가적으로 입력하게 구현
- 다른 요청을 위조할 경우에는 HTTP 헤더의 Referrer가 현재 같은 도메인에서 오는 요청인지 검증하여 다른 도메인에서의 요청은 차단한다.
- Security Token(CSRF Token)을 사용하여 세션에 저장된 토큰값과 요청 파라미터에 전달되는 토큰 값이 일치하는지 검증한다.
'CERT > 웹 모의해킹 실습' 카테고리의 다른 글
[웹 해킹] Insecure CAPTCHA / DVWA 환경 실습 / 대응 방안 ( 캡챠 우회 공격 ) (0) | 2023.06.03 |
---|---|
[웹 해킹] File Upload 공격 / DVWA 환경 실습 / 대응 방안 (0) | 2023.06.03 |
[웹 해킹] File Inclusion 공격/DVWA 환경 실습/대응 방안 (0) | 2023.05.27 |
[웹 해킹] 무차별 대입 (Brute Force)공격/DVWA 환경 실습/대응 방안 (0) | 2023.05.21 |
[웹 해킹]Command Injection 공격/DVWA 환경 실습/대응 방안 (0) | 2023.05.21 |