일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- OSI 7Layer
- 네트워크
- IP클래스
- 안드로이드 구조
- .apk
- 프리다
- SSRF
- ServerSideRequestForgery
- 네트워크기초
- .dex
- CrossSiteScripting
- 프로세스검증누락
- CSRF
- TCP/IP 4계층
- IPv6전환
- OWASP TOP 10
- 웹쉘
- 안드로이드 구성요소
- apk
- CrossSiteRequestForgery
- 네트워크모델
- 4대 구성요소
- DVM
- TCP/IP 4Layer
- .class
- Frida
- 불충분한인가
- 취약점
- 안드로이드란
- 불충분한인증
- Today
- Total
secure_world
공격 기법 - XSS, CSRF, SSRF 본문
1. XSS(Cross-Site-Scripting)
2. CSRF(Cross-Site-Request-Forgery)
3. SSRF(Server-Side-Request-Forgery)
※ 개인적인 공부를 위해 작성하였습니다. 이 글을 참고하여 허가되지 않은 곳에 사용하지 마시고 법 적인 문제가 생길 시 책임지지 않습니다.
※ 잘못된 정보가 있을 경우에는 댓글 혹은 방명록을 통해서 알려주시면 바로 수정하도록 하겠습니다!
1. XSS(Cross-Site-Scripting)
1.1. XSS(Cross-Site-Scripting)이란?
- 웹 어플리케이션에서 일어나는 취약점의 종류 중 하나로, 권한이 없는 사용자가 웹 사이트에 스크립트를 삽입하여 공격하는 기법을 말함
- 대부분 글을 쓰고 읽을 수 있는 게시판에서 많이 발생하게 되며, 입력 값을 웹페이지에 보여줄 수 있는 곳에서도 발생 할 수 있음
- 악의적 사용자가 C&C서버로 리다이렉션하기 위해 스크립트를 주입하여 중간 경유지로 활용될 수 있고, 사용자의 쿠키를 탈취하여 세션 하이재킹(Session Hijacking) 공격을 수행하기도 함
- CSS(Cascading-Style-Sheets)와 약어가 같기 때문에 XSS(Cross-Site-Scripting)으로 사용됨
* C&C서버?

- C&C(Command & Control)서버는 일반적으로 감염된 좀비 PC가 해커가 원하는 공격을 수행할 수 있도록 원격지에 명령을 내리거나 악성 코드를 제어하는 서버를 말함
* 세션 하이재킹(Session Hijacking)?
- 세션 하이재킹이란 정상 통신을 하고 있는 다른 사용자의 세션을 가로채 별도의 인증 작업 없이 공격자가 가로챈 세션을 통해 정상 통신을 지속하는 행위를 말함
1.2. XSS 공격 종류 및 방법
1) Stored(=Persistent) XSS, 저장형 XSS공격
- Stored XSS공격은 지속적으로 피해를 입힐 수 있는 XSS공격 기법으로, 해커가 웹 어플리케이션의 XSS취약점이 있는 곳을 파악하고 악성 스크립트 삽입하여 저장하게함
- 공격자가 삽입한 악의적 스크립트가 데이터 베이스에 저장되고 저장된 스크립트가 있는 게시글 등을 사용자가 열람하게 되면 스크립트가 작동되며 쿠키 탈취 혹은 악의적 페이지로의 리다이렉션 등의 공격을 받을 수 있음
- 데이터 베이스에 저장이 된다고 하여 Stored XSS라고 불리며, 한번의 공격으로 악성 스크립트를 삽입하여 수 많은 피해를 입힐 수 있다는 특징을 가짐
- 가장 많이 사용되는 곳으로는 홈페이지 게시판 등이 있으며, 사용자의 입력 값이 데이터 베이스에 저장되고 클라이언트에게 저장된 스크립트를 보여줄 수 있는 곳에 공격이 가능
2) Reflected XSS, 반사형 XSS공격
- Reflected XSS 공격은 사용자에게 받은 값을 되돌려 줄 수 있는 곳에 발생할 수 있는 공격 기법
- 사용자에게 입력 받은 검색어 등을 그대로 보여주거나 값에 대한 에러 메세지를 포함하여 보여주는 곳에 공격자가 악성 스크립트를 삽입하여 사용자가 응답을 받을 때 스크립트가 실행됨
- 공격 예시는 공격자가 악의적인 스크립트가 포함된 URL을 사용자에게 누르도록 유도하고, URL을 누른 사용자는 악성 스크립트가 실행되며 공격당하게 됨
3) DOM Based XSS, Document Object Model 기반 XSS공격
- DOM(Document Object Model)이란 HTML 및 XML 등 문서에 접근하는 방법을 표준으로 정의하는 문서 객체 모델을 말함
- DOM Based XSS공격은 악의적인 스크립트가 포함 된 URL을 사용자가 요청하게 되어 브라우저를 해석하는 단계에서 발생하는 공격 기법으로, 클라이언트 측 코드가 원래 의도와는 다르게 실행되는 것을 말함
- 페이지 자체는 변조되지 않지만, 페이지에 포함된 클라이언트 측 코드는 DOM환경에서 발생한 악의적인 변조로 인해 공격 구문이 실행되게 되며, 서버와 상관없이 브라우저에 발생하게 되는 공격
1.3 기본적인 대응 방안
1. 입출력 값 검증
- 사용자가 입력한 값에 대한 검증과 사용자가 입력한 값을 그대로 출력할 때 검증이 필요함
- XSS Cheat Sheet를 만들어 이에 대한 필터링을 통해 입력 값 검증을 진행하여 방어할 수 있음
2. XSS 방어 라이브러리 및 브라우저 확장앱 사용
- Anti XSS 라이브러리를 사용하면 XSS를 방어하는데 도움이 됨
- XSS 라이브러리를 서버에 추가하여 스크립트가 실행되지 않도록 방어하는 것을 말함
3. 웹 방화벽 사용
- 웹 방화벽은 웹 공격에 특화되어 있기 때문에 XSS 공격 뿐만이 아닌 Injection공격도 효과적으로 방어가 가능
2. CSRF(Cross-Site Request Forgery)
2.1. CSRF(Cross-Site Request Forgery)란?
- Cross Site Request Forgery는 웹 어플리케이션의 취약점 중 하나로 사용자가 자신의 의도와는 상관없이 공격자가 의도한 행위를 특정 웹 사이트에 요청하게 만드는 공격을 말함
- 희생가의 권한을 도용하여 중요 기능을 실행하는 것이 가능하며, CSRF 공격은 서버를 해킹하는 것이 아니기 때문에 사용자의 로그인된 상태와 악의적 사이트에 접속하게 되는 조건이 만족하면 공격 실행이 가능함
- 피싱 사이트로의 접속이 아니더라도 XSS에 성공한 사이트이면 CSRF공격이 가능하다고 함
2.2. CSRF 공격 기법
1. 공격자가 이메일이나 게시판에 피싱 사이트 접속을 위한 CSRF 스크립트가 포함된 게시물을 등록
2. 관리자 혹은 사용자는 공격자가 등록한 CSRF 스크립트가 포함된 게시물을 열람하게 됨
3. 관리자 혹은 사용자의 권한으로 공격자가 등록한 CSRF 스크립트가 웹사이트에 요청 됨
4. 관리자 혹은 사용자가 의도하지 않은 행동이 CSRF 스크립트가 실행됨으로써 수행하게 됨
2.3. 기본적인 대응 방안
1. Referrer 검증
- Referrer는 HTTP헤더에 있는 정보를 말하며, 요청된 페이지의 정보를 가지고 있기 때문에 Referrer 값을 확인하여 같은 도메인에서 보낸 요청인지 검증하고 차단하는 방법
2. CSRF Token(=Security Token) 사용
- 사용자의 세션에 임의의 값을 저장하여 모든 요청마다 임의의 값을 모든 요청마다 포함하여 전송하도록 함
- 요청이 들어올 때마다 백엔드단에서 세션에 저장된 값과 요청으로 전송된 값이 일치하는지 검증하여 방어하는 기법
3. Double-Submit Cookie Pattern
- 웹 브라우저의 Same Origin정책으로 인해 JavaScript에서 타 도메인의 쿠키 값을 확인/수정하지 못한다는 것을 이용한 방어 기법
- 스크립트 단에서 요청 시 난수 값을 생성하여 쿠키에 저장하고 동일 난수 값을 요청 파라미터에도 저장하여 서버로 전송하게 하고, 서버 단에서 쿠키의 토큰 값과 파라미터의 토큰 값이 일치하는지 검증하여 차단하는 방법
3. SSRF(Server-Side Request Forgery)
3.1. SSRF(Server-Side Request Forgery)란?
- Server Side Request Forgery는 서버 측에서 요청을 보낼 때 위조된 요청을 보내도록 하는 공격 기법
- CSRF는 클라이언트 측에서 위조된 요청을 보내는 것이라면, SSRF는 서버측에서 위조된 요청을 보내도록 하는 것
- SSRF 취약점을 이용하면 공격자는 웹, 앱과 같은 서버 측 프로그램이 임의 주소로 HTTP 요청을 보내게 하고 사용자들이 접근할 수 없었던 서버 내부 자원에 접근하여 API Key등의 중요 데이터가 유출되거나 내부 스캔, 임의 코드 실행 등의 행위가 가능하게 됨
3.2. SSRF 공격 기법
(Website.com : A서버 , 타 사이트 : B서버)
1. 정상의 경우 A서버는 B서버로 정보를 요청하고 결과를 반환해야 함
2. 해커가 B서버의 주소를 C서버로 변경할 경우 A서버는 B서버가 아닌 C서버로 요청을 전송하고 결과를 반환 받음
3. 해커는 A서버를 통해 C서버에 대한 정보를 얻는 등의 비정상 동작을 유도할 수 있게 됨
4. C서버가 기업 내부의 중요 자산을 가지고 있는 데이터 베이스라면 중요 데이터가 노출될 수 있음
3.3. SSRF 참고자료
"서버를 속여 공격한다" SSRF 공격의 동작 방식과 대처법 - ITWorld Korea
서버 측 요청 위조(Server-Side Request Forgery, SSRF) 공격은 공격자가 서버를 속여 무단 요청을 보내도록 유도하는 수법이다. 공격 이름으로 짐작할 수 있듯, 원래 서버가 하는 요청을 공격자가 위조하
www.itworld.co.kr
'모의 해킹 기초' 카테고리의 다른 글
프로세스 검증 누락 / 불충분 인가 / 불충분 인증 (0) | 2022.01.03 |
---|---|
공격 기법 - 파일 업로드 / 파일 다운로드 (0) | 2021.12.30 |
공격 기법 - SQL Injection (0) | 2021.12.28 |
OWASP TOP10 - 2021 (0) | 2021.12.27 |