반응형
SMALL

1. Cross site Scripting 이란?


- 주로 웹 어플리케이션에 악성스크립트를 삽입해서 공격하는 기법이다.

- 사용자 세션을 탈취하거나 권한을 획득, 사이트 변조등과 같은 악의적인 목적으로 사용될 수 있다.

- 주로 XSS공격은 2가지로 분류가 가능한데 Reflected방식과 Stored방식으로 분류할 수 있다. 주로 반사형방식은 서버로 내용들이 전송되지 않고 페이지 자체에서 받는 방법을 사용하게 되는데 링크로 접근할시 노출이 된다. Stored방식은 서버에 있는 DB에 악성스크립트를 심어서 사용자가 그걸 클릭하게 되면 자동으로 저장된 악의적인 코드가 동작이 되게 하는 방식이다. 주로 게시판이나 댓글 같은 곳에 많이 사용되는 공격 기법이다.



<Reflected 취약점의 예시>


URL에 seok라는 글자만 추가해줘도 저런식으로 공격이 발생할 수 있다. 링크를 이용한 공격이다.



<Reflected 취약점을 이용한 악성자바스크립트 삽입 공격>


name뒤에 alert라는 경고창 메시지를 삽입해서 이런식으로 공격이 가능하게 된다.



<stored 취약점을 활용한 공격 방식>


이처럼 게시판, 댓글을 사용해서 악의적인 스크립트를 DB에 삽입시키고 공격하는 수법이 Stored 방식이다. 한번 공격을 하고 나면 계속 흔적이 남아있어 지속형 공격이라고도 불린다.



2. 취약점 로그 패턴 분석




ZAP툴에서 XSS라고 이름을 지정해놓고 보고서툴을 만들어서 액티브스캔을 시켜준다. vulnerabilities 취약점을 활용한 것이기 때문에 여기다가 액티브 스캔을 해서 로그를 추출한다.



정상적으로 추출이 되었으면 이런식으로 <script>alert</script>와 같은 방식으로 추출이 됨을 볼 수 있다. 


ZAP 툴에서 보고서형식으로 저장해서 로그를 추출해보면 다음과 같이 많은 패턴들을 볼 수 있다. 우선 추출해본 패턴은 다음과 같다.


- ><script>alert(1);</script>
- "><script>alert(1);</script>
- ‘”<script>alert(1);</script>
- <pre><script>alert(1);</script></pre>
- <div><script>alert(1);</script></div>
- </td><script>alert(1);</script><td>
- </p><script>alert(1);</script><p>
- </h2><script>alert(1);</script><h2>
- javascript:alert(1)


하지만 스구일툴에는 추출되지 않은 패턴들이 있어서 새로운 스노트규칙을 적용해서 추출해줘야 찾은 규칙들이 탐지가 됨을 알 수 있다. 


3. 새로운 스노트 규칙 적용하기




일단 javascript:alert(1)에 대해서 로그결과를 추출해내기 위해 사진과 같이 스노트 규칙을 정해주었다. 기존보다는 조금 추가된부분도 있긴 한데 큰차이는 없다. 하지만 http_client_body와 http_uri의 차이점은 분명히 존재한다. http_uri는 <script>라는 문자열값을 넣으면 그대로 인식해서 탐지가 가능하지만 http_client_body는 <script>라는 문자열을 인식하지 못해 탐지하지 못한다. 그렇기 때문에 %3C와 같은 16진수 문자열 값으로 content값을 넣어주는 것이다. 이렇게 적용하고 sudo rule-update를 시켜 규칙을 적용시킨다.




다시 스캔을 시켜 탐지해보면 사진과 같은화면이 나오게 된다. 내용을 보면 상단부분에 javascript라는 문구가 탐지되었음을 알 수 있다. http_uri를 적용시킨 결과이다.



이번에는 http_clinet_body 출력결과이다. 맨 윗상단에는 탐지가 되지 않았지만 아래로 내려와 body부분을 확인해보면 javascript라고 해서 정상적으로 탐지가 되었음을 볼 수 있다. 지금 적용한 스노트 규칙 말고도 다른 규칙을 적용하게 된다면 사용자가 원하는 패턴을 쉽게 찾아 낼 수 있을 것이다.


반응형
LIST
블로그 이미지

만년필석사

,