제목 : CSRF 취약성 관련

CSRF 漏洞相关​

1 定义与原理​

CSRF- 크로스 사이트 요청 위조

1.1 cookie 相关​

사용자 로그인 용 데이터 패킷 :
20210110111113.png-water_print

반응 형 패킷 :
로그인 할 사용자 이름과 비밀번호를 제출 한 후 클래스의 세트 -Cookie 필드는 서버에서 반환 한 데이터 패킷에 전달됩니다. 이는 현재 로그인 한 사용자에 대한 쿠키 세트의 값입니다.
20210110111127.png-water_print

이 쿠키의 값을 수신 한 후 브라우저는 브라우저에 세트 쿠키 필드의 값을 저장합니다.
쿠키를 관리자의 쿠키로 요청하는 쿠키를 수정하면 암호를 입력하지 않고 웹 사이트 백엔드에 로그인 할 수 있습니다.
20210110111419.png-water_print

데이터 패킷의 쿠키 값은 브라우저가 로컬 스토리지에서 꺼내고 데이터 패킷에 자동으로 채워집니다. 공격자가 사용자의 브라우저를 제어하고 쿠키를 훔치면 브라우저가 자동으로 쿠키를 채 웁니다. 대상 웹 사이트는 실수로 데이터 패킷이 관리자가 전송되었으며 관리자의 권한과 관련된 작업을 수행 할 것입니다.

1.2 CSRF​

전제 조건 : 데이터 패킷의 쿠키 값은 브라우저에 의해 로컬 스토리지에서 꺼내고 데이터 패킷에 자동으로 채워집니다.
특정 공격 조건에서 공격자는 공격자의 신원을 사용하여 서버에 대한 요청을 시작하며 서버는 결과를 정상적으로 구문 분석하고 반환 할 수 있습니다.
원칙 : 일반적으로 공격자는 사용자가 인증 및 방문한 웹 사이트로 사용자의 브라우저에서 요청을 보내서 대상 웹 사이트가 사용자의 실제 작동 및 실행 명령을 받고 실수로 생각합니다.
20210110111625.png-water_print

20210110111911.png-water_print

조건이 발생합니다 :
공격자는 현장 a에 로그인됩니다
웹 사이트와 동일한 브라우저에서 해커가 제공 한 링크를 열어야합니다.
배경 인증은 엄격하지 않습니다 (예 : 쿠키를 제외하고는 다른 인증을 사용할 수 없습니다)

2 防御​

2.1 HTTP Referer 限制​

사이트에서 돈을 이체 할 때와 같은 일부 민감한 운영에 대한 사이트 필드의 값을 제한 할 수 있습니다.
http://bank.example/enploy? 계정=bobam=10000000for=mallory
참조 필드는이 사이트로만 제한 될 수 있으므로 사용자 로그인 한 후이 사이트 페이지에서 전송 작업을 수행해야합니다.

2.2 Token​

CSRF가 성공한 이유는 사이트가 쿠키에 의존하여 사용자의 신원을 식별하기 때문에 공격자는 사용자의 암호를 알지 못하고 사용자의 쿠키를 직접 사용하여 보안 검증을 전달할 수 있기 때문입니다.
HTTP 요청에 무작위로 생성 된 HTTP 토큰을 매개 변수 형태로 추가하십시오. 서버는 사용자 요청을 수신 한 후 토큰을 확인합니다. 토큰이 없거나 토큰이 잘못된 경우 공격으로 간주되며 직접 폐기됩니다.
요청 : http://url? csrftoken=TokenValue
게시물 요청 : 입력 유형='숨겨진'이름='csrftoken'value='TokenValue'/
정보
예를 들어, 공격자는 웹 사이트에 서버의 주소를 게시 할 수 있습니다. 일반 사용자가 주소를 클릭하면 사이트가 주소 뒤에 토큰을 추가하여 토큰이 유출됩니다.
따라서 내부 링크와 사이트의 외부 링크를 구별해야합니다. 내부 링크에 토큰을 추가하면 외부 링크에 대한 토큰이 추가되지 않습니다.
 
뒤로
상단