IT/ISSUE

안전해야할 백신에 취약점이? Avast XSS 취약점

종금 2019. 11. 19. 13:03
반응형

 

 

취약점의 종류는 XSS로 아주 별거 아닌 것처럼 보이는 곳에 스크립트 구문이 실행되는 취약점이다.

 

취약점 번호는 아래와 같이 2019년 따끈따끈한 취약점이다.

CVE-2019–18653 & CVE-2019–18654

 

그럼 먼저 우리는 XSS가 무엇인지 알아보아야 하지 않을까?

 

XSS 풀어쓰면 크로스 사이트 스크립팅으로(왜 CSS가 아닐까..) 

직역하면 사이트 간에 스크립팅이 된다는 것이다.

직역해도 모르겠는가? (실은 나도 직역만 보면 무슨 소리인가 싶다.)

 

일단 크로스 사이트 스크립팅 전에 우리가 인터넷(웹 어플리케이션)을 사용할때 클라이언트 사이드와 서버 사이드에 대해서 알아야한다.

먼저 클라이언트 사이드란 크롬, 익스플로러, 엣지와 같이 고객들이 직접 보고 적는 등의 실제 사용자가 이용하는 영역에 대한 곳을 클라이언트 사이드라고 한다.

하지만 웹은 클라이언트 사이드만으로 이루어진다면 돈주고 인터넷을 연결하며 해당 웹사이트의 서버까지 들릴필요가 없이 그냥 컴퓨터만 사서 크롬만 설치 후 사용할 것이다.

즉 우리가 웹을 사용하는 이유는 서버사이드가 필요한데 서버사이드의 경우 실제 사용자들은 건들 수 없지만 필요한 데이터(로그인정보, 게시판글, 검색하여 나오는 블로그등)가 있다.

 

간단한 예시를 들어보자

만약 내가 서울시 강남구에 맛집을 찾으려고 구글에 "강남구 맛집"을 검색한다. (이는 클라이언트 사이드이다)

만약 해당 자료가 지금 내 컴퓨터에 저장되어 있으면 컴퓨터는 디스크를 검색하여 저장되어 있는 강남구 맛집을 찾아오겠지만 강남 주민 혹은 강남에 관련된 사람이 아니면 그 누가 어느 지역의 맛집 정보와 같은 모든 정보들을 컴퓨터 디스크에 저장하고 있겠는가

그러기에 우리는 해당 구글 서버에 저장되어 있는 강남구 맛집 정보를 불러야 한다. 즉 "강남구 맛집 정보"가 서버사이드에서 가져올 것이다.

즉 정리하자면

구글 검색창에 "강남구 맛집"을 검색하는 행위는 브라우저(크롬, 엣지 등)에서 처리하는 내용으로 클라이언트 사이드

강남구 맛집 결과를 출력하는 것은 구글 서버에 저장되 있는 내용이므로 서버사이드이다.

이후 다시 블로그를 클릭하는 행위는 브라우저에서 행동하는 것이므로 클라이언트 사이드

해당 블로그 내용을 브라우저에서 출력하는 것은 서버에서 블로그 내용을 가져오는 것이므로 서버사이드이다.

 

그럼 다시 XSS로 넘어와서 이 취약점이 무엇인가를 설명해보자

먼저 사용자가 건들 수 있는 사이드는 딱 하나 클라이언트 사이드입니다.

(서버의 경우 직접 웹셸을 하거나 침투하지 않는한 무슨 짓을 하든 서버 값은 변경할 수 없다.)

그러면 XSS공격을하려면 클라이언트의 어떤 부분을 이용해야하는가 

먼저 다시 단어를 보자

Cross Site Scripting

위의 설명을 보아서 알겠지만 크로스 사이트라는 것은 클라이언트 사이드와, 서버 사이드 두개의 크로스 된다는 것을 의미한다. 그리고 스크립팅은 스크립트 구문을 이용한다는 뜻이다. 

이 말을 정리하면 공격자는 XSS공격을 클라이언트 사이드 부분의 스크립트 구문을 이용하여 서버사이드에 조작을 요청한다는 것이다.

 

간단한 예시로 

<script> alert(1); </script>의 구문을 게시글로 쓴다고 생각해보자.

만약 F12를 누르고 게시판에 위 스크립트를 적는다면 이도 1이라는 경고창이 뜰 것이다.

하지만 이는 XSS 공격이 아니다. 왜냐? F12는 클라이언트 사이드만을 조작하고 서버에 아래 스크립트를 저장하지 않기때문이다.

하지만 게시글을 저장을 누른다면 게시글은 이제 클라이언트 사이드가 아닌 서버 사이드에 저장되게 된다. 그리고 게시물을 열었을 때는 서버에서 경고 1을 보내게 되고 그로 인해서 서버를 통해 경고창을 실행하게 되며

이를 XSS 공격이라 한다.

 

이제 좀 이해가 되었을것이라 생각하고 XSS에 대해 세부적 설명에 들어가자

(위가 이해 안가면 아래보다 위를 한번더 읽도록 하자)

 

XSS 공격은 크게 두가지로 저장형과 반사형이 존재한다. 그럼 아래 설명을 보자.

1. Stored XSS

   서버에 저장을 하여 공격하는 기법이다. 가장 대표적인 예는 게시글이다.

게시글에 스크립트 구문을 작성하고 서버에 저장 후 누군가가 그 저장된 글을 열때마다 스크립트를 실행하는 방법이다. 

장점은 무차별적으로 많은 공격을 진행할 수 있다. 하지만 꼬리가 길다. (글이 남으니까 누군가가 찾을 수도 있다.)

이는 무차별적 CSRF에 공격에도 이용될 수 있는 굉장히 무서운 공격이다.

 

2. Reflect XSS

    반사형으로서 서버에 저장되는 것이 아닌 서버에서 바로 응답만 요청한다. 예를 들면 검색창이 대표적일 것이다.

검색창에 스크립트 구문 넣으면 알람창이 뜰 수 있다. (물론 왠만한 사이트는 다 이를 막아놓았다.)

일단 스크립트를 해당 사이트에서 필터링하고 있는지 등에 확인하려고 사용할 수 있다. (그냥 파라미터 조작이 최고다!)

 

 

그럼 이제 개념 설명을 끝내고 해당 취약점을 시연하도록 해보자.

 

1. AVAST 백신중 취약 버전 백신을 준비하자. 

준비한 버전은 Avast internet security 19.3.2369 

AVAST 백신 설치자체가 인터넷을 물고해서 취약버전 겨우 구해서 인터넷 연결끊고 겨우 실행

 

2. 설치후 백신 버전확인

3.  방화벽 모드 On

4. 크로스사이트 스크립팅 언어의 WiFi 연결 ><embed src=http://www.naver.com>

5. 그런데 연결이 안된다.

6. 그래서 방화벽 모드 먼저 끄고 다시 연결후 방화벽 모드를 실행해보면

7. 하지만 그러면 연결시 팝업창(알림)이 안떠서 설정부터 다시확인해보았다.

분명 일단 버전은 같고한데 설정이 좀 다르다.

특히 저 List of Network Public이 보이지 않는다.

허용 규칙또한 만들어지지않는다.

아무리봐도 취약버전 사용하기위해 불법으로 다운로드 받아 활성화가 안되서인거같다.

 

오랫동안 준비했는데 바로 포스팅 못해서인가 ㅜㅜ 어쩔수없지만 이걸로 끝내야할거같다

 

 

#20191203 추가분

 

실시간 감시모드를 킬 수 있어서 다시 실험해본 결과물이다.

 

위에 떠야하는데 안뜬다.

그래서 실제 시연 영상에는 http:가 없기에 이부분을 지우고 다시시도해보았지만

 

똑같은 결과이다.. 뭐가 잘못된거지 좀더 생각해보아야겠다.

 

 

#참고한 포스팅

    https://medium.com/bugbountywriteup/5-000-usd-xss-issue-at-avast-desktop-antivirus-for-windows-yes-desktop-1e99375f0968

 

#여담 뭔가 용두사미된 포스팅..

반응형