티스토리 뷰
CSRF 공격이란
사용자의 권한으로 공격자가 원하는 행위를 수행하게끔 하는 것이다. 즉 공격자는 서버가 사용자(브라우저)를 식별할 때 사용하는 세션이나 쿠키를 이용하여 사용자인 척하고 서버에 요청을 보내는 것이다. 따라서 서버는 요청이 공격자 또는 사용자로부터 온 것인지 판단하지 못하여 모두 정상적인 응답을 하게 된다.
예를 들어 사용자가 A 사이트에 로그인을 하고 공격자가 심어놓은 ‘비밀번호 변경 링크’를 클릭하였다고 가정하자. 공격자는 사용자의 세션 혹은 쿠키를 알고 있는 상태에서 ‘비밀번호 변경 링크’를 서버에 보낸다. 서버는 요청을 수신하고 공격자가 원하는 패스워드로 사용자의 패스워드를 변경하게 된다.
DVWA 사이트를 이용해 사용자의 권한으로 공격자가되어 패스워드를 변경해보자.
보안 레벨을 Low로 한 결과 현재 비밀번호를 입력하지 않고 단순히 새로운 패스워드만 입력을 한다.
Change 버튼을 클릭할때의 웹페이지 소스를 먼저 보게되면 Get 메소드를 사용하여 password_new, password_conf, change 3개의 파라미터를 서버측에 전달하는 것으로 파악할 수 있다.
그럼 나머지 숙제는 사용자가 로그인한 상태에서 3가지의 파라미터를 서버에게 보내는 일종의 낚시 URL를 클릭하게 해야한다.
그래서 그럴듯한 내용의 메일로 안눌러 볼 수 없도록 메일내용을 만들어 보았다^^
사실 메일에 속아 로그인 버튼을 클릭하는 순간 해당 URL로 3가지의 파라미터가 넘어가게 된다.
<a href="http://IP주소/vulnerabilities/csrf/?password_new=1234&password_conf=1234&Change=Change" |
로그인 버튼을 클릭하면 패스워드가 변경되었다라고 나오고 패스워드 변경은 성공하게 된다.
이렇게 패스워드를 바꾸면 사용자의 권한에 따라 공격자는 마음대로 개인정보를 탈취할 수 있게 된다.
이를 막는 방법은 CSRF 토큰을 함께 파라미터로 전달하는 방법을 사용하거나 현재 비밀번호입력, CAPTCHA 사용 등 사용자가 한번 더 입력해야하는 방식이 있을 수 있다.
'Security > 어플리케이션' 카테고리의 다른 글
[WEB] DVWA 사이트를 이용한 Union SQL Injection (0) | 2021.01.31 |
---|---|
[WEB] DVWA 사이트를 이용한 Form SQL Injection (0) | 2021.01.29 |
- Total
- Today
- Yesterday
- 보안
- 보안기사
- Python
- lightsail
- FastAPI
- 프로그래머스
- 카카오페이
- LangChain
- llm
- 파이썬
- 우선순위큐
- 카카오페이면접후기
- 딥러닝
- 시간초과
- synflooding
- Ai
- 다이나믹프로그래밍
- 정보보안
- 분산시스템
- springboot
- 코딩테스트
- 리눅스
- t검정
- java
- t-test
- 백준
- 자료구조
- 그리디
- 정보보안기사
- linux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |