SMALL
알기사 PART 03 어플리케이션 요점 정리
- DNS
- Zone 파일 개념
- ZONE 관리하는 도메인 영역
- ZONE FILE 관리 도메인에 대한 정보를 담고 있는 파일
- 질의 유형(암기)
- ANY : 도메인에 대한 모든 레코드 질의 (DRDOS로 악용)
- TXT : SPF 발송자 메일서버 인증 (DRDOS로 악용)
- AXFR : 존 버전에 상관없이 무조건 존 전송 요청
- EX) dig@192.168.100.10 dochi.com axfr
- IXFR : 존 버전을 비교하여 상위 버전일 경우 존 전송 요청 ( I = increase)
- EX) dig@192.168.100.10 dochi.com ixfr=2017033101
- dig 명령어
- dig@[네임서버] 도메인 [쿼리유형] [쿼리옵션]
- 쿼리 옵션
- +norecurse :authoritative 네임서버에 반복적 질의를 수행하여 정상 응답 여부 점검
- +tcp : 53/tcp 허용 여부를 점검
- +trace : 계층적 위임설정 상태 점검, 최상위 루트 도메인부터 최종 질의대상 도메인까지 계층 구조에 따른 질의 수행
- DNS Spoofing 공격
- DNS 서버의 Cache 정보를 조작하여 희생자가 의도하지 않은 주소로 접속하게 만드는 공격
- UDP 프로토콜의 비연결 특성 취약점을 이용한 것
- 식벽하기 위해서는 Transaction ID, 출발지 목적지 주소 필요
- 대응책
- named 대몬을 최신버전으로 패치
- 스니핑을 기본으로 하기 때문에 스니핑을 탐지 및 차단
- 중요한 host는 hosts 파일에 직접 등록
- DNS Cache Poisoning 공격
- DNS 서버 자체를 공격한다.
- 다수의 조작된 응답 공격대상 DNS 서버로 전송
- 대응책
- DNS를 최신버전으로 패치
- 사용자를 제한하여 허용하도록 설정
- DNSSEC을 사용
- 재귀적 질의
- named.conf
- allow-recursion {none;};
- allow-recursion{192.168.110.1;192.168.100.0/24}
- allow-transfer {none;};
- .allow-transfer{192.168.100.2;};
- named.conf
- Zone 파일 개념
- SQL Injection
- From SQL Injection
- 특수문자(',") 입력시 에러메시지 발생여부 확인으로 취약한지 파악 가능
- 'or 1=1# , 'or '1'=1#, 'or 'a' = 'a'# 등 조건절을 무조건 참으로 만드는 입력값을 삽입
- 대응책
- php.ini 파일의 "magic_quote_gpc=on
- \(back slash)를 통한 익스케이프
- mysql_real_escape_sting() 함수 사용
- SQL Injection을 수행할 수 있는 블랙리스트 생성
- 선처리 질의문
- Union SQL Injection
- 한 쿼리의 결과를 다른 쿼리의 결과에 결함하여 공격하는 기법
- union Select 를 파악하기 위해서 선행 select와 후행 select문의 컬럼 개수가 일치 해야한다.
- order by1 #을 통한 에러 메시지로 컬럼 개수 파악이 가능하다.
- 중요 코드 'union select 'admin','admin','admin'#
- Stored Procedure SQL Injection
- SQL_Serverdml xp_dirtree 확장 프로시저 실행
- index.php? no=123; EXEC master..xp_dirtree 'C:/'
- ; (세미콜론) 문자를 통해 명령어를 연속 수행
- Mass SQL Injection
- 대량의 DB 값이 변조
- Mass SQL Injection 이 발생하여 테이블의 문자형 컬럼 데이터 모두에 악성코드의 유포지 정보를 삽입
- 대응법
- 특수문자 필터링(블랙리스트 등록)
- 입력되는 문자열의 길이 제한
- MS_SQL의 경우 악용되는 프로시저 제거
- 웹 어플리케이션 데이터베이스 사용자 권한 제한
- 선처리 질의문
- Error-Based SQL Injection
- 에러 값을 기반으로 한 단계씩 점진적으로 DB 정보를 획득하여 공격하는 기법
- Bilnd SQL Injection
- 쿼리 결과의 참 거짓을 통해 의도하지 않은 SQL문을 실행하여 공격하는 기법
- 중요 코드 'and 1 =1 #(참)' and 1=2#(거짓)
- information_schema :DB에 대한 메타데이터를 제공하는 스키마
- information_schema.table : DB에 있는 모든 테이블 정보를 가지고 있는 테이블
- information_schema.columns : 데이터베이스에 있는 모든 테이블의 컬럼정보를 가지고 있는 테이블
- limit, substr 을 이용하여 컬럼명 문자를 하나씩 순서대로 추출
- 크로스 사이트 스크립트 (XSS)
- 게시판 같은 곳에서 사용자 입력값에 대한 필터링이 제대로 이루어지지 않을 경우, 악의적인 스크립트 삽입 공격
- Stored XSS
- 악성 스크립트가 저장된 게시판의 자료를 요청하여 악성코드 스크립트가 동작하는 방식
- iframe 테그
- 대응법
- htmlspecialchars()
- <script> alert()</script>
- Reflected XSS (반사형 XSS)
- 악성 스크립트가 포함된 요청 정보를 처리하는 과정에서 악성 스크립트가 포함된 응답 페이지가 생성되어 공격하는 방식
- DOM based XSS
- 응답 페이지에 관계없이 웹브라우저에서 발생한다. 단, 응답 페이지의 자바 스크립트가 DOM 객체를 통해 요청 URL의 파라미터가 참조하면서 악성 스크립트가 동작하게 된다.
- 대응법
- 사용자의 입력값에 대한 검증은 클라이언트가 아닌 서버에서 해야된다.
- HTML 특수 문자 코드로 입력되는 값들은 이스케이프 처리 한다.
- HTML 테그를 허용해야 하는 것만 화이트 리스트 정책을 적용한다.
- 크로스 사이트 요청 변조 (CSRF)
- 비정상적인 경로와 정상적인 경로를 구분하지 못하게 만들어서 게시판 설정 변경, 회원 정보 변경등의 문제를 만드는 공격
- <img src ="조작된 요청">
- 대응책
- HTTP 요청 내에 예측할 수 없는 임의의 토큰을 추가하여 정상적인 요청과 비정상적인 요청을 판별하도록 한다.
- 중요한 기능에 대해서는 사용자 세션검증 또는 재인증을 받도록 한다.
- 운영체제 명령 실행
- ;,&&,||, 등 2개 이상의 명령어를 연속해서 실행하는 명령어들
- 리눅스 URL 파라미터에 ls, cat 등의 명령어 삽입
- 윈도우 URL 파라미터에 dir, config 등의 명령어 삽입
- 대응법
- 운영체제 명령어를 실행할 수 있는 문자가 포함되어 있는지를 필터링
- 화이트 리스트 명령어
- 파일 업로드 취약점
- 파일 업로드 기능으 존재하여 웹쉘을 업로드 하여 실행 하는 취약점
- 대응법
- 확장자에 대한 적절한 필터링
- 업로드 파일을 저장하기 위한 전용 디렉토리를 별도 생성
- 파일 다운로드 취약점
- 파일 다운로드시 파일의 경로 및 파일명을 파라미터로 받아 처리하는 경우 값을 조작 하여 다운 받을 수 있다.
- 디렉터리 트레버셜 : URL 주소에 ../ 상위 디렉터리로 이동 후 특정 파일을 호출하는 방식
- 파입 삽입 취약점
- include(), require() 함수
- 대응법
- php.ini allow.url.fopen =off
- 약한 문자열 강도 취약점(디션어리 공격)
- 정보 누출 취약점
- httpd.conf Error Document 페이지 설정
- php.ini display_error = off
- HTTP 응답 분할 취약점
- HTTP 응답 헤더에 포함 되어 있는 클라이언트에 다시 전달될 때, 개행문자인 CRLF 포함되면 응 답이 2개로 분리 가능
- 대응책
- 클라이언트 요청 파라미터값이 서버 프로그램에서 쿠키로 사용 되거나, 리다이렉션을 위해 Location 응답 헤더로 사용 되거나, 기타 응답 헤더 설정에 사용될 경우 적절한 필터링을 통해 차단
- 중요 정보를 보여주는 페이지는 케쉬를 사용하지 못하도록 설정한다.
- 디렉터리 인덱싱/ 리스팅 취약점
- 응답 메시지 <title> index of /home/board</title>
- httpd.conf options-indexes FllowSynLink
- tomcat(web.xml) listing 파라미터를 false 로 설정
- 웹 메소드 취약점
- <LimitExcept GET POST>
- order allow, deny
- deny from all
- </LimitExcept>
- <LimitExcept GET POST>
- 관리자 페이지 노출 취약점
- 관리자 페이지에 대한 접근 제어 설정
- <Directory "/var/www/html/admin">
- order Deny,Allow
- deny from all
- Allow from 192.168.159.153
- </Directory>
- <Directory "/var/www/html/admin">
- 관리자 페이지에 대한 접근 제어 설정
- 검색엔진 정보 노출 취약점
- robots.txt
- 기타 웹서버 보안 대책
- 심볼릭 링크 사용 설정 제거
- option -indexes -FollwsymLinks
- 해더 정보 최소화
- ServerTokens
- proc
- min
- os
- full
- ServerTokens
- 웹서버 설정파일 주요 내용
- ServerRoot "/etc/httpd"
- pidFile "run/httpd/pid" 웹서버가 기동될때 자신의 PID를 기록한 파일의 위치 설정
- 심볼릭 링크 사용 설정 제거
- 웹로그 분석
- 클라이언트가 웹서버에 접속하면 웹서버가 응답한 내용은 엑세스 로그(access log) 파일에 기록,
- 오류 응답은(error log)
- 보안서버
- 정보통신망에서 송,수신 하는 정보를 암호화하여 전송하는 웹서버
- 취약한 암호화 통신 방법으로 알려진 SSL2.0, SSL3.0 프로토콜을 비활성화
- ssl.conf 파일 설정
- SSLProtocal all -SSLv2 -SSLv3
- SSLProtocal -all +TLSv1 +TLSv1.1 +TLSv1.2
- 취약한 암호 방식 제거
- ssl.conf
- SSLCiperSuite ALL -> 취약한 설정
- SSLCiperSuite ALL :!aNULL:!EXP:!ADH:!DES:!RC4:!MD5
- ssl.conf
- ssl.conf 파일 설정
- From SQL Injection
LIST
'도치의 IT > 정보보안' 카테고리의 다른 글
SSL-VPN(Virtual Private Network) 이란? (0) | 2021.07.12 |
---|---|
17회 정보보안기사 시험 후기 (0) | 2021.06.01 |
알기사 PART 04 침해사고 분석 및 대응 (0) | 2021.05.27 |
침입 탐지 시스템 SNORT (0) | 2021.05.24 |
DRP(재난 복구 계획) 7가지 요약 (0) | 2021.05.24 |