@ SQL Injection 공격
- Web Application에서 입력 받아 데이터베이스로 전달하는 정상적인 SQL 쿼리를 변조, 삽입하여 불법 로그인, DB 데이터 열람, 시스템 명령 실행 등을 수행하여 비정상적인 데이터베이스 접근을 시도하는 공격 기법
- 조작한 입력으로 데이터베이스를 인증 절차 없이 접근 및 자료를 무단 유출하거나 변조 할 수 있음
- 무료 SQL Injection 취약점 스캐너
- Nikto : GNU 기반 오픈 소스로 웹서버 및 SQL Injection에 대한 취약점 점검, 리눅스 기반
- SQLMap : 블라인드 SQL Injection을 자동으로 수행하는 도구로 python에서 개발
- Absinthe : GUI 기바의 도구로 블라인드 SQL Injection 취약점에 이용, 데이터베이스의 스키마와 목록을 자동화 과정으로 다운로드 함.
1) 공격 유형에 대한 분류
1. Error Base SQL Injection (에러 기반 SQL)
- DB 쿼리에 대한 에러 값을 기반으로 한 단계씩 점진적으로 DB정보를 획득 할 수 있는 방법
- DB 쿼리에 대한 에러가 외부로 노출되는 취약점을 이용한 공격
2. Blind SQL Injection
- 오류 메시지가 아닌 쿼리의 참과 거짓을 통해 데이터를 추출하는 방식
- 쿼리의 참/거짓에 대한 반응 형태에 대한 파악이 우선된다.
2) 공격 방식에 의한 분류
1. Form SQL Injection
- HTML Form 기반 인증을 담당하는 어플리케이션의 취약점이 있는 경우 사용자 인증을 위한 쿼리가 참이 되도록 하여 인증을 우회한다.
- 공격이 성공하는 경우 반환되는 레코드 셋의 첫번째 레코드에 해당하는 사용자 권한을 획득하게 됨.
2. Union SQL Injection
- union select 쿼리를 이용하여 한 쿼리의 결과를 다른 쿼리의 결과에 접합하여 공격하는 기법
- ex) Select id,pw from member where id = ' {' union select 'admin','qqqq} '
3. Stored Procedure SQL Injection
- 저장 프로시저는 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합을 의미한다.
4. Mass SQL Injection
- 기존 sql injection의 확장된 개념으로 한 번의 공격으로 대량의 db값이 변조되어 홈페이지에 치명적인 영향을 미치는 공격
- DB값 변조 시 악성 스크립트를 삽입하여, 사용자가 변조된 사이트 방문 시 감염 되거나 악성 bot이 설치됨
5. SQL Injection 대응 방안
- 데이터베이스와 연동하는 스크립트의 모든 파라미터를 점검하여 사용자의 입력 값에 SQL 쿼리문이 삽입되지 않도록 특수문자를 필터링한다.
- 입력되는 문자열의 길이를 제한한다.
- 숫자일 경우 숫자인지 체크하는 함수를 사용한다.
- php의 경우 magic_quote_gpc 옵션을 on 해준다.
@ XSS (Cross Site Script) 공격
- 검증되지 않은 입력 값으로 인해 사용자의 웹 브라우저에서 의도하지 않은 악성 스크립트가 실행되는 취약점
- 외부 입력이 동적 웹페이지 생성에 사용될 경우, 전송된 동적 웹 페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되는 취약점
- 공격을 통해 사용자의 개인정보 및 쿠키정보 탈취, 악성코드 감염, 웹 페이지 변조 등이 발생
1) XSS 유형
1. stored XSS
- 공격용 악성 스크립트가 공격 대상의 DB등에 보존되어 있는 경우를 지속형 XSS 라고 한다.
- 주로 게시판이나 방명록, 회원 정보 같은 사용자의 입력 값을 저장, 열람 할 수 있는 곳에서 발생한다.
2. Reflected XSS
- 공격용 악성 스크립트가 공격 대상의 사이트가 아닌 다른 사이트에 있는 경우 이를 반사형 XSS라고 한다.
- 주로 사용자 입력 값이 필터링 없이 그대로 웹 브라우저에서 파싱되는 경우 발생한다.
2) 보안 대책
- 사용자 입력 값은 반드시 서버단에서 검증
- 문자열 특수 기호등을 변환함수를 사영하여 치환하여 저장토록함
- 게시판 등에서 HTML 태그 허용 시 HTML 태그의 리스트(화이트 리스트)를 선정한 후, 해당 태그만 허용하는 방식 적용
@ CSRF( Cross Site Request Forgery) 공격
- 웹 어플리케이션에서 정상적인 경로를 통한 요청과 비정상적인 경로를 통한 요청을 서버가 구분하지 못할 경우 공격자가 스크립트 구문을 이용하여 정상적인 사용자로 하여금 조작된 요청을 전송하도록 하여 게시판 설정 변경, 회원 정보 변경 등의 문제가 발생할 수 있는 취약점
- 공격자는 정상 사용자가 인증한 세션이 특정 동작을 수행하여도 계속 유지되어 정상적인 요청과 비정상적인 요청을 구분하지 못하는 점을 악용하여 피해가 발생
- 공격을 당한 사용자의 권한을 공격자가 그대로 사용하게 되므로 사용자의 권한 수준에 따라 그 피해 범위가 달라질 수 있음
=> 보안대책
1. 입력화면 폼 작성 시 GET 방식보다는 POST방식을 사용하고 입력화면 폼과 해당 입력을 처리하는 프로그램 사이에 토큰을 사용하여, 공격자의 직접적인 URL 사용이 동작하지 않도록 처리
2, 중요한 기능에 대해서는 사용자 세션검증과 더불어 재인증을 유도
@웹 로그 분석
1) 웹 로그 분석 목적
1. 접속 사용자의 행위/취향 등을 분석
2. 보안 사고 발생 시 추적할 수 있는 증거자료
3. 보안사고 발생 전 이상 징후, 해킹시도, 해킹 성공 여부를 확인
4. 다양한 웹 공격 패턴 파악
5. 접속시간, 접근 파일 정보, 사용자 정보 등을 확인
2) HTTP 요청메소드
- GET : URL로 지정된 리소스를 서버에 요청
- POST : URL로 지정된 리소스에 데이터를 전달하여 이를 처리한 결과를 서버에 요청
- HEAD : GET과 유사하나 HEAD에 대한 응답에는 실제 리소스 없이 헤더 정보만 포함된다. 실제 해당 페이지는 수행이 된다. 다만 그 결롸고 헤더 값만을 전송한다.
- OPTIONS : 서버가 지원하는 메소드를 확인 하는 목적으로 사용
- CONNECT : 웹 서버를 프록시로 사용하여 클라이언트와 웹서버간 터널링 목적으로 사용
- PUT : 요청에 포함된 데이터를 서버에 저장
- TRACE : TRACE 요청을 수신한 서버는 수신한 요청을 메시지 형태로 클라이언트에게 전송함. Health check 용도로 개발
- DELETE : 요청 리소스 삭제
3)HTTP 응답 상태 코드
1. 1XX : information
100 - Continue(클라이언트로부터 일부 요청을 받았으며 나머지 정보를 계속 요청함)
2. 2XX : Success
200 - OK
201 - Created (put 메소스에 의해 원격지 서버에 파일 생성됨)
202 - Accepted (웹 서버가 명령을 수신함)
3. 3XX : Redirectoin
301 - Moved permanently(요청된 정보의 위치가 영구적으로 변경)
302 - Found(일반적인 위치 변경)
304 - Not Modified (요청된 정보가 변경되지 않았음)
4. 4XX : Client Error
400 - Bad request (잘못된 요청)
401 - Unauthorized (인증이 필요)
403 - Forbidden (접근 권한이 없음)
404 - Not Found
5. 5XX : Server Error
500 - Internal server error (내부 서버 오류)
'IT 자격증 > 정보보안 기사' 카테고리의 다른 글
정보보안기사 실기 _ 라우터 보안 (0) | 2015.05.20 |
---|---|
정보보안기사 _ 네트워크 기본학습 4 (0) | 2015.05.17 |
정보보안기사 실기 _ 네트워크 기본학습 3 (0) | 2015.05.16 |
정보보안기사 실기_네트워크 기본학습 2 (0) | 2015.05.13 |
정보보안기사 실기_네트워크 기본 학습_ OSI 7 Layer (0) | 2015.05.10 |