※ 웹 보안에 자주 사용되는 공격기법

1. Cross Site Scripting(크로스 사이트 스크립팅)

문제점 : 게시판이나 웹 메일 등에 악의적인 스크립트를 삽입하여 비정상적인 페이지가 보이게해 타 사용자의 사용을 방해하거나 쿠키 및 기타 개인정보를 특정 사이트로 전송하는등의 문제

설명 : Cross Site Scripting은 말그대로 브라우저 상에서 스크립트를 실행하여 공격하는것을 말합니다.

웹서버를 공격하는 방식이 아닌 브라우저를 통해 다른 사용자를 공격하는 것을 말합니다.

다른사용자에게 악성 코드를 설치하는 등 여러가지 공격을 수행합니다.

Cross Site Scripting은 근본적인 해결책이 없는 공격 방식으로서 굉장히 유의하지 않으면 막기 힘든 방법입니다.

공격방법 :

위의 예제처럼 자바스크립트가 동작하는 페이지에 삽입하여, 다른사용자가 해당 페이지를 로드하는 순간에 다른 사용자의 쿠키를 해커서버에 저장하는 방식이 있을수 있습니다.

대처방법 : 예방책으로는 글을 등록할때 HTML 태그 필터링을 하여 태그를 제거하는 방법이 있습니다.

2. SQL Injection(SQL문 삽입공격)

문제점 : 웹어플리케이션에 의도적으로 sql문을 삽입하여 로그인 인증과정을 우회하거나 공격자의 악의적인 쿼리문을 DB에 보낼수 있는 문제

설명 : SQL injection은 사용자의 입력이 Back-end Database에 바로 전달 될때, 입력에 SQL 구문을 넣어 DB를 조작할수 있는 치명적인 공격 방법입니다.

공격방법 :

[HTML]

[SERVER]

대처방법 : 문자열 필터링 하는방법이 있습니다. iBatis 사용할경우 ##을 사용하면 된다.

3. Parameter Manipulation(파라미터 변조)

문제점 : 웹어플리케이션이 사용자의 파라미터값을 검증하지 않을경우 이를 악용하여 어플리케이션이 비정상적으로 동작하게끔 하는 문제

설명 : WEB Application 에서 사용하는 파라메터를 강제로 입력하는 공격방법으로서 파라메터를 강제로 HTML 페이지에서 수정하여 변조된 파라메터로 서버로 전송하는 공격방법입니다.

공격방법 :

위와같은 예제는 클라이언트에서 실행이되므로 사용자 PC에서 변조가 손쉽게 이루어질수있으므로 서버쪽에서 아무런 검증이 없을경우 잘못된 상품가격으로 결제처리가 됩니다.

대처방법 데이터가 변경이되는 로직은 클라이언트에 구현하지않는다.

어쩔수 없이 구현이 되었을경우 서버측에서 필히 검증이 되어야한다.

4. Directory/Path Traversal (디렉토리/경로 탐색)

문제점 : 웹 서버 설정상의 오류나 중요 파일의 위치 오류를 이용하여 디렉터리 리스팅을 통해 특정파일에 접근하거나 중요정보를 획득할수 있는 문제

설명 : URL에서 경로를 직접 사용을 한다면 조작된 디렉토리 명령으로 공격을 할수있습니다.

공격방법 :

대처방법 디렉토리 경로는 고정으로 하며 넘어온 파일명은 문자열 필터링한다.

5. 시스템 배너 정보 노출

header_isue

문제점 : Respose Header 위와같이 시스템정보가 명시되어 있음

설명 :  시스템 배너에 시스템의 서버 종류 및 버전 정보가 명시되어 있어, 공격자에게 해당 정보를 제공하고 있습니다. 공격자는 이 정보를 해당 시스템 버전에 해당하는 취약점 공격을 수행하는데 사용합니다. 

대처방법 :  

Apache/conf/httd.conf 설정에서 

LoadModule headers_module modules/mod_headers.so 로드되었는지 확인후

ServerTokens 옵션

Prod 서버명(Apache)

Min  서버 종류,  마이너버전까지

Major   서버 종류,  메이저버전까지

OS   서버 종류,  버전,  운영체제의 종류

Full  웹서버 종류,  버전,  운영체제의 종류,  설치된 모듈

ServerTokens {옵션}    #설정한 옵션에따라  Response Header Server에 보여지는 정보를 바꿀수있다.  ( Prod로 설정한다. 기본은 Full로 설정되어있음 )

ServerSignature Off  설정으로 Error 페이지등에서 보게되는 웹서버 정보를 숨길 수 있다.

X-Powered-By: PHP/5.3.11 Hidden  : Header unset X-Powered-By을 추가한다.

 

위 공격방법 말고도 많이 있지만 흔히 사용되는 방법만 정의하였습니다.

위 공격기법은 흔히 사용되는 방법이며 개발자가 소홀히 하는 부분이기도 하다.

조금만 신경을 쓰면 충분히 막을수 있으며 해결방법도 구글링에서 검색하면 많은 정보가 있습니다.

블로그 이미지

532

처음 프로그래밍을 시작한 개발자들은 Hello World!를 기억 할 것이다. Hello world가 Hell World가 될 줄 몰랐던 한 개발자의 이야기. 게시글의 출처를 표기하며, 출처를 남기지 않고 펌을 하는것에 대해 법적 책임을 묻지 않습니다.

,