Computer Science/Security

[HUFS/정보보안] #4 웹 보안

성중 2022. 10. 18. 16:22

WEB / HTTP

웹 서비스의 클라이언트 - 서버 구조
HTTP는 TCP 위에서 동작하며 각 연결이 독립적 (정보를 유지하려면 cookie 사용)

  • 비지속 연결 HTTP: non-persistent connection은 하나의 연결을 통해 하나의 리소스만 전송하며 여러 개의 파일 전송은 매번 연결/단절이 필요해 성능이 저하된다
  • 지속 연결 HTTP: persistent connection은 하나의 연결을 통해 여러 개의 리소스를 전송할 수 있어 성능이 우수해 기본적으로 사용되는 방법이다

 

HTTP Request 예시 (GET/POST/PUT/DELETE)
HTTP Response 예시 (200 ~ 500번대 상태 코드)

 

쿠키 / 웹 캐시(프록시) 

쿠키(Cookie)는 대부분의 웹사이트에 지원되며, 사용자 인증 / 장바구니 / 사용자 세션 관리 등에 사용될 수 있지만 보안 상의 위협이 될 수도 있다

 

쿠키의 동작

HTTP 응답으로 쿠키 헤더가 도착 > 사용자의 PC에 쿠키 저장 > 사용자가 다음 요청에 쿠키를 실어서 보냄 > 유효시간동안 서버는 DB에 쿠키 저장

 

웹 캐시의 동작

웹 캐시(프록시)는 사용자가 서버까지 가지 않고도 원하는 리소스를 얻도록 전달해 주는 별도의 장치(Cache)로 빠른 응답 / 트래픽 감소 / 빠른 콘텐츠 분배 및 기반 구조를 이룬다

 

캐시에서 구버전을 가져오지 않기 위해 날짜를 지정한 조건부 GET 요청

 

웹 취약점 분석

SSS(Server Side Script): 동적인 페이지를 제공하는 스크립트
CSS(Client Side Script): 웹 브라우저에 의해 해석되고 실행되는 프로그램

웹 취약점을 분석하기 위해 취약점 스캐너 (프로그램)을 사용하거나 프록시의 서버/클라이언트간 모든 HTTP 데이터를 분석해볼 수 있다

 

데이터를 변조해 시스템의 오작동을 유도
robot.txt 파일을 조작해 검색 엔진의 크롤링 범위 관리
OWASP(국제웹보안표준기구)에서 해마다 상위 10개의 주요 취악점 발표

 

인젝션 취약점

일반적인 로그인 구조
PW와 관계없이 로그인 되도록 SQL문을 의도적으로 입력

SQL 인젝션(SQL Injection)은 웹 애플리케이션과 DB가 연동되는 부분에 공격자가 임의의 SQL 명령어를 삽입하여 공격하는 원리로, 로그인이나 검색 등에 사용된다. 따라서 일부 기호 입력을 막거나 검증해 사용자 입력이 바로 DB에 들어가지 않도록 해줘야 한다

 

MSSQL 인젝션의 대상 명령어들

 

XSS 취약점 / CSRF 취약점 공격

XSS(Cross Site Scripting)은 공격자가 작성한 스크립트를 다른 사용자에게 간접적으로 전달하는 것으로, 브라우저에 돌아가는 스크립트를 게시판의 본문 등에 넣어 다른 사용자 정보를 탈취하는 방식이다

 

XSS 취약점 공격 (피해자의 쿠키 탈취)

지금은 많이 줄었으며 글에 스크립트가 포함될 수 없도록 제한하는 방식으로 예방할 수 있다

 

CSRF(Cross Site Request Forgery) 취약점이란 불특정한 다수가 자신의 의지와 무관하게 공격자의 의도한 행위를 하도록 만드는 공격으로, CSRF가 포함된 게시글을 일반 사용자가 볼 때 자동으로 해당 상품을 구매하는 스크립트가 실행하는 등의 방법이다

* 클라이언트가 아닌 서버 기반 정보를 사용해 대처 (사용자 ID 등을 세션으로 서버에서 가져옴)

 

이 외에도 보안상 취약점이 있는 컴포넌트, 라이브러리, 프레임워크를 사용하거나 API 사용시 보안에 취약한지 검토가 필요하다!

 

쿠키

쿠키(Cookie)란 사용자가 웹 사이트에 방문할 때 생기는 4KB 이하의 파일로, 쿠키 내용을 통해 클라이언트의 신분을 알 수 있고 사용자의 정보를 수집해 활용한다 (클라이언트와 서버 양 쪽에 존재)

  • 사이트의 개인화: 아이디와 비밀번호 및 사용자의 성향까지 파악
  • 장바구니 시스템: 사용자의 장바구니를 쿠키에 저장
  • 웹 사이트 이용 방식 추적: 사이트 방문 유형을 파악해 마케팅에 활용
  • 타겟 마케팅: 광고주가 광고 효과를 알기 위해 쿠키로 사용자 이용 정보 수집

 

쿠키를 이용한 인증/세션 관리 취약점

 

직접 객체 참조

웹에 등록되지 않은 파일에 직접 접속해 디렉터리 목록을 보고 원하는 데이터를 가져가는 디렉터리 탐색이나, 서버에 업로드 권한이 열려 있는 경우 웜 파일이나 쉘 프로그램을 전송하는 파일 업로드가 발생할 수 있다

* 웹 서버 설정에서 막거나 외부에 보낼 파일 외에는 폴더에 두지 말아야 함

 

리버스 텔넷

방화벽의 outbound (내부에서 외부) 방향으로 웹 서버에 침입하고 연결을 유지하는 리버스 텔넷

* 파일 업로드 방지 및 outbound 방화벽 설정을 강화

 

그 외의 취약점 대처법

  • 웹 암호화: 로그인 과정 및 모든 페이지를 암호화한다
  • 특수문자 필터링: <>&”?’+;*/ 등 특별한 목적으로 사용되는 문자들을 예외 처리한다
  • 서버 기반 통제: 필터링은 서버 기반으로 하는 것이 보안상 더 안전하다

 

소스코드 취약점 유형 체크