1 분 소요

CSRF 공격

설명

  • Cross Site Request Forgery
  • 피해자가 임의의 요청을 서버에 보내게하는 공격이다.

발생 위치

  • 모든 요청에서 방생할 수 있다.
  • 중요한 요청에서 발생할 수 있다.
  • 게시판 글 작성 CSRF or 비밀번호 변경 CSRF ( 상황에 따라 위험도가 달라질 수 있다.)

CSRF 공격 기법

GET Method

  • URL 링크를 만들어 사용자에게 보내 클릭하게 만들면 된다.
  • 로그인 한 다음 볼 수 있는 페이지에 URL를 두고 클릭하게 해야한다.

POST Method

  • 무조건 XSS 취약점을 같은 도메인에서 찾아야 한다. 왜냐하면 같은 도메인이어야 로그인 세션이 그대로 남아있기 때문이다. ( 쿠키 값 유지 )

Referer Bypass 포인트

  • meta 태그를 이용하여 우회를 시도할 수 있다.
  • 단 서버에서 referer 값이 없을 때는 검사를 안하고 통과시켜줘야 한다.
<meta name="referrer" content="no-referrer">

CSRF Token 우회

  • 서버에서 랜덤한 CSRF Token을 만들고 세션에 저장한다.
  • 중요한 요청 페이지에 CSRF Token을 넣어준다.
  • 공격자는 CSRF Token을 마음대로 만들 수 없다.
  • 하지만 동일한 도메인에 XSS 취약점이 존재하면 CSRF Token 우회가 가능하다.
<iframe src="csrf 토큰이 들어있는 페이지" onload="load()">
</iframe>
<script>
function load(){
	var value = document.getElementsByTagName("iframe")[0].contentWindow.document.forms[0].csrf_token.value;
}
</script>

CSRF 대응방안

  • 지키고자하는 요청에서 인증정보 추가하기. (예: 옛날 비밀번호 한번더 입력 , 문자 인증 번호 등 … )
  • 애매한 요청 (예: 게시판) 일 때는 Referer Check, CSRF Token을 추가하기.

SSRF 공격

설명

  • Server Side Request Forgery
  • 서버가 임이의 요청을 보내게하는 공격이다.
  • 많은 API를 사용함으로써 공격하기 더욱 쉬워졌다.

발생 위치

  • 파라미터로 URL을 받는 경우.
  • 서버가 외부 자원(리소스)를 이용하는 곳.
  • 예 : view.php?weatherAPI=https://kakao.com/~~~

서버에서 URL 동작 방식

  1. 서버가 사용자가 보낸 요청으로 API주소를 받는다.
  2. 서버에서 주소로 요청한다. 즉 데이터를 가지고 온다.
  3. 서버에서 가지고온 데이터를 가지고 페이지를 만들어 사용자에서 응답한다.

공격 유형

서버 내부 접속하기

  • admin 페이지 접근을 목적으로 한다.
  • 파라미터로 http://localhost admin 페이지 접속 가능.
  • 파라미터로 ftp://localhost/etc/passwd 임의의 파일 열람 가능.
  • 만약 공격자가 내부 서버의 아이피 주소 유형을 알아냈다면 알아낸 주소를 가지고 포트 스캔이 가능하다.
    http://192.168.0.x:80 즉 주소값을 계속 변경하여 내부망에 존재하는 웹 페이지에 접근가능하다.

SSRF 대응 방안

  • 파라미터로 URL을 안 받으면 된다.

댓글남기기