무기는 끈기

[Web Hacking / 웹 해킹] XSS 대응방안 'HTML Entitiy 치환' + HTML 에디터에서의 대응방안 본문

Hacking/Web Hacking

[Web Hacking / 웹 해킹] XSS 대응방안 'HTML Entitiy 치환' + HTML 에디터에서의 대응방안

김유비야 2024. 1. 16. 20:16

지난 글에선 XSS 공격 기법을 사용할 경우 막아놓은 것들을 어떤 방법을 사용해서 우회할 수 있는지 알아보았다.
글 보러가기 -> https://yubi323.tistory.com/78

 

[Web Hacking / 웹 해킹] XSS Bypass Trick 우회 트릭 기법 알아보기 (script 길이 제한, img 태그 활용, event ha

XSS 공격기법을 사용하다보면 다양하게 막아놓은 것을 찾을 수 있다. 그럼에도 불구하고 이런저런 우회 기법을 사용하여 공격할 수 있기에, 해당 공격들에 방어하기 위해선 어떤 우회 방법이 있

yubi323.tistory.com

 

이번 글에선 XSS 공격기법에 대한 대응방안을 알아보려고 한다.

XSS 공격기법에 대한 가장 분명한 대응방안은 바로 HTML Entity 치환 이다.

HTML Entity 치환 표

XSS 공격기법에 대해 알아볼 때 XSS 취약점이 있는지 확인하는 가장 우선적인 방법이
< ' " >
-> 이렇게 4가지 특수문자가 출력되는지를 확인하는 것이었다.

이처럼 < ' " > 는 XSS에서 굉장히 중요한 역할을 하기 때문에 해당 특수문자 + 사용될 수 있는 것들을 미리 HTML Entity 표현 방식으로 치환해두는 것이다.

현재로선 우회하긴 쉽지않고, 가장 정확한 방법이라고 볼 수 있다.


XSS 공격 기법 대응방안은 생각보다 굉장히 간단하고, 분명하다.

여기에 추가로 알아두면 좋은 것이 있다.

티스토리도 마찬가지지만, 여기저기에서 게시글을 작성할 때 작성 페이지에서 HTML Editer를 지원하는 경우가 있다.
이럴 경우 보안에 취약하기 때문에 특별하게 제공하는 솔루션이 있다.

티스토리의 HTML 에디터

가장 좋은 솔루션은 바로, 해당 HTML 에디터 기능을 없애는 것이다...


하지만 이 기능을 꼭 유지하고 싶은 경우에 제공하는 솔루션을 알려주겠다.

 

Step 1. 파라미터로 받는 데이터에서 HTML 특수 문자들을 전부 HTML Entity로 치환한다.

Step 2. 허용해줄 tag들을 식별해 HTML 문자들을 다시 HTML 특수문자로 복구한다. (화이트 리스트 기반)

Step 3. 복구한 태그 중 악의적인 event handler가 있는지 Blacklist 기반으로 필터링 한다. (블랙 리스트 기반)

 

해당 스텝 3가지를 순서대로 따라하여 꼭 지킨다면, HTML 에디터를 사용해도 XSS 공격 당할 확률을 낮출 수 있다.