웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > webdevetc

해킹 공격 XSS 비개발자도 쉽고 간단하게 이해하기

Last Modified : 2023-11-29 / Created : 2023-11-29
302
View Count
최근 해킹 사건들이 급격하게 늘고 있다는 것에 공감하시나요? 해킹 공격은 예전에도 지금도 계속되고 있지만 요즘은 해킹 공격에 대한 준비가 더욱 철저해져야 합니다. 공격 시도도 빈번하고 목적이 뚜렷한 해킹이 많이 늘어났기 때문이죠. 특히 즉시 현금화 및 추적이 어려운 코인의 활발한 거래와 시세 급등 역시 해킹에 큰 영향을 주었다고 생각되는데요... 저 역시 이더리움 채굴과 시세가 한참 오르던 시점에 이를 요구하는 해킹을 당한 적이 있고 이 후 해킹 위협을 사전에 회피할 수 있는 보안 강화와 주의가 얼마나 중요한지 절실히 깨달을 수 있었으니까요. 소 잃고 외양간을 고치기 보다는 소가 있을 때 잘하자는 것이 좋겠죠?

어쨌든 해킹의 위협은 언제 어떻게 다가올 지 모르기 때문에 이와 관련된 기본적인 지식은 반드시 습득할 필요가 있다고 생각하는데요 ~ 오늘은 해킹 공격에 자주 사용되고 알면서도 당하는 XSS에 대하여 알아보겠습니다.





XSS(크로스 사이트 스크립팅) 알아보기


위에도 언급했지만 XSS는 간단하기 때문에 누구나 쉽게 배우고 시도할 수 있는 방법 중 하나입니다. 그래서 더 쉽게 위험에 노출될 수 있죠. 꼭 보안 전문가나 개발자가 아니더라도 XSS에 대하여 어느 정도 지식이 있다면 어떤 문제가 있을지 예측할 수 있을 것이고 적절한 대응도 가능할 것입니다. 컴퓨터를 몰라도 해킹과 보안이 어렵더라도 하나씩 알아가며 정보를 쌓아과는 과정이 중요하다고 생각합니다. 시작 전에 알아볼 내용의 목차는 다음과 같습니다.

1. XSS는 무엇인가?
2. XSS가 초래하는 위험은?
3. XSS를 방지하기 위한 방법은? 우리가 할 수 있는 것은?

목차 순서대로 XSS는 무엇인지 부터 알아볼께요!


1. XSS는 무엇인가?


XSS는 Cross Site Scripting의 약자로 직역하면 "스크립트를 사용해 사이트를 건너다"라고 해석할 수 있습니다. 이는 스크립트를 실행해 다른 사이트로 정보를 전달하는 것으로 해석할 수 있는데요 ~ 실제로 XSS의 가장 큰 피해가 해당 접속자의 정보, 특히 쿠키 정보를 공격자의 원격 저장소로 전달하는 게 많이 사용되죠.


@ XSS 해킹... 예를들면 어떤 것들이 있을까?
주로 사용되는 방법들 중 몇 가지 예를들어 보겠습니다. 첫번째로 게시판에 글을 작성하는 경우 XSS 공격이 사용될 수 있는데요~ 게시판 글에 몰래 스크립트를 추가하는 방법이 대표적인 예입니다. 해당 게시글을 열게되면 자신도 모르는 스크립트가 실행될 수 있죠. 이런 문제가 없도록 해당 게시판의 글을 작성시 악의적인 스크립트를 삽입할 수 없도록 내용의 특수문자를 파싱하는 등의 방법들이 사용되고 있습니다.

또 다른 예로 검색 등의 입력폼이 사용된 경우 입력된 값에 스크립트를 추가하는 방법도 자주 사용됩니다. 원래 목적의 입력된 값이 아닌 스크립트를 수행하기 위한 코드를 주입하여 실행되도록 하는 것이죠.

하나 더 얘기하자면 주소 뒤의 쿼리스트링을 사용하는 방법입니다. 쿼리스트링은 주소 뒤에 붙이는 데이터 값입니다. 이 값이 스크립트를 사용될 수 있는 취약한 경우라면 이를 악용하여 공격하는 방법입니다.

다시 정리하자면...
  • 게시글에 스크립트를 몰래 추가
  • 입력폼에 스크립트를 사용해 실행되도록 입력
  • 주소 입력값 뒤 쿼리스트링등을 사용해 공격

이런 방법들이 XSS의 공격 수단으로 사용되고 있습니다. 다음으로 XSS가 초래하는 위험이 무엇이 있는지 알아보겠습니다.


2. XSS가 초래하는 위험은?


XSS를 통해 공격자가 얻을 수 있는 것은 무엇일까요? 반대로 어떤 위협이 발생할 수 있을지 생각해보면 크게 아래와 같은 것들이 대표적입니다.

- 쿠키캆 정보 탈취 // 사용자 PC에 저장된 쿠키값에 접근해 세션 토큰 및 인증 관련 주요 정보를 탈취 당할 수 있음
- 강제 리디렉션 // 해커가 만들어 놓은 악성 웹사이트로 강제 이동시켜 2차 공격에 노출되도록 함
- 하이재킹 // 탈취한 인증 정보를 사용하여 특정 사이트에 사용자의 계정에 접근
- 입력 이벤트 및 기타 정보 로그 전달 // 사용자가 입력하는 키 값 등의 인터렉션 정보를 탈취하여 전송
- 기존 사이트 화면 및 기능 변경 // 원래 화면이나 기능 들을 악의적으로 변경시킴.
- 공격자 PC로 사용 // 해당 PC를 강제로 다른 서버 공격에 사용

위와 같이 실로 많은 것들을 XSS해킹을 통해 정보가 탈취되거나 악의적인 목적으로 강제 사용될 수 있게됩니다. 결국 XSS에 대한 보안을 강화하지 않았다면 언제든지 해킹을 통해 여러 위험에 노출될 수 있으므로 XSS를 봉쇄할 수 있는 개발 방법이 필요할 것입니다. 다음으로 XSS를 방지하는 방법에 대하여 알아봅니다.


항상 보안에 대하여 경각심을 가지고 행동할 것!

3. XSS를 방지하기 위한 방법은? 우리가 할 수 있는 것은?


XSS를 방지하기 위한 방법들은 다양합니다. 물론 웹사이트를 개발할 때 해킹을 피할 수 있는 보안에 중점을 둔 개발이 필요할 것입니다. 입력폼이나 주소에서 값을 받아 스크립트를 직접 실행하는 부분이 있다면 반드시 특정 태그<script>등은 제외하거나 스크립트가 실행될 수 있는 특수문자를 파싱하도록 해야겠죠.

@ 특수문자 파싱, 이스케이프 처리하기
대부분의 언어는 이런 XSS 방식의 공격에 대응할 수 있는 내장 함수를 제공합니다. php의 경우 대표적으로 html_escape() 함수가 그것인데요 ~ 스크립트 등이 실행되지 않도록 일부 특수문자는 파싱하여 화면에 출력하는 방법들입니다. 간단한 코드 한 줄이지만 있고 없음에 따라 XSS의 위험에서 벗어날 수 있겠습니다. 프레임워크를 사용하는 경우도 XSS 공격을 방어하기 위한 옵션 등도 존재할 수 있습니다.

개발의 노력과 더불어 XSS 해킹에 대하여 항상 주의하고 경각심을 가져야할 것입니다. 자주가는 사이트 링크라도 내가 모르는 이메일 등에서 적힌 링크를 클릭하거나 불필요한 정보를 입력하는 등의 부주의는 피해야 할 것입니다.

여기까지 XSS(크로스 사이트 스크립팅)에 대하여 알아보았습니다. 항상 주의하고 또 다시 확인하는 방법이 중요하겠습니다. 해킹은 언제든 발생할 수 있으니까요!

Previous

nodejs 서버 환경에서 webp 이미지 만들기, sharp 패키지

Previous

[puppeteer] e2e 테스트시 evaluate() 내부에서 console.log 사용하는 방법