13 주차
*CSRF vs XSS 차이점
(간단히 말하면)
XSS : 공격자가 원하는 스크립트를 실행한다
클라이언트 측에서 실행하는 스크립트를 삽입해서 하는 공격
CSRF : 요청을 위조함 (엄밀히 말하면 클라이언트 측 공격이지만, 서버에 어떤 요청이 가게 만드는 공격이기에 서버측 공격이라고 해도 됨
피해자가 원치 않은데 공격자가 원하는 어떤 요청을 서버로 보내게 하는 것.
CSRF
게시판 글에서 비밀번호 요청이 날아간다?!
referer : mypage.php?
예외처리.
문제가 발생하면? -> 통과시켜주자!
CSRF의 문제점
*근본적인 방법
>> 요청을 위조 했기 때문이다.
1. 위조를 할 수 없게 인증정보(비밀정보 등)넣는 것이다.
2. 레퍼러 체크
3. CSRF 토큰 추가
세가지 방법이 있다.
----------------------------------------------------------------------------------------
CSRF – POST Method 인 경우
<form> -> XSS 찾기 -> 왜 크사 찾아서 vuln페이지에 form태그를 너야할까?
vulm.com/mypage.php
아래처럼 만들어서 하면 안될까?
normaltic.com/comeon.html
<form action: “”>
<input
</form>
<script>
.submit();
</script>
*SOP
Same-Origin-Policy : 자바 스크립트로 접근이 안되게 하는 것
vuln.com/mypage.php
normaltic.com/attack.html
<inframe src=“http://vuln.com.mypage.php”>
<script>
서로 출처의 자원에 접근하지 못하게 하는 것임
</script>
무조건 같은 출처만 가능함. 다른 출처는 무조건 안된다. = SOP
같은 출처의 기준?
-도메인
-스키마
-포트
ex) https://normaltic.com:80 (이것이 기준이라면
https://aanormaltic.com:80 (x)
https://normaltic.com:8080 (x)
x들은 출처가 다른 것으로 인식함
SOP보다 좀더 유연하게 나온 것 (숨구멍을 만든 것)
CORS(Cross Origin Resoure Sharing) : 크로스(다른 도메인) 도메인에서 자원을 공유하겠다
CORS : 몇가지 규칙을 줄게 ! 규칙에 맞으면 다른 출처에서도 데이터를 쓰게 해줌
ACAO (Access-Controll-Allow-Origin) 헤더
ACAO헤더는 응답에 들어간다.
ex)
(코드가 들어간 주소=) normaltic.com
acao: vuln.com(vuln.com에서만 사용할 수 있음)
<iframe src=“vuln.com/mypage.php”>
<script>
// 사용하고 싶어
</script>
SOP -> CORS
:White List (이렇게 하면 아무문제 없음) but
ACAO : * (모든 데이터를 사용한다) (이렇게 하면 SOP 필요없어짐)
*허락 BUT 타 도메인에서 쿠키를 포함해서 요청한 것에 대한 응답은 * 못씀!!
ACAC: true; (쿠키를 포함한 요청입니다라는 것임)
POST Modthd로 처리 되는 곳이면 그 도메인에서 XSS를 찾아야 한다.
CSRF를 하려면 무조건 XSS가 필요하다 (X)
CSRF는 XSS 공격이다.(X) -> CSRF는 그냥 CSRF공격이다. 단 어떤 공격에서는 XSS 취약점의 도움을 받아야만 공격을 활용할 수 있다.
SQL Injection은 ‘and ’1’=’1 이런 것 넣어보고 XSS는 <“‘>” 이런 것 넣어보고 test 할 수 있음.
CSRF 발견하는 좋은 방법
CSRF는 모든 요청에서 일어난다.
이 요청은 위조 해도 되는가 안되는가 그것을 판단함
이 요청은 공격자 몰래 전송되도 되는 거야 괜찮아 하면 넘어가는 것이고 (개인정보나 비밀번호같은 것등) 함부로 처리되면 안되는 것들은 이 요청을 누군가가 함부로 위조할 수 있는지 보면된다.
url 내것과 같네 내것으로 써볼까 파라미터를 볼까 바꿀 비밀번호만 넣으면 되네 이건 내가 지정하면 되는 것이기 때문에 CSRF가 있겠다고 판단하여 하면된다. but 파라미터를 봤는데 내가 모르는 데이터이면 기존 비밀번호가 있는 것이기에 CSRF가 없는 것으로 판단하여야 한다.




Referer : 어느 페이지에서 왔는가를 알려주는 것임 (경로가 들어감)
Origin : (도메인이 들어감)
---------------------------------------------------------------------------------------------+
***과제 시간
- CSRF 고민해서 풀어보기
-CSRF 정리 (SOP, CORS)
(여기까지는 복습임)
-웹 개발.(기능 구현O)