본문 바로가기

교육 및 자격증/정보보안기사 : 실기

애플리케이션

728x90

sql인젝션

 : 사용자의 입력값으로 웹에 sql 쿼리가 완성되는 약점을 이용하며, 입력 값을 변조하여 비정상적인 sql 쿼리를 조합하거나 실행하는 공격.

magic quotes_gpc = On

 //gpc는 get post cookie의 약자로 전달되는 인자가 gpc이면 싱글쿼터, 더블쿼터 등  특수문자를 일반문자로 치환해줌

php 일정 버전 위

prepared statement(선처리 질의문)

즉, SQL 쿼리문을 선처리 하여 이후 입력되는 변수 값을 항상 문자열 변수로 다루기 때문에 사용자가 어떤 악의적인 변수를 삽입하더라도 sql 인젝션을 막을 수 있다.

 

 - 일반 질의문 : DB에서 컴파일, 권한체크, 쿼리실행 단계를 요청 시마다 매번 거치게 되어(동적 쿼리 생성)성능상의 문제 및 사용자 입력값에 따라 의도하지 않은 쿼리가 실행될 수 있는 가능성이 있음

 - 선처리 질의문 : 외부로부터 입력값을 제외한 쿼리 부분을 미리 컴파일(쿼리분석 및 최적화) 한 후 -> 반복적으로 입력값만을 설정해서(바인드한다)실행하는 방식.

?으로 바인드 위치로 id, passwd를 바인드하고 있다.

("select id, pass, nick from member where id=? and pass=?");

파라미터 필터링을 통한 방지

문자열을 필터링할 수 있는 사용자의 정의 함수를 생성하여 파라미터에 대한 검증을 수행.

입력되는 문자열의 길이를 제한하고 숫자인지 체크하는 함수를 사용

MS-SQL의 경우

master..xp_cmdshell, xp_startmail, xp_sendmail과 같은 확장 프로시저는 운영체제 명령 실행, sql 인젝션 등에 이용되기 때문에 제거하는 것이 안전하다.

웹 애플리케이션이 사용하는 DB 사용자 권한을 제한한다.

 

XSS

 : 웹 애플리케이션 보안 취약점 중 하나로, 공격자가 웹 페이지에 악의적인 스크립트 코드를 삽입하여 사용자의 브라우저에서 실행되도록 하는 공격 기술이다.

stored

공격자가 취약한 웹 서버에 악성 스크립트를 저장(게시판)해 놓으면 희생자가 해당 자료를 요청할 때 해당 악성 스크립트가 삽입된 응답 페이지가 전달되어 클라이언트 측에서 동작하는 방식

relfect

외부에 있는 악성 스크립트가 희생자 액션에 의해 취약한 웹서버로 전달되고, 웹서버의 응답 페이지에 해당 악성 스크립트가 삽입되어 희생자 측에서 동작하는 방식.

dom based

웹 브라우저에서 응답 페이지에 포함된 자바 스크립트(정상적인 스크립트)가 동작하면서 DOM 객체를 실행할 때 URL 등에 포함된 악성 스크립트가 동작하는 방식

 

사용자 입력값에 대한 검증을 서버단에서 실시

<, >, ;

사용자입력 문자열에서 특수문자를 일반문자로 치환하여 처리한다.(이스케이프처리)

htmlspecialchars() 함수

출력값 처리

보안헤더 설정

웹 어플리케이션에서 http응답 헤더를 통해 필터링 기능 활성화

content Security Policy 설정

사용자 세션 관리

 

CSRF

 : 웹 어플리케이션에서 정상적인 경로를 통한 요청과 비정상적인 경로를 통한 요청을 서버가 구분하지 못할 경우 공격자가 스크립트 구문을 이용하여 정상적인 사용자로 하여금 조작된 요청을 전송하도록 하여 게시판 설정 변경, 회원정보 변경 등의 문제가 발생할 수 있는 취약점을 말한다.

간단하게 스크립트로 서버를 공격해서 희생자의 권한을 탈취하는 공격이다.

referrer검증

 백 엔드에서 request의 referrer을 확인해 도메인이 일치하는지 검증하는 방법

security token 사용(referrer검증이 불가한 경우)

웹 애플리케이션에 존재하는 모든 http 요청 내 예측할 수 없는 임의의 토큰을 추가하여 정상적인 요청과 비정상적인 요청을 판별하는 것

xss과 공격 방식이 유사하므로 xss에 대한 대응책도 필요

 

운영체제 명령 실행

웹 어플리케이션에서 system(), exec()와 같은 시스템 명령어를 실행할 수 있는 함수를 제공하며 사용자 입력값에 대한 필터링이 제대로 이뤄지지 않을 경우 공격자가 시스템 명령어를 호출할 수 있는 취약점.

url에 명령어 삽입

사용자 입력값 체크를 통해 허용하지 않는 문자(;,&&, ||, |)를 포함한 경우 경고 메시지 반환

사용자 입력값에 운영체제 명령어를 실행할 수 있는 문자가 포함되어 있는지 적절히 필터링하여 차단

웹 운영상 운영체제 명령어를 사용해야 한다면 허용 가능한 명령어 리스트를 선정하여 해당 명령어만 실행할 수 있도록 설정

 

파일업로드

 : 

업로드 파일에 대한 파일 타입 및 확장자 검증을 통해 악성스크립트파일 업로드 차단

업로드 파일을 저장하기 위한 전용 디렉터리를 별도 생성 후 웹서버 설정을 통해 업로드 디렉터리에 있는 서버 사이드 스크립트 파일이 실행되지 않도록 설정하거나 직접 url 호출을 차단하도록 설정

업로드하는 파일의 개수나 크기에 제한

 

 

 

파일 다운로드

파일 다운로드 시 파일의 경로나 파일명으로 파라미터를 받아 처리하는 경우 이를 필터링하지 않으면 공격자가 이를 조작해 허용되지 않은 파일을 다운 받을 수 있는 취약점

 

다운로드 파일명에 대한 검증

외부에서 입력하는 파일경로와 이름에 대해 허용하는 경우 디렉터리와 파일에 접근할 수 없게 제한

{../, ./, %, ..\, .\}

 

파일 삽입

: 공격자가 악성 서버 스크립트를 서버에 전달하여 해당 페이지를 통해 악성 코드가 실행되도록 하는 취약점을 말한다.

 

 

1. 관리자는 소스코드에 include, require 등의 구문/함수가 존재하는지 검증

만약 사용자의 입력값을 통해 파일명이 결정된다면 외부의 악의적인 파일이 포함되어 실행되지 않도록 php설정 파일인 php.ini 파일에서 allow_url_fopen을 off설정

2. 사용자 입력 값 검증

파일 경로나 URL을 직접 사용하기 전, 입력 값 검증을 통해 유효한 값만 사용(../필터링)

3. 파일 경로 설정

로드할 파일 경로를 하드코딩하는 것이 아니라, 설정 파일을 통해 파일 경로를 관리 ex) 파일경로 숨기기등

4. 파일 확장자 검사

로드할 파일의 확장자를 검사하여, 유효한 파일만을 로드하도록 설정

URL 파라미터 변조 취약점

 : 실행경로에 대해서 접근제어를 검사하지 않거나 불완전하게 구현하여 공격자로 하여금 URL/파라미터 값을 조작하여 중요정보에 접근 가능해지는 취약점

 

 

CGI 취약점

CGI 스크립트가 질의 문자열을 제대로 처리하지 못해 발생

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'교육 및 자격증 > 정보보안기사 : 실기' 카테고리의 다른 글

내용 정리  (0) 2024.04.01
홈페이지 보안 취약점 대응 가이드(행안부 2008. 9.)  (0) 2023.04.21
  (1) 2023.04.16
보안 솔루션 종류 및 특징  (0) 2023.04.15
part2. 네트워크(sec4,5,6)  (0) 2023.04.07