3학년 2학기 공부 과정/정보보안

04. 웹 보안

환성 2022. 12. 22. 21:25
728x90

 

1. 웹과 HTTP의 이해

웹의 이해

  • 1989년 팀 버너스 리가 연구 목적의 프로젝트로 시작
  • 프로젝트 당시 하이퍼텍스트 프로젝트라고 불림
  • 수많은 보안 취약점이 내재되어 있어 해킹에 취약

 

HTTP 프로토콜

  • 가장 많이 쓰이는 프로토콜

 

  • 연결 과정
    1. 서버가 준비 상태
    1. 클라이언트는 읽고자 하는 문서를 서버에 요청
    1. 서버는 웹 문서 중에서 요청받은 것을 클라이언트에 전송
    1. 연결 끊음

 

HTTP Request

  • GET 방식
    • 가장 일반적인 HTTP Request 형태, 요청 데이터의 인수를 웹 브라우저의 URL로 전송
    • 최소한의 보안도 유지되지 않는 취약한 방식
  • POST 방식
    • URL에 요청 데이터를 기록하지 않고 HTTP 헤더에 데이터 전송
    • 다른 사용자가 링크로 해당 페이지 X
    • 게시판의 경우 : 목록이나 글 보기 화면은 GET, 게시글 저장, 수정, 삭제는 POST

HTTP Response

  • 클라이언트의 HTTP Request에 대한 응답 패킷
  • 서버에 쓰이는 프로토콜 버전
  • 추가 정보로 전달할 데이터 형식, 길이 등이 MIME 형식으로 표현
  • 데이터 전달이 끝나면 서버 연결 X

 

2. 웹 서비스의 이해

프론트 엔드

  • HTML
    • 프론트 엔드 : 클라이언트, 즉 웹 브라우저에서 실행되는 프로그램 영역
    • 서버에 HTML 문서를 저장하고 있다가 클라이언트가 특정 HTML 페이지를 요청하면 해당 문서 전송
    • 정적인 웹 페이지
    • 웹 브라우저와 웹 서버 사이에 전달되는 값을 변조하여 웹 서버 설정이나 로직을 바꾸는 웹 해킹에서 정적인 웹 페이지는 바꿀 수 있는 가능성이 매우 낮음

 

  • CSS
    • 동적인 웹 서비스를 제공하기 위해서 자바스크립트, 비주얼베이직 스크립트 등이 사용
    • 현재 프론트 엔드를 담당하는 스크립트는 자바스크립트
    • 웹 브라우저에서 해석되어 화면 적용, 웹 서버의 부담을 줄이면서도 다양한 기능 수행

 

백 엔드

  • 웹 서비스를 제공하는데 필요한 REST API를 제공하는 영역
  • ASP나 JSP와 같은 동적 페이지를 제공하는 스크립트를 SSS라고함
  • 클라이언트에 구현된 기능에 필요한 인자를 전달받고, 이 인자에 따라 함수처럼 그에 대한 결과 전달
  • 함수는 URL에 따라 구분, 그 결과는 JSON 형태로 클라이언트에 전달

 

HTTP 분석

  • HTTP는 웹 페이지 송수신을 위하는 프로토콜
  • 서버의 80번 포트로 확립된 소켓상에서 HTTP 요청과 HTTP 응답을 교환하여 네트워크 통신
  • HTTP 패킷 분석
    • HTTP 요청 메시지
      • 패킷 리스트 영역의 Info 열에 GET/파일명 HTTP/1.1로 표시된 프레임이 HTTP 요청 메시지가 포함된 패킷
      • 98번 패킷은 GET 메소드를 사용하여 HTTP1.1프로토콜로 style.css 페이지를 가져오라는 명령
    • HTTP 응답 메시지
      • 패킷 리스트 영역의 Info 열에 HTTP/1.1 200 OK로 표시된 프레임이 HTTP 응답 메시지가 포함된 패킷

3. 웹 해킹

웹 취약점 스캐너를 통한 정보 수집

  • 빠른 시간 내에 다양한 접속 시도를 수행할 수 있다는 것이 장점
  • 실제 보안 문제가 있는 취약점이 아닌 경우도 많음

웹 프록시를 통한 취약점 분석

  • 웹 구조 파악, 취약점 점검할 때 웹 프록시 툴 사용
  • 클라이언트에 설치되고 클라이언트의 통제를 받음
  • 클라이언트가 웹 서버와 웹 브라우저 간에 전달되는 모든 HTTP 패킷을 웹 프록시로 확인
  • 웹 프록시 Burp Suite
    • 설정
    • LAN 설정에서는 주소와 포트의 두 가지 값을 넣음
    • 서버에서 클라이언트로 전송되는 패킷 변조
      • 테스트 환경으로 사용하는 웹 페이지 게시판에서 확인
       
      • [Proxy] - [Options]에서 ‘Intercept responses based on the following rules’ 체크 표시
      • 테스트 1의 본문입니다.에서 2로 변경
       
      • 변조된 글 확인
       
      • 변조는 4에서 해도 되지만 2에서 변조하는 것이 쉬움서버에서 클라이언트로 전송되는 패킷 변조
        • 서버에서 변수 A의 값이 20임을 확인하고 이 값을 클라이언트에 전송
        • A=40으로 바꾸어 전송
        • 변조는 4에서 해도 되지만 2에서 하는게 쉬움

 

구글 해킹을 통한 정보 수집

  • 구글 같은 검색 엔진이 유용
  • 주요 검색 인자
    • site(’wishfree.com’ 도메인이 있는 페이지에서 ‘admin’ 문자열 검색)
      • site:wishfree.com admin
    • filetype(파일 확장자 txt, 문자열 password가 들어간 파일 검색)
      • filetype:txt password
    • Intitle(디렉터리 리스팅이 가능한 사이트 검색)
      • intitle:index.of admin
  • 검색 엔진의 검색을 피하는 방법
    • 가장 일반적 대응 방법 : robots.txt 파일을 만들어 검색할 수 없게 만듬
    • robots.txt 파일은 Useragent와 Disallow를 이용
    • User-agent : googlebot(구글 검색 엔진의 검색 막음)
    • User-agent : *(모든 검색 로봇의 검색을 막음)
    • Disallow : dbconn.ini(dbconn.ini 파일 검색을 막음)

4. 웹의 취약점과 보안

웹의 주요 취약점

  • 명령 삽입 취약점(A1. Injection)
    • 특정 명령 실행하는 코드를 적절히 필터링 하지 못해서 취약점 발생
    • SQL, OS, LDAP 등 웹으로 명령 전달하는 모든 경우에 적용
  • 인증 및 세션 관리 취약점(A2, Broken Authentication and Session Management)
    • 취약한 패스워드 설정
      • 웹의 경우 사용자는 개발자가 설정한 패스워드 그대로 쓰는 경우 많음
    • 사용자 데이터를 이용한 인증
      • 최초 인증 과정은 정상적인 아이디와 패스워드의 입력으로 시작
      • 패스워드가 올바른 경우 접속에 대해 인증, 인증 값으로 쿠키와 같은 세션 값을 넘김
      • 웹 서버가 새로운 페이지에 접근할 때 공격자가 2에서 수신한 인증 허용 값을 전달받으면서 해당 세션이 유효한지 확인
      • 공격자는 세션 인증 값 그대로 사용, UserNo값만 변경하여 이용
  • XSS 취약점(A3. Cross-site Scripting)
    • XSS : 공격자가 작성한 스크립트가 다른 사용자에게 전달되는 것
    • 다른 사용자의 웹 브라우저 안에서 적절한 검증 없이 실행 ,사용자 세션 탈취 변고하고 악의적 사이트로 이동
    • XSS 공격수행→접근(피해자→웹서버) → 스크립트 전달(웹 서버→ 피해자) → 실행 →결과 값 전달(피해자→공격자)
    • 구조
      1. 임의의 XSS 취약점이 존재하는 서버에 XSS 코드를 작성하여 저장
      1. 공격자가 작성해놓은 XSS 코드에 해당 웹 서비스 사용자가 접근
      1. 웹 서버는 사용자가 접근한 XSS 코드가 포함된 게시판의 글을 사용자에게 전달
      1. 사용자의 시스템에서 XSS 코드가 실행
      1. XSS 코드가 실행된 결과가 공격자에게 전달되고 공격자는 공격 종료
  • 취약한 접근 제어(A4. Broken Access Control)
    • 인증된 사용자가 수행할 수 있는 것에 대한 제한을 제대로 적용하지 않은 것을 의미
    • 이 취약점 노출시 다른 사용자가 페이지 접근하여 관리자 권한 악용
    • 인증 우회를 막으려면 웹의 중요 페이지에 세션 값을 확인하는 검증 로직을 입력
    • 디렉토리 탐색
      • 게시판 등에서 파일 내려받을 때 백 엔드 서비스 사용
      • 정상적인 다운로드 페이지 이용하여 다른 파일 다운로드 요청
      • .는 현재 디렉토리, ..는 상위 디렉토리
       
      • 유닉스 시스템의 경우에는 /etc/passwd와 같이 사용자 계정과 관련된 중요 파일 다운로드 시도
  • 보안 설정 오류(A5. Security Misconfiguration)
    • 디렉터리 리스팅
      • 웹 브라우저에서 웹 서버의 특정 디렉터리를 열면 그 디렉터리에 있는 파일과 목록이 모두 나열되어 있는 것을 말함
      • 상당수는 관리자가 설정 사항을 인지 X, 웹 서버 자체의 취약점 떄문에 발생
    • 백업 및 임시 파일 존재
      • 백업 파일을 통해 웹 어플리케이션 내부 로직, DB 접속 정보 획득 가능
      • 예) login.asp의 백업 파일인 login.asp.bak 파일
    • 미흡한 주석 관리
    • 파일 업로드 제한 부재
    • 리버스 텔넷
      • 웹 해킹으로 시스템 권한을 획득 후 해당 시스템에 텔넷과 같이 직접 명령 입력, 확인할 수 있는 셸을 획득하기 위한 방법, 방화벽 있을 때 사용
      • 명령 창 획득
      • 리버스 텔넷용 툴 업로드 : 서버 게시판의 파일 업로드 기능을 이용
      • 공격자 PC의 리버스 텔넷 데몬 활성화 : 서버에서 리버스 텔넷을 보내면 이를 받아 텔넷을 열 수 있도록 준비
      • 획득한 명령 창으로 공격자에게 리버스 텔넷을 보내면 창 획득
       
      • 공격자의 PC에 텔넷 서비스가 열려있고 방화벽의 아웃바인드 정책이 열려 있다면 웹 서버에서 공격자 텔넷으로 접속 가능
  • 민감한 데이터 노출(A6, Sensitive Data Exposure)
    • 데이터 중요도에 따라 암호화 로직 사용, 데이터베이스 테이블 단위에서 암호화 수행
  • 공격 방어 취약점(A7, Insufficient Attack Protection)
    • 웹 애플리케이션 수준에서 자동 탐지, 로깅, 응답 및 공격 시도 차단 포함 권고

 

  • CSRF 취약점(A8, Cross-site Request Forgery)
    • CSRF
      • 불특정 다수를 대상으로 로그인된 사용자가 자신의 의지와 무관하게 공격자가 의도한 행위 수행
      • XSS 공격과 유사
      • XSS는 악성 스크립트가 클라이언트에서 실행, CSRF는 악성 스크립트를 서버에 요청
      • Ex.) wishfree라는 계정이 주문한 물품에 대해 10,000원 결제하라는 내용
  • 취약점 있는 컴포넌트 사용(A9 ,Using Components with Known Vulnerabilities)
    • 사용하려는 컴포넌트, 라이브러리 보안 취약점 검토
  • 취약한 API(A10, Underprotected APIs)
    • 검토 필요

 

 

웹의 취약점 보완

  • 특수 문자 필터링
    • 웹 해킹의 가장 기본적인 형태 중 하나는 인수 조작으로 예외적인 실행을 유발하기 위해 특수문자 포함
    • 본문에 포함되는 특수 문자를 함수를 이용하여 제거 → XSS 취약점 공격 방어

 

  • 서버 통제 작용
    • CSS 기반의 언어로 필터링하는 경우에는 공격자가 로직만 파악하면 필터링 쉽게 무력화, ASP, JSP등 과 같은 SSS로 필터링 로직 수행
  • 지속적인 세션 관리

 

 

'3학년 2학기 공부 과정 > 정보보안' 카테고리의 다른 글

07. 암호의 이해  (0) 2022.12.22
06. 악성 코드  (0) 2022.12.22
03. 네트워크 보안  (2) 2022.12.15
02. 시스템 보안  (0) 2022.12.15
01. 정보 보안의 세계  (0) 2022.12.15