SMALL

알기사 PART 03 어플리케이션 요점 정리

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

 

 

 

 

 

 

 

LIST

+ Recent posts