Cross Site Request Forgery
교차 사이트 요청 위조
임의 사용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 취약점
공격자는 임의 사용자의 권한으로 서비스 기능을 사용하여 이득을 취할 수 있다.
CSRF공격이 성공하기 위해선 공격자가 작성한 악성 스크립트를 사용자가 실행해야한다.
여기서 악성 스크립트는 HTTP 요청을 보내는 코드이다.
공격 스크립트는 HTML이나 JS로 작성할 수 있다. img 태그를 사용하거나 form 태그를 보통 사용한다.
- img
<img src='http://bankbankbank.com/sendmoney?to=han&amount=8210' width=0px height=0px>
→ 이미지 크기를 줄여서 사용자에게 들키지 않고 임의 페이지에 요청 보낼 수 있다. - form: 입력된 양식을 웹페이지에 전송

vs XSS
모두 클라이언트를 대상으로 하는 공격이고, 사용자가 악성 스크립트가 포함된 페이지에 접속하도록 유도해야한다.
XSS는 인증 정보인 세션 및 쿠키탈취를 목적으로, 공격할 사이트의 오리진에서 스크립트를 실행시킨다.
CSRF는 이용자가 임의 페이지에 HTTP 요청을 보내는 것을 목적으로, 공격자는 악성 스크립트가 포함된 페이지에 접근한 사용자의 권한으로 웹 서비스의 임의 기능을 실행할 수 있다.
csrf-1
웹 서비스 분석




취약점 분석
/vuln에서 필터링 키워드에 포함되지 않은 <, > 와 다른 키워드들은 사용할 수 있다.
익스플로잇
공격 스크립트가 삽입된 /vuln 페이지를 다른 사용자가 방문할 경우, 의도하지 않은 페이지로 요청을 전송하게끔 한다.
플래그를 얻기 위해서는 /admin/notice_flag 페이지를 로컬호스트에서 접근해야하므로, /vuln페이지를 방문하는 로컬호스트 이용자가 /admin/notice_flag 페이지로 요청을 전송하도록 작성한다.
<img src = "/admin/notice_flag?userid=admin">
userid 파라미터가 admin인지 검사하는 부분이 존재하기 때문에 해당 문자열을 포함시켜준다.


csrf-2
웹 서비스 분석



취약점 분석
/vuln에서 필터링 키워드에 포함되지 않은 <, > 와 다른 키워드들은 사용할 수 있다.
익스플로잇
/flag페에지에서 admin의 세션ID가 저장되므로 /flag페이지에서 admin의 pw를 변경하려면 /change_password 페이지로 접근해야한다. (세션 탈취)
<img src = "/change_password?pw=admin">



'Web' 카테고리의 다른 글
| ServerSide: SSRF (0) | 2026.09.21 |
|---|---|
| XSS-2 (0) | 2026.09.20 |
| XSS-1 (0) | 2026.09.20 |
| ClientSide: XSS (0) | 2026.09.20 |