klaus

[week_7] CSRF-1 본문

수업/모의해킹

[week_7] CSRF-1

klus! 2022. 12. 11. 08:40

0. 들어가기

[커리큘럼]

- CRSF

: XSS 차이 구분

: CSRF 실습

 

[+] 자격증

- 이직 전에 정보보안기사 취득하자!

      이직 후에 OSCP 목표

      침투 테스트[Pentest] : 정보 수집, 취약점 찾기, 셀 획득하기 등등

 

- Q : 모의 해킹 프로젝트와 침투 테스트 프로젝트의 차이점?

 

  A : 

      웹 해킹 프로젝트 : 사이트 주소, 도메인 주소, URL 등을 제공받아 정해진 곳만 공격!

      모바일 웹 해킹 프로젝트 : 안드로이드, IOS

      침투 테스트 프로젝트 : 해당 기업에서 해킹 의뢰를 통해 그냥 공격해서 뚫어주세요!

      OA 침투 : IP주소를 받고 알아서 해킹해주세요!(+wifi 해킹)

 

즉, 정해진 곳만 공격하느냐 와 무차별 공격하느냐의 차이인 것 같다.

 

그리고 회사에 대한 이야기를 했는데 큰 물(?)에서 시작하자라는 말이 있었다....

또, 컨설팅 업체 대표와 식사를 한 이야기도 있었는데..

일반화되어서는 안 되지만 실력도 실력인데 인성이 좋은 사람이 중요하다는 말이 있었다.

인성이란 도덕성이 아닌 사회성을 뜻한다고 하셨다.

 

1.  CSRF

[+] CSRF와 XSS의 차이점

 

- CSRF는 피해자가 의도치 않은 동작을 웹 서버로 요청하는 공격!

예) 비밀번호를 바꿔주세요. 게시판에 글을 써주세요.(피해자는 모르는 상태에서 이뤼짐)

 

“내 비밀번호를 1234로 바꿔줘!”를 공격자가 준비를 하고 피해자한테 전달을 한다.

CSRF 공격을 하는 이유는 바로 세션이 때문이다. 피해자의 세션이 필요한데 공격자는 세션을 모르는 상태이기 때문에 피해자한테 요청을 보낸다.

결국은 사회공학 기법이 조금 필요하다.

“아래에 있는 사이트의 내용을 확인해주세요!”

 

 

- XSS는 피해자의 컴퓨터에서 무언가가 실행되게 만드는 공격!

CSRF와 XSS는 궁합(?)이 좋아 잘 섞어서 활용한다면 효과는 배가 된다.!

 

그럼 사회 공학 기법이 들어가는 CSRF 공격은 왜 당할까??

: 공격자가 요청을 예측하고 미리 만들 수 있기 때문에 공격이 가능

(==버프 스위트의 기능을 활용해서 파라미터 값이 어떻게 흘러가는지 파악)

 

[+] CSRF 대응 방안

 

- 링크 작성을 못하게 한다!

   > GET 방식이면 POST 방식으로 한다든지.....

- 비밀번호 변경 시 페이지에서 기존 비밀번호 기입해서 변경하도록 한다.

  > 기존 비밀번호는 공격자가 모르는 상태이기 때문에 예측 URL을 만들 수 없음

 

[+]

GET Method의 경우 URL이 바로 보이기 때문에 바로 만들어 공격

POST Method는 XSS와 CSRF를 병행해서 공격

 

[+] CSRF를 찾는 팁

서버에 임의의 요청 : 요청을 했을 때 반응 및 구조를 확인해본다.

집중해서 확인해야 하는 것은 개인정보 수정하거나, 무언가를 구매한다든지 어떤 행위를 하는지 확인

버프 스위트 시나리오

리미터로 넘기기 → Change Request Method 클릭 → Method Not Allowed → POST 방식으로만 공격 가능 → 링크 전달 x → 게시판을 이용 → XSS 협공한다.

 

기본 코드?

<form method="POST action="copyURL">
<input type="hidden" name="email" value="tori@test.com">
<input type="submit" value="ClickMe">
</form>

해당 코드의 경우 게시판을 클릭하면~ 마이페이지로 이동하게 된다...

이렇게 되면 둔한 사람을 제외하면 뭐지??? 이상한데?라는 생각이 들것이라고 했다.

(나는 둔한 사람인가... 아무런 생각이 없었다. ㅎㅎ)

 

[+] iframe함수를 활용하기

코드를 iframe함수를 활용하여 이메일 주소로 이 동시 킨 후 폭과 높이 값을 0으로 설정하여 페이지 내에는 아무것도 출력되지 않도록 합니다. 

<iframe width="0" height="0" border="0" name="stealthframe" id="stealthframe"
style="display:none;"></iframe>
<body onload="document.csrf_form.submit();">
<form method="POST" name="csrf_form" action="[copyURL]" target="stealthframe">
		<input type="hidden" name="email" value="[tori@test.com]">
</form>

[copyURL] : 이메일이 변경되는 URL주소(프로필 수정페이지?)

[tori@test.com] : 으로 변경!

 

alert()의 경우 워낙 CSRF와 XSS 공격에서 너무 많이 쓰이고 있어 방화벽에서 걸러진다고 합니다.

다른 방법이 뭐가 있는지 확인 필요~

 

이렇게 수업은 마무리되고 과제가 남았다...

보고서~~~~~ 

 

 

 

 

Comments