본문 바로가기
개인 공부/WEB

[웹해킹] xss에 들어가기 전 기초 공부하기

by 아메리카노와떡볶이 2021. 7. 13.
728x90
xss 공격을 위해 알아야 할 기초적인 지식들 정리

xss를 풀이하기전에 자바스크립트나 html문, 세션,쿠키탈취 등 모르는 개념이 많아서 공부하고 기록하기 위해 포스팅으로 정리해둠

 

.java script

xss 공격을 위해 꼭 필요한 언어이다. 내가 기존에 php페이지를 구성할때 사용하던 HTML과 CSS는 정적인 언어이다.

즉 이것들을 통해서 웹페이지를 구성하면 하나의 정적인 화면이 구현되고 그것을 바꿀 방법이 없다는 뜻.

하지만 웹은 이렇게 단조롭게 구성되는 것이 아니라 사용자와 다양하게 커뮤니케이션하기때문에, 버튼을 클릭하거나 데이터를 입력하거나 또는 서버가 유저(클라이언트)에게 경고창을 띄우거나 질문을 하거나 다양한 동적인 활동또한 필요하다. 이때 활용되는 언어가 javascript이다.

 

즉 요약하면, HTML과 CSS로 만들어진 웹페이지가 동적인 역할을 할 수 있도록 변경해주는 언어라고 할 수 있다.

java script는 변수 생성, 반복, 조건, 함수, 객체를 가지고 있는 프로그래밍 언어.

여기까지 이해했을 때 java script를 집중적으로 한번 공부해봐야하나 생각했는데 그냥 xss 를 공부하면서 모르는게 나올때마다 찾아보는식으로 방향을 잡기로 했다. 

 

.xss(cross site script)

크로스 사이트 스크립트 말 그대로, 웹에서 사용자의 입력값에 대한 필터링이 제대로 이루어지지 않는 경우에

공격자가 입력 폼에 악의적인 스크립트를 사용하여 해당 스크립트가 희생자 측에서 동작하도록 하여 악의적인 행위를 수행하는 취약점.

예를 들어서 다음과 같은 html문이 있을 떄

위의 문구를 출력하는 페이지를 구현한 것이다. 이때 이 페이지는 xsstext를 get방식으로 전달받고 페이지에 출력하는데

위의 출력에서는 어떠한 값도 전달하지 않은 것이다.

<button onclick="location.href='./login2.php'">comehere</button>

이때 xsstext로 위와 같은 스크립트를 주게되면 

위의 그림처럼 comhere 버튼이 생기고, 내가 임의로 설정한 페이지로 접속하게 된다. 예시에서는 내가 만든 웹을 넣었지만 악의적인 공격자는 피해가 생길수있는 접속 주소로 유도하여 공격하는 것이다

 

대표적인 xss공격 몇가지를 알아보자.

stored xss
쉽게 말해서 게시판 같은 곳에 공격자가 게시글을 작성하는데, 악성 스크립트를 써놓는 것이다. 그래서 다른 사용자가 그 악성 스크립트가 삽입된 페이지를 읽으면, 스크립트가 실행되는 것

위와 같은 스크립트를 게시글에 작성하면, 

 

위처럼 you been hacked 경고메시지가 출력되게 된다.

 

Reflected Xss
공격자가 악성 스크립트가 있는 url을 클라이언트에게 보내서, 그 url을 눌렀을때 해당 url에 맞는 응답을 서버에서 보내준다.
이때 url에 악성스크립트를 삽입함으로써, 공격자가 원하는 결과를 얻어내는 것. (따라서 URL을 통해 데이터를 전달하는 GET 방식이 주로 사용된다.)

 

위와 같이 코드를 작성해준 php 페이지를 작성한 뒤에

 

위와 같은 스크립트를 쓴 게시글을 작성한다. 게시글에 sessionhijack.php에 글을 읽은 클라이언트의 쿠키를 전송하는 스크립트를 작성했고, sessionhijack.php에서는 그 쿠키를 data.txt 파일에 작성하게 될 것이다.

 

게시글을 클릭하면,

 

위와 같이 자신의 쿠키가 url을 통해 전송된다.

그렇게되면 공격자의 텍스트파일에 희생자의 쿠키가 저장되는것이다.

 

 

.xss에 취약한 경로들
.javaScript 영역이 출력되는 경우
이벤트핸들러에 값을 삽입할 경우
HTTP request header 부분에 입력이 들어갈 경우
HTTP response header 부분이 출력되는 경우
입력값이 서버에서 JSON 객체로 만들어지는 경우

 

 

.이벤트 핸들러
웹페이지에서 사용자가 특정 행동을 할 때, 해당 행동을 규정하는 요소
앞서 다룬 javaScript를 통해, 사용자의 행동에 대한 이벤트 핸들러를 만들고 해당 이벤트가 수행되면
내부의 코드가 수행된다.
대표 예시 ) onclick, onerror, onmouseover 등 

 

.xss와 이벤트 핸들러
이벤트 핸들러가 발동되면 수행되는 내부코드에 xss 스크립트를 넣어놓고, 이벤트가 수행되면 xss 스크립트가 수행됨
주로 onclick, onmouse, onload, onerror를 통한 xss 공격이 많음
특히 onerror 핸들러는 해당 태그에서 에러가 발생하면 바로 수행되기때문에, 에러를 유도하여 xss 공격이 가능

 

728x90

'개인 공부 > WEB' 카테고리의 다른 글

[웹해킹] XSS GAME - LEVEL 2  (0) 2021.07.13
[웹해킹] XSS GAME - LEVEL 1  (0) 2021.07.13
[웹해킹] LOS 30 - (Ouroboros)  (0) 2021.07.03
[웹해킹] LOS 29 - (Phantom)  (0) 2021.07.03
[웹해킹] LOS 28 - (Frankenstein)  (0) 2021.07.03

댓글