본문 바로가기

분류 전체보기

(70)
[웹 서버 취약점] 웹 로그 분석 ① 개념엑세스 로그와 에러 로그엑세스 로그(access log) : 클라이언트의 요청으로 웹서버가 응답한 내용 저장에러 로그(error log) : 클라이언트의 요청으로 웹서버에 오류가 발생했을 경우 해당 내용 저장웹 로그 분석 목적접속 사용자의 행위/취향 준석보안사고 발생 시 추적할 수 있는 증거자료보안사고 발생 전 예상 징후, 해킹 시도, 해킹 성공 여부 확인다양한 웹공격 패턴파악접속 시간, 접근 파일 정보, 사용자 정보, 요청 방식, 성공 여부 등 확인 ② 웹로그 구조웹 로그 종류NCSA CLF(Common Log Format)Apache/Tomcat 기본 포맷NCSA ELF(Extended Log Formet)NCSA CLF + Referef값 + User-Agent값W3C ELFReferer와 ..
[웹 서버 취약점] 웹 서버 설정파일 주요 지시자 아파치 설정파일(httpd.conf) 기준으로 작성 일반설정ServerRoot "경로": 웹서버가 설치된 최상위 데릭터리 경로 지정. 해당 경로에는 설정파일, 로그파일, 모듈 등이 위치Listen 포트: 클라이언트가 접속할 웹서버의 리스닝(Listening) 포트 지정USER 사용자GROUP 그룹명 : 서비스를 제공하는 서버 프로세스를 실행할 사용자와 그룹 지정 - 설정된 사용자/그룹명 권한으로 프로그램이 실행되므로 Root는 절대 쓰지말고, nobody와 같은 새로운 계정을 만들어 로그인 쉘 설정을 "/sbin/nologin"으로 지정해 로그인 수 없는 계정으로 실행하게 한다.ServerToken 레벨 : HTTP 응답 시 헤더의 Server 필드를 통해 제공할 웹서버, OS, 모듈 등의 정보 레벨 지..
[웹 서버 취약점] 웹 서버 보안대책 웹 서비스 최소 권한 사용자 운영① 개념웹서버 운영 시 위험을 최소화 하기 위해 최소한의 권한을 가진 사용자와 그룹으로 웹서버 프로세스 실행 필요웹서버 프로세스가 root 권한으로 구동될 경우, 시스템 전체의 제어권을 탈취당해 피해 범위가 확산할 가능성이 있으므로 별도의 권한으로 서버 프로세스를 실행해 피해 범위를 최소화한다.② 대응책웹서버 프로세스를 실행할 별도의 사용자 및 그룹을 생성하고 해당 사용자로 시스템에 로그인할 수 없도록 설정한다. (apache) apache 사용자,그룹을 생성하고 해당 사용자의 로그인 쉘 부분을 /sbin/nologin(/bin/false)으로 설정해 시스템에 로그인할 수 없도록 한다.웹서버 설정파일에 서버프로세스의 실행권한을 해당 사용자 및 그룹으로 설정한다.(apach..
[웹 서버 취약점] 기타 웹 서버 취약점 디렉터리 리스팅 취약점(Dirctory Listing)① 개념웹 애플리케이션을 사용하고 있는 서버의 미흡한 설정으로 인해 인덱싱(리스팅) 기능이 확성화가 되어있으면 공격자가 강제 브라우징을 통해 서버의 모든 디렉터리 및 파일 목록을 볼 수 있는 취약점디렉터리 인덱싱 기능 : 활성화 시, 웹서버 구조뿐만 아니라 백업 파일이나, 공개되어서는 안 되는 파일 등이 노출될 수 있음② 공격과정특정 페이지(.php)가 아닌 디렉터리 경로(/home/board/)를 요청한다.HTTP 응답 메시지를 확인하면 상태코드 200 및 파일의 리스트를 확인할 수 있다. 디렉터리 리스팅 취약점이 존재하면, 웹 브라우저상에 해당 디렉터리 내의 디렉터리/파일 정보가 그대로 노출되는 것을 확인할 수 있으며, 해당 디렉터리/파일을 클릭..
[웹 애플리케이션 취약점] 개발 보안 가이드라인 사용자에게 전달된 값(Hidden Form 필드, 파라미터)을 재사용할 경우 신뢰해서는 안된다.1차 인증 -> 2차 인증 -> 최종 처리 시, 파라미터를 재사용하지 말자. 하더라도 최종처리는? 서버에서 수행.최종 통제 메커니즘은 반드시 서버에서 수행되어야 한다.자바스크립트, VB 스크립트 등을 사용해 클라이언트 측에서 입력값을 검증하는 것은 쉽게 우회될 수 있으므로 서버에서 최종 점검하는 것이 반드시 필요하다.1차 검증은 클라이언트, 최종 검증은 서버 측에서 할 수 있도록 개발클라이언트에게 중요 정보(ID/PWD) 를 전달하지 않는다.클라이언트에서 실행되는 컴포넌트에 중요정보 하드코딩은 절대 안된다. 쿠키에 중요 정보를 전달할 경우 암호화해서 사용한다.중요 정보 전송 시 POST 메소드 / SSL(HTT..
[웹 애플리케이션 취약점] 기타 취약점 정보누출 취약점① 개념웹 애플리케이션의 민감한 정보가 개발자의 부주의로 인해 노츨되는 것주석구문에 포함된 정보가 의도치 않게 노출에러페이지/메시지를 통한 불필요한 정보 노출정보누출은 자체만으로 피해가 크진 않지만, 공격자가 공격하기 전 사전 정보 수집과정에서 실마리를 제공해주는 역할을 한다.② 대응책웹서버 설정 파일(httpd.conf)를 통해 사용자 정의 에러 페이지를 설정한다.ErrorDocument 지시자를 이용해 각 에러 코드별로 에러페이지를 생성하여 등록PHP 환경의 설정파일(php.ini)을 통해 에러메시지를 차단한다.php.ini 파일의 display_errors = Off 추가HTTP 응답 분할 취약점(Response Splitting)① 개념클라이언트의 HTTP 요청에 포함된 요청 파라미..
[웹 애플리케이션 취약점] 불충분한 세션 관리 취약점 불충분한 세션 관리 취약점① 개념웹 애플리케이션에서 사용자가 로그인할 때 매번 동일한 세션 ID를 발급하거나 세션 타임아웃을 너무 길게 설정하였을 경우 공격자가 사용자의 세션을 재사용하여 해당 사용자의 권한을 탈취할 수 있는 취약점 ② 공격과정 admin 계정으로 로그인 및 세션 쿠키 정보 획득웹 프록시를 통해 admin 로그인 후, 세션ID(PHPSESSID) 정보 획득(ex.Cookie: PHPSESSID=..특정 패턴이 있는 세션 ID..)다른 브라우저에서 탈취한 세션 ID 정보로 로그인HTTP 세션 하이재킹 : 탈취한 세션 ID를 이용하여 다른 브라우저에서 admin 계정 세션을 가로채기를 성공하는 것. ③ 취약점 판단 기준세션 ID를 분석 및 변조하여 로그인 시도 시 로그인에 성공할 경우 해당 ..
[웹 애플리케이션 취약점] 파일 삽입 취약점 파일 삽입 취약점File Inclusion① 개념공격자가 악성 서버 스크립트를 서버에 전달하여 해당 페이지를 통해 악성코드가 실행되도록 하는 취약점LFI(Local File Inclusion) : 삽입할 악성 서버 스크립트 파일의 위치가 로컬 서버에 위치RFI(Remote File Inclusion) : 삽입할 악성 서버 스크립트 파일의 위치가 원격지에 위치 ② 공격 절차include 함수를 이용한 페이지 확인if(..) {$target =$_REQUEST[fname];...include($target) //외부로부터 입력받은 target파라미터를 이용해 include 수행}include 함수 : 지정한 파일(페이지)을 인수로 받아 현재 페이지에 포함해 실행시켜주는 함수. 만약 파일/페이지 정보를 외부로..