정말 많은 취약점들도 위험도를 따지는 우선순위가 존재한다.
보통 이 위험도를 상, 중, 하로 나누는데, 상으로 선정하는 가장 큰 포인트는 관리자의 권한 등을 탈취하여,
실제로 관리자가 할 수 있는 모든 것들을 할 수 있을 때, 가장 크리티컬 하다고 이야기한다.
즉, 이러한 관리자 권한 탈취와 같이 무궁무진한 리스크가 존재하고,
관련된 영향이 존재하는 경우, 보통 위험도를 높게 평가하는 것이다.
그 외에는 발생 빈도, 실제 사고 이력 등을 따져서 그 밖의 위험도를 선정한다고 볼 수 있다.
오늘 다룰 파일 다운로드 취약점, 파일 업로드 취약점, 소스코드 내 중요 정보 노출 취약점,
공개용 웹 게시판 취약점 중에 위험도가 상으로 되어있는 것은 파일 업로드 취약점에 존재한다.
파일 다운로드 취약점도 사실상 위험도 상으로 취급될 수 있는 취약점이지만,
실제 취약점 진단, 모의해킹을 통해서 거의 발생되지 않는 취약점의 형태이다 보니
발생 빈도가 좀 적기 때문에, 보통 중~상 정도를 유지하고 있다고 볼 수 있다.
그 외에 소스코드 내 주요 정보 노출, 공개형 웹 게시판 취약점은 위험도 하로 취급된다.
특히 파일 다운로드 취약점과 업로드 취약점은 취약점 진단, 모의해킹 관련 직무에 지원하게 될 시,
정의, 대응 방안, 웹 셀에 대한 사례 등을 잘 설명할 수 있어야 한다.
파일 다운로드 취약점
정의
웹 애플리케이션에 파일 다운로드 기능이 존재하는 경우, 공격자가 다운로드 시,
파일의 경로를 의도적으로 조작하여 내부 파일 다운로드가 가능해져
시스템 정보 누출, 서비스 장애 등을 유발할 수 있는 취약점을 의미한다.
점검방안
- 위의 사진과 같이 다운로드 링크 주소를 복사한 후, URL을 확인하여 다운로드 방식을 확인한다.
파일 다운로드 방식은 동적 방식, 정적 방식으로 나눌 수 있다.
- 동적 방식 : URL 파라미터에 파일이름 혹은 파일번호를 할당하여 데이터를 처리하는 방식
- 정적 방식 : 특정 디렉터리에 존재하는 파일에 직접 링크를 설정하여 사용자에게 제공하는 방식
정적 다운로드 방식은 첨부파일의 존재 위치와 파일의 이름을 공격자가 쉽게 획득할 수 있으므로
'파일 업로드' 공격 시, 업로드될 파일의 위치를 추정하는 등
웹 서버의 내부 정보 수집에 활용될 수 있으므로, 되도록 정적 방식을 지양해야 한다.
(단, 정적 방식은 다운로드 취약점을 이용한 임의의 파일 다운로드가 불가능하여,
대부분의 경우 다운로드 취약점이 존재하지 않는다.) - 동적 파일다운로드 방식의 경우, 파일명을 나타내는 변수와 파일의 위치를 나타내는 변수를
아래와 같이 수정하여 시스템 내부 파일의 다운로드를 시도한다.
- http://점검대상/bbs/Download/.jsp?bbs=notice&no=11&filename=계약서.hwp&path=/downlpoad
일반적인 다운로드 URL을 의미하며『/download/계약서.hwp』를 다운로드하겠다는 의미이다.
- http://점검대상/bbs/Download/.jsp?bbs=notice&no=11&filename=passwd&path=../../../etc/
unix, linux 계열의 /etc/passwd 파일 다운로드 시도를 의미한다.
- http://점검대상/bbs/Download/.jsp?bbs=notice&no=11&filename=boot.ini&path=../../../
windows 계열의 boot.ini 파일 다운로드 시도를 의미한다. - 자동화 도구(Burp Suite Pro, Acunetix 등)를 사용하여 점검하고자 하는 홈페이지의 취약점을 점검한다.
수동으로 점검할 경우 많은 시간이 소요되고 미탐의 가능성이 존재하여, 보통은 자동화 점검 도구를 통해 점검한다.
대응방안
- 시큐어 코딩을 통해 홈페이지 상에 다운로드 파일명 또는 경로에 ‘../’, ‘..’, ‘/’, ‘\’ 등
경로 조작에 사용될 수 있는 문자열이 포함되지 않도록 검증하고 필터링한다. - 중요 파일 및 디렉토리 등에는 일반 사용자가 접근하지 못하도록 접근 권한을 검증하여,
접근 권한이 있는 사용자만 파일을 다운로드할 수 있도록 한다. - 홈페이지 상에 다운로드 파일의 이름을 데이터베이스에 저장하고 다운로드 수행 시,
요청파일의 이름이 동일한지 여부를 검증하고, 비교하여 일반 사용자가 조작할 수 있는 변수를 제거한다.
파일 다운로드 취약점의 경우에도 보안성 심의를 진행하기 때문에,
특정 케이스를 제외하고 사실상 해당 취약점이 노출되는 경우는 많지 않다.
파일 다운로드 취약점 - 실습
inurl:board intitle:자료실
만약 웹 애플리케이션들이 파일 다운로드 취약점에 대한 대응 조치를 수행해놓지 않았다면,
URL에 대한 변수를 조작하여 웹 해킹을 수행할 수 있을 것이다.
파일 업로드 취약점
정의
웹 애플리케이션에 파일 업로드 기능이 존재하고, 업로드 파일에 대한 필터링 조치가 미흡하여,
서버 측에서 실행될 수 있는 서버 사이드 스크립트 파일(asp, jsp, php 파일 등)을
업로드가 가능해서 발생할 수 있는 취약점을 의미한다.
서버 사이드 스크립트 파일이란 웹에서 사용되는 스크립트 언어 중 서버 측에서 실행되는 스크립트를 의미한다.
클라이언트 요청에 따라 웹 페이지를 생성하고, 데이터베이스와 연계 작업을 처리하는 등의 사용자에게 정보와 기능을 제공한다.
이때, 게시판 내에 첨부파일이 업로드된 파일 경로를 확인하고, 해당 경로에 접근한 후 서버 상의 웹 쉘을 실행하여,
시스템 내부 명령어를 실행하거나 권한을 획득하고, 외부와 연결하여 시스템을 제어할 수 있다.
해당 취약점을 통해 서버에 영향을 미쳐서 권한 상승, 정보 유출,
악성코드 배포 등의 여러 보안 사고가 발생할 수 있으므로, 매우 크리티컬 한 취약점이라고 할 수 있다.
웹 서비스 구동 방법
- Client : 사용자가 웹사이트에 접속한다.
- Web server : 웹 서버(Apache 등)가 웹 서비스를 실행한다.
- Web application : 웹 서버는 PHP와 같은 웹 사이트 개발 언어로 작성된 웹 애플리케이션을 실행한다.
- DB : 웹 애플리케이션은 MySQL 데이터베이스에 저장된 정보를 이용한다.
점검방안
- 파일 업로드(첨부)가 가능한 게시판 등에 서버 사이드 스크립트(ASP, PHP, PHP3, JSP, CGI 등) 및
html 등의 파일을 업로드 시도한다. 이때, 운영 중인 서버의 개발 언어에 알맞은 서버 사이드 스크립트를 업로드한다. - 서버 사이드 스크립트가 업로드가 정상적으로 되었을 경우 '파일 업로드 취약점'의 존재를 추정할 수 있어,
보다 상세한 분석이 필요하다. 업로드가 되었을 경우 해당 파일이 웹서버에서 실행되는지 먼저 점검한다. - 이외로 업로드 차단 기능이 구현되어 있을 경우, 업로드 실패 화면 또는 오류 메시지가 나타날 것이다.
대응방안
- 웹 서버 설정을 변경하여 파일이 저장되는 경로에서 업로드된 파일의 실행 권한을 차단한다.
- 업로드 대상 파일의 확장자를 검증하는 처리 프로그램을 통해 서버 사이드 스크립트 파일의 업로드를 차단한다.
리스트에 적어놓고 리스트에 없는 것들은 전부 허용하지 않는다는 정책을 화이트 리스트 기반 정책이라고 이야기한다. - 우회 기법을 통한 파일 업로드를 제한하기 위해서 파일 업로드 기능 여부를 점검하는 기능을 구현하여 사전에 차단한다.
- 파일이 업로드되는 디렉터리(위치 및 파일명)가 사용자에게 노출되지 않도록 조치한다.
- 웹 서버와 파일이 업로드되는 서버를 물리적으로 분리한다.
파일 업로드 취약점 같은 경우 보안성 심의 과정을 통해 많은 항목들을 보기에는 어려운 부분들이 존재한다.
게시판 같은 경우 만들어져 있는 형태를 사용하는 것이 대다수라 추후의 취약점 점검 과정 등을 통해 확인할 수 있으며,
웹 페이지를 운영할 때, 처음에는 게시판이 필요하지 않다고 생각을 해서 없는 상태로 오픈을 했는데,
추후에 게시판 관련 기능이 필요해서 해당 시점에 추가하는 경우가 생기는 것이다.
파일 업로드 취약점 - 실습
inurl:board intitle:자유게시판
해당 웹 사이트는 위와 같이 gif, jpg, swf 외의 파일은 업로드 제한 조치를 해두어,
파일 업로드 취약점에 대한 대응 방안을 적용한 것을 확인할 수 있다.
반면에, 별도의 업로드 차단 문구 없이 그대로 업로드된 것을 확인할 수 있으므로,
해당 웹 사이트는 파일 업로드 취약점을 가지고 있는 것을 알 수 있다.
아래의 웹사이트는 php로 개발된 사이트이므로 필자가 직접 작성한
cmd 실행 .php 서버 사이드 스크립트 파일을 업로드 시도한 것이다.
소스코드 내 중요 정보 노출 취약점
정의
소스코드 주석에 민감한 정보(개인 정보, 시스템 정보 등) 이 포함되어 있는 경우,
외부공격자에 의해 패스워드 등 보안 관련정보가 노출될 수 있는 취약점을 의미한다.
즉, 편의를 위해 작성해 둔 주석이 개발이 완료된 시점에도 삭제하지 않은 경우에 해당 취약점이 존재한다고 말한다.
점검방안
웹 페이지에서 관리자 도구를 통해 HTML 구조를 관찰하여, 로그인 등
중요 정보가 포함될 것으로 예상되는 웹 페이지에서 민감한 정보가 존재하는지 직접 확인한다.
대응방안
홈페이지 소스코드에는 디버깅 목적으로 주석 ID, 패스워드, 시스템 관련정보 등
보안 관련 정보가 남지 않도록 개발완료 후 제거가 필요하다.
소스코드 내 중요 정보 노출 취약점 - 실습
inurl:member intitle:회원관리
위의 주석 처리 되어있는 ”업무추진비 사용현황”은 아래와 같이 웹사이트에 공개되어있지 않다.
아래는 주석에 포함된 주소를 복사하여 직접 접속한 화면이다.
즉, 웹사이트 상에는 공개되어있지 않은 페이지에 접속이 가능한 것을 볼 수 있다.
이러한 정보는 웹사이트를 운영하는 입장에서는 민감할 수 있기 때문에,
소스코드 내 중요 정보 노출 취약점이 존재한다고 할 수 있다.
공개용 웹 게시판 취약점
정의
웹 서버 구축 시 금전적, 시간적 부담으로 인해 제로보드, 테크노트, 그누보드, 세팔보드 등의
공개용 웹 게시판 소프트웨어를 사용하는 경우가 존재하는데, 해당 소프트웨어를 사용할 경우,
인터넷에 공개된 각종 취약점 정보로 인해 홈페이지 변조 및 공격 등의 주요 보안 취약점이 발생할 수 있다.
특히, 공개용 게시판 소프트웨어는 유로로 사용할 수 있는 게시판과 달리
유지 보수, 보안 점검, 패치, 업데이트 등을 사용가자 직접 해야 되는 단점이 존재하다 보니,
사용자가 최신 버전으로 업데이트를 하지 않고 사용할 경우,
공격자가 이미 특정 버전에서 알려진 취약점을 이용해 공격을 시도할 수 있는 것이다.
실제로 제로보드의 구 버전에서는 파일 업로드 취약점이 발견되었고,
테크노트의 일부 버전에서는 SQL 인젝션 취약점이 발견된 사례가 존재한다.
점검방안
- 점검대상이 운영 중인 공개용 게시판을 확인한다.
운영체제에 따라 검색하는 방법도 존재하며, 브라우저를 통해 직접 검색하는 방법 등 알맞게 사용한다. - 만약 공개용 게시판을 이용하지 않을 경우에는 운영 중인 게시판이 최신 버전인지 점검한다.
대응방안
- 웹 서버에는 공개용 웹 게시판 사용을 지양한다.
- 부득이 사용해야 할 경우 보안 취약점이 존재하지 않도록 보안 패치 또는 최신 버전의 제품으로 설치하며,
정기적으로 게시판 배포 사이트에 방문하여 보안 취약점 정보를 확인한다.
게시판 재설치 시에는 기존 데이터가 삭제될 수 있으므로 백업 작업을 수행한 후 재설치
공개용 웹 게시판 취약점 - 실습
inurl:board intitle:게시판
inurl:bbs intitle:게시판
FCKeditor는 현재 시점에서 3.x 버전으로 업그레이드되면서 Ckeditor로 변경되었으나,
위의 웹사이트와 같이 여전히 2.x 버전인 FCKeditor를 사용하는 경우도 존재한다.
FCKeditor 2.x 버전에는 파일 업로드 취약점, XSS, 권한 관리 취약점 등 몇 가지 공개된 취약점이 존재한다.
intitle:게시판 inurl:zb
intitle:게시판 inurl:zeroboard
제로보드를 사용하는 웹사이트 게시판을 찾는다.
제로보드는 현재 시점에서 제로보드 XE, ZEROTABLE 등으로 다양한 변화를 겪어왔지만,
해당 웹사이트와 같이 여전히 구형 제로보드(2004년 12월 27일에 배포된 버전 4.1 pl 5)를 사용하는 경우도 존재한다.
해당 버전과 더불어 제로보드에는 공개된 보안 취약점이 여럿 존재한다.
인용 : 한국교육학술정보원 KERIS 『웹 서버 및 홈페이지 취약점 점검 가이드』
'IT_정보보안 > 침해대응 & CERT 프로젝트' 카테고리의 다른 글
32. 침해대응&CERT (10) : 웹 취약점 실습_4 (1) | 2024.08.21 |
---|---|
31. 침해대응&CERT (9) : 웹 쉘(Web Shell)이란? (0) | 2024.08.11 |
29. 침해대응&CERT (7) : 웹 취약점 실습_2 (6) | 2024.07.27 |
28. 침해대응&CERT (6) : 웹 취약점 실습_1 (1) | 2024.07.21 |
27. 침해대응&CERT (5) : Shodan을 통한 취약 • 노출정보 검색 (0) | 2024.07.13 |