728x90

CSRF란?

희생자가 CSRF 스크립트가 포함된 웹 페이지에 접속하면 희생자의 권한을 통해 공격자가 의도한 행위(등록, 수정, 삭제 등)를 실행하게 하는 취약점이다. XSS 공격은 악성 스크립트가 클라이언트에서 실행되는데 반해, CSRF 공격은 희생자가 악성 스크립트(등록, 수정, 삭제하는 스크립트)를 서버에 요청한다는 점에 차이가 있다.

https://portswigger.net/web-security/csrf#common-defences-against-csrf

 

What is CSRF (Cross-site request forgery)? Tutorial & Examples | Web Security Academy

In this section, we'll explain what cross-site request forgery is, describe some examples of common CSRF vulnerabilities, and explain how to prevent CSRF ...

portswigger.net

소스코드를 보면 /admin/notice_flag에 접근해야 FLAG를 이용할 수 있다. admin_notice_flag 함수를 보면 remote_addr이 127.0.0.1이어야 하기 때문에 check_csrf 함수를 이용해서 /admin/notice_flag에 접근해야한다. 이에 앞서 check_csrf 함수는 flag 함수에서 호출한다. 따라서 시작점은 flag 함수이다.

flag 함수에 다음과 같이 입력 후 memo 페이지에 접속하면 FLAG가 출력된다.

<img src="/admin/notice_flag?userid=admin">

입력값은 vuln 함수의 필터링 문자열인 frame, script, on에 걸리지 않는다. check_csrf 함수에 전달되고 127.0.0.1(admin)의 vuln페이지의 입력값으로 전달된다. img 태그가 실행되며 admin_notice_flag 함수가 실행된다. ip가 127.0.0.1이고 userid가 admin이 되어 memo_text에 추가된다. memo_text는 memo 페이지에 접속하면 출력된다.

 

728x90

'dreamhack > Web Hacking' 카테고리의 다른 글

CSRF-2  (0) 2023.02.12
command-injection-1  (0) 2023.02.12
XSS-2  (0) 2023.02.12
devtools-sources  (0) 2023.02.11
pathtraversal  (0) 2023.02.11

+ Recent posts