홈페이지 웹취약점 표준 점검항목 |
No. |
코드 |
점검항목 |
설명 |
조치영역 |
1 |
OC |
운영체제 명령 실행 |
웹 서버에 존재하는 명령어 실행 가능 함수 인자를 조작하여 특정 명령어 실행이 가능한 취약점 |
소스코드 |
2 |
SI |
SQL 인젝션 |
입력 폼에 악의적인 쿼리문을 삽입하여 DB 정보, 타 사용자 권한 획득이 가능한 취약점 |
소스코드 |
3 |
XI |
XPath 인젝션 |
XPath 쿼리문 구조를 임의로 변경하여 DB 정보 열람, 타 사용자 권한 획득이 가능한 취약점 |
소스코드 |
4 |
DI |
디렉토리 인덱싱 |
본 페이지의 파일이 존재하지 않을 때 자동적으로 디렉토리 리스트를 출력하는 취약점 |
서버 |
5 |
IL |
정보누출 |
개발자의 부주의, 디폴트로 설정된 에러 페이지 등 웹 어플리케이션에서 민감한 정보가 노출되는 취약점 |
소스코드 |
6 |
CS |
악성콘텐츠 |
정상적인 컨텐츠 대신에 악성 컨텐츠를 주입하여 사용자에게 악의적인 영향을 미치는 취약점 |
소스코드 |
7 |
XS |
크로스사이트 스크립트(XSS) |
웹 사이트를 통해 다른 최종 사용자의 클라이언트에서 임의의 스크립트가 실행되는 취약점 |
소스코드 |
8 |
BF |
약한 문자열 강도(브루트포스) |
비밀번호 조합규칙(영문, 숫자, 특수문자 등)이 충분하지 않아 추측 가능한 취약점 |
소스코드 |
9 |
IN |
불충분한 인증 및 인가 |
웹 어플리케이션에서 사용자 인증 및 접근제한 미흡으로 불법 접근 및 조작이 가능한 취약점 |
소스코드 |
10 |
PR |
취약한 패스워드 복구 |
취약한 패스워드 복구로직을 통해 다른 사용자의 패스워드를 획득, 변경할 수 있는 취약점 |
소스코드 |
11 |
SM |
불충분한 세션 관리 |
단순 숫자 증가 방법 등의 취약한 특정 세션의 ID를 예측하여 세션을 가로채거나 중복 접속을 허용하는 경우 타 사용자의 세션을 획득하여 권한 획득 할 수 있는 취약점 |
소스코드 |
12 |
CF |
크로스사이트 리퀘스트 변조 (CSRF) |
로그온 한 사용자 브라우저로 하여금 사용자의 세션 쿠키와 기타 인증 정보를 포함하는 위조된 HTTP 요청을 취약한 웹 어플리케이션에 전송하는 취약점 |
소스코드 |
13 |
AU |
자동화공격 |
정해진 프로세스에 자동화된 공격을 수행함으로써 수많은 프로세스가 진행되는 취약점 |
소스코드 |
14 |
FU |
파일업로드 |
파일 업로드 기능을 이용하여 시스템 명령어를 실행할 수 있는 파일을 업로드 하는 취약점 |
소스코드 |
15 |
FD |
경로추적 및 파일다운로드 |
다운로드 함수 인자를 조작하여 서버에 존재하는 파일 다운로드 가능한 취약점 |
소스코드 |
16 |
AE |
관리자페이지 노출 |
단순한 관리자 페이지 이름, 설정, 설계상 오류 등 관리자 메뉴에 직접 접근할 수 있는 취약점 |
서버 |
17 |
PL |
위치공개 |
임시파일, 백업파일등에 접근이 가능하여 핵심정보가 노출될 수 있는 취약점 |
서버 |
18 |
SN |
데이터 평문전송 |
서버와 클라이언트 간 통신 시 암호화 하여 전송을 하지 않아 중요 정보 등이 노출되는 취약점 |
서버 소스코드 |
19 |
CC |
쿠키 변조 |
보호되지 않는 쿠키를 사용하여 값 변조를 통한 사용자 위장 및 권한 상승 등이 가능한 취약점 |
소스코드 |
20 |
MS |
웹 서비스 메소드 설정 공격 |
PUT, DELETE 등의 메소드를 악용하여 악성 파일(웹쉘) 업로드가 가능한 취약점 |
서버 |
21 |
UP |
URL/파라미터 변조 |
URL, 파라미터의 값을 검증하지 않아 특정 사용자의 권한 획득이 가능한 취약점 |
소스코드 |
붙임1 |
|
홈페이지 웹취약점 표준 점검항목 비교 |
‘11 |
‘13 |
비고 |
||||
1 |
OC |
운영체제 명령실행 |
1 |
OC |
운영체제 명령실행 |
|
2 |
|
SQL 인젝션 |
|
|
SQL 인젝션 |
|
3 |
|
XPath 인젝션 |
|
|
XPath 인젝션 |
|
4 |
|
디렉터리 인덱싱 |
|
|
디렉터리 인덱싱 |
|
5 |
|
정보누출 |
|
|
정보누출 |
|
6 |
|
악성콘텐츠 |
|
|
악성콘텐츠 |
|
7 |
|
|
|
|
|
|
8 |
|
약한 문자열 강도(브루트포스) |
|
|
약한 문자열 강도(브루트포스) |
|
9 |
|
|
|
|
|
불충분한 인가 및 인증 모두 사용자에 대한 접근 제한 미비로 인해 발생되는 취약점으로 진단 관점에서 명확한 취약점 구분을 규정할 수 없기 떄문에 항목 통합 |
10 |
|
취약한 패스워드 복구 |
|
|
취약한 패스워드 복구 |
|
11 |
|
|
|
|
|
세션예측 및 불충분한 세션관리 항목은 진단의 매개체가 되는 세션에 대하여 발생하는 취약성으로 조치?대응 측면에서 하나로 관리할 수 있기 때문에 항목 통합 |
12 |
|
|
|
|
|
|
13 |
|
|
|
|
자동화공격 |
|
14 |
|
|
|
|
파일 업로드 |
|
15 |
|
자동화공격 |
|
|
|
경로 추적 및 파일 다운로드의 경우, 특정 문자를 사용하여 상위 디렉토리 및 시스템 주요 파일등에 접근을 시도하는 과정이 동일하며, 사용자 외부 입력 값에 대한 특정 문자 필터링을 통해 취약점 제거가 가능하므로 하나의 항목으로 통합 |
16 |
|
파일 업로드 |
|
|
관리자페이지 노출 |
|
17 |
|
|
|
|
위치공개 |
|
18 |
|
관리자페이지 노출 |
|
|
데이터 평문전송 |
|
19 |
|
|
|
|
쿠키 변조 |
|
20 |
|
위치공개 |
|
|
|
|
21 |
|
데이터 평문전송 |
|
|
|
URL/파라미터 변조는 프로세스 검증을 우회하는 것 이외 사용자 입력 값에 대해 검증 누락이 발생하는 모든 상황을 포함하고 있으므로 항목 추가 |
22 |
|
쿠키 변조 |
|
|
|
|
|
|
|
|
|
|
|
붙임2 |
|
표준 웹 취약점 점검 기준 |
1. 운영체제명령실행(OC)
□ 취약점 설명
웹사이트의 인터페이스를 통해 웹서버를 운영하는 운영체제 명령을 실행하는 취약점으로, 대부분의 웹서버 플랫폼은 서버의 운영체제에서 어떤 요청에 대한
응답을 수행하기 위해 내장된 API를 가지고 있다. 개발자들은 이런 유용한 API들을 이용하여 파일 시스템에 접근하거나 다른 프로세스와 통신하거나
안전한 방식으로 네트워크 통신을 할 수 있다. 개발자들은 서버상에 직접 운영체제 명령어를 실행할 수 있는 좀 더 강력한 기술을 이용하여야 하는
경우도 많다. 이런 기술은 간단하고도 강력하기 때문에 상당히 매력적인 기술이고 이런 기술을 이용하여 특정 문제를 해결할 수도 있다. 그러나 애플리케이션이
사용자가 입력하는 부분에 운영체제 명령어를 실행할 수 있게 통과시켜 버린다면 명령어 삽입 취약점이 생기게 되고, 공격자는 해당 입력 부분에 특정한
시스템 명령어를 삽입해 원하는 결과를 얻을 수도 있다.
□ 취약점 점검 방법
① 웹프록시를 실행한다.
② 브라우저를 이용하여 취약점을 점검하고자 하는 서비스를 호출한다.
③ 전송되는 파라미터의 값에 프록시를 이용하여 시스템 명령어를 삽입한다.
? ls, dir, cat /etc/passwd, ifconfig, ipconfig, net start
(예. test.asp?a=test.pdf -> test.asp?a=test.pdf+|+ dir c:\)
□ 취약점 판단 기준
① 삽입한 운영체계 명령어에 대하여 시스템 내부에서 실행되어 결과 값으로 출력되는 것을 확인한다.
2. SQL인젝션(SI)
□ 취약점 설명
SQL문으로 해석될 수 있는 입력을 시도하여 데이터베이스에 접근할 수 있는 취약점이다. 대부분의 웹 사이트들은 사용자로부터 입력받은 값을 이용하여
데이터베이스 접근을 위한 SQL 쿼리를 만들고 있다. 예를 들면, 사용자 로그인 과정을 사용자가 유효한 계정과 패스워드를 입력했는지 확인하기 위해
사용자 계정과 패스워드에 관한 SQL 쿼리문을 만든다. 이때 SQL 인젝션 기법을 통해서 정상적인 SQL 쿼리를 변조할 수 있도록 조작된 사용자
이름과 패스워드를 보내 정상적인 동작을 방해할 수 있다. 이러한 비정상적인 SQL 쿼리를 이용하여 다음과 같은 공격이 가능하다.
? 사용자 인증을 비정상적으로 통과
? 데이터베이스에 저장된 데이터를 임의 열람
? 데이터베이스의 시스템 명령을 이용하여 시스템 조작이 가능
□ 취약점 점검 방법
① 웹프록시를 실행한다.
② 브라우저를 이용하여 취약점을 점검하고자 하는 서비스를 호출한다.
③ 프록시를 이용하여 파라미터의 값에 큰따옴표("), 작은따옴표('), 세미콜론(;) 등을 입력한 후, 데이터베이스 오류가 일어나는지 확인한다.
④ [ and 1=1, and 1=2]의 셋트의 값을 각각 삽입하여 정상 변수 값을 보낸 화면과 [and 1=1을 삽입했을 때 정상변수 값 화면과
동일, and 1=2를 삽입했을 때 정상변수 값 화면과 다름]의 반응이 있는지 확인한다.
⑤ 로그인 화면의 경우 아이디나 패스워드 변수 값에 ['or 1=1 --],['or ''=']를 입력한 후 로그인이 되는지 시도한다. SQL 인젝션
테스트에 사용되는 패턴은 다음과 같다.
? 'and'a'='a, 'and'a'='b ? and 1=1, and 1=2
? ' ? ''
? 'or'a'='a ? or 1=1
? 'or ''=' ? 'or 1=1 --
(예. test.asp?a=1 -> test.asp?a=1'or 1=1--)
□ 취약점 판단 기준
① 데이터베이스 오류가 발생한다.
② 싱글쿼테이션 싱글쿼테이션(‘)은 웹프로그래밍에서 SQL문의 시작과 종결을 표기하는데 이용된다.
의 개수에 따라 규칙적인 반응차가 발생한다.(예. 싱글쿼터 한 개 오류발생, 싱글쿼터 두 개 정상 값, 싱글쿼터 세 개 오류 ...)
③ [ and 1=1, and 1=2]의 세트의 값에서 정상 변수 값을 보낸 화면과 [동일화면, 다른 화면]의 반응을 보인다.
④ 로그인 폼에서 “'or 1=1--”을 삽입했을 때 로그인이 된다.
3. XPath 인젝션(XI)
□ 취약점 설명
조작된 XPath(XML Path Language) 쿼리를 보냄으로써 비정상적인 데이터를 쿼리해 올 수 있는 취약점으로, XML 문서에 데이터를
저장하는 웹사이트는 사용자가 입력한 내용의 데이터를 찾기 위해 XPath를 사용하고, 이런 입력이 필터링이나 보안을 고려하지 않은 채 XPath
쿼리 안에 입력된다면 웹사이트의 로직을 손상시키거나 특정 데이터를 추출할 수 있게 된다.
□ 취약점 점검 방법
① 웹프록시를 실행한다.
② 브라우저를 이용하여 취약점을 점검하고자 하는 서비스를 호출한다.
③ 프록시를 이용하여 전송되는 파라미터의 값에 Xpath 패턴을 삽입한다.
④ ', '--과 같은 패턴을 삽입하여 전송하고 결과 값을 확인한다.
⑤ ④에서의 패턴을 전송했을 때 오류가 발생한다면 ‘ or 'a'='a 와 'and 'a'='b 또는 or 1=1, and 1=2 패턴을 전송하고
결과 값을 확인한다.
(예. test.asp?a=1 -> test.asp?a=1' or 'a'='a)
□ 취약점 판단 기준
① or a=a, or 1=1, and 1=1, and 1=1과 같이 쿼리 값이 참이 되는 패턴을 전송했을 때 정상 값을 출력하지만 or a=b,
or 1=2, and 1=2처럼 쿼리 값이 거짓이 되게 하는 패턴을 전송했을 때 오류를 발생시키거나 비정상적인 값이 출력 된다.
4. 디렉토리인덱싱(DI)
□ 취약점 설명
특정 디렉토리에 접근하면 보여지는 디폴트페이지(index.html, home.html, default.asp 등) 파일이 존재하지 않을 때 자동적으로
디렉토리 리스트를 출력하는 취약점이다. 웹 서버 운영 시 특정 디렉터리에 디폴트페이지가 없을 경우(index.html, default.html
등…) 해당 디렉토리의 파일 리스트를 브라우저에 보여주게 된다. 이를 이용하여 공격자가 웹 응용시스템의 구조를 파악 하는데 이용되거나 민감한 정보가
포함된 설정 파일을 노출 하여 보안상 심각한 위험을 초래 할 수 있으므로 반드시 해당 기능을 중지 시켜야 한다.
□ 취약점 점검 방법
① 브라우저를 이용하여 URL 경로 중 확인 하고자 하는 디렉터리까지만 주소 창에 입력한다.
② 디렉터리 끝에 %3f.jsp 문자열을 붙여 디렉터리 인덱싱이 되는지 확인한다.
(예. http://www.test.com/common/index.jsp ->
http://www.test.com/common/ 또는
http://www.test.com/common/%3f.jsp)
□ 취약점 판단 기준
① 디렉터리까지만 주소 창에 입력 했을 때 디렉터리 구조가 노출된다.
② "www.test.com/common/%3f.jsp" 같은 형태로 브라우저 주소창에 넣었을 때 디렉터리 구조가 노출된다.
5. 정보누출(IL)
□ 취약점 설명
웹 어플리케이션에서 민감한 정보가 노출되는 것으로 개발자의 부주의로 인해 중요 정보(관리자 계정 및 테스트 계정 등)를 주석구문에 포함시켜 의도하지
않게 정보가 노출되는 취약점 또한 디폴트로 설정된 에러 페이지를 그대로 사용할 경우 시스템 내부 문제점을 자세하게 출력해주기 때문에 절대경로,
상태코드, 데이터베이스 종류, 질의문 등이 노출되는 취약점이며 이밖에도 공격자가 검색엔진을 통하여 각종 개인 정보 및 서버 정보 등 해킹에 필요한
정보를 획득할 수 있다.
□ 취약점 점검 방법
① 웹프록시를 실행한다.
② 브라우저를 이용하여 취약점을 점검하고자 하는 서비스를 호출한다.
③ 프록시를 이용하여 응답 값을 확인하여 html 소스를 조회한다.
④ 프록시를 이용하여 전송되는 파라미터의 값에 $234, ㄹㅁ5, 9999999, a43 과 같이 애플리케이션에서 사용되는 값과 다른 데이터 형의
숫자를 삽입하여 오류를 발생시킨다.
(예. test.asp?a=100 -> test.asp?a=$t4FA)
□ 취약점 판단 기준
① html 소스 내에 개인정보(화면상에 마스킹처리 되지만 소스에는 그대로 표시), 인증정보, 데이터베이스접속 정보 등의 중요 정보가 노출되고
있을 때
② 오류메시지에서 중요한 정보 (시스템 정보, 절대경로 정보, 컴파일 소스 정보 등)가 노출되고 있을 때
6. 악성콘텐츠(CS)
□ 취약점 설명
웹 어플리케이션에서 사용자 입력값에 대한 필터링이 제대로 이루어지지 않을 경우 공격자가 악성콘텐츠를 삽입하여 악성콘텐츠가 삽입된 페이지에 접속한
사용자는 악성코드 유포 사이트가 자동으로 호출되어 악성코드에 감염될 수 있는 취약점이다.
□ 취약점 점검 방법
① 입력 가능한 폼에 접근한다.
② 악성콘텐츠를 삽입하는 스크립트를 입력한다.
③ 입력되어 있는 곳에 접근하여 반응을 확인한다.
□ 취약점 판단 기준
① 게시판 등의 페이지에 접근 시 악의적인 사이트로의 이동이 된다.
7. 크로스 사이트 스크립트(XSS)
□ 취약점 설명
웹애플리케이션을 사용해서 다른 최종 사용자의 클라이언트에서 임의의 스크립트가 실행되는 취약점이다. 웹 페이지가 사용자가 입력한 데이터를 필터링하지
않고 그대로 동적으로 생성된 웹 페이지에 포함하여 사용자에게 재전송할 때 발생한다.
자바스크립트처럼 클라이언트 측에서 실행되는 언어로 작성된 악성 스크립트 코드를 웹 페이지, 웹 게시판 또는 이메일에 포함시켜 사용자에게 전달하면,
해당 웹 페이지나 이메일을 사용자가 클릭하거나 읽을 경우 악성 스크립트 코드가 웹 브라우저에서 실행이 된다.
이와 같이 공격자는 XSS 취약점이 존재하는 웹 사이트를 이용하여 자신이 만든 악의적인 스크립트를 일반 사용자의 컴퓨터에 전달하여 실행시킬 수
있다. 이러한 공격방법을 통해 사용자 쿠키를 훔쳐서 해당 사용자권한으로 로그인하거나 브라우저를 제어할 수 있다.
□ 취약점 점검 방법
① 웹프록시를 실행한다.
② 브라우저를 이용하여 취약점을 점검하고자 하는 서비스를 호출한다.
③ 게시판에 글쓰기와 같이 단문이상의 입력 가능한 부분에 실행 가능한 형태의 스크립트 태그를(‘><script>alert(‘XSS');</script>,
javascript:alert(‘XSS') 등) 입력하고 저장이 가능한지 확인한다.
④ 프록시를 이용하여 전송되는 파라미터의 값에 스크립트 태그를 삽입한다.
⑤ 다음 인코딩 컴퓨터에서 임의의 문자를 특정의 부호 체계로 표현하는 것.
을 적용하여 ③, ④에서 입력한 값을 전송해서 입력이 가능한지 확인한다.
URL인코딩: '(%27), "(%22), ((%28), )(%29), /(%2f), ;(%3b), <(%3c), >(%3e), space(%20)
(예. test.asp?a=1 -> test.asp?a=1“><script> alert(‘XSS');</script> 또는 test.asp?a=1%1c%3e%3c%73%63%72%69%70%74%3e%20%61%6c%65%72%74%28%18%58%53%53%27%29%3b%3c%2f%73%63%72%69%70%74%3e
)
□ 취약점 판단 기준
① 스크립트 태그를 삽입하여 저장한 게시물을 조회할 때 삽입한 스크립트가 실행 된다.
② 파라미터의 값에 스크립트 태그를 삽입하여 전송했을 때 스크립트가 실행 된다.
8. 약한문자열강도(BF, 브루트포스)
□ 취약점 설명
웹 어플리케이션에서 회원가입 시 안전한 패스워드 규칙이 적용되지 않아서 취약한 패스워드로 회원가입이 가능할 경우 공격자가 무작위로 대입 및 주변
정보를 수집하여 작성한 사전파일 통한 대입을 시도하여 사용자의 패스워드를 추출할 수 있는 취약점이다.
□ 취약점 점검 방법
① 추측이 가능한 계정 및 패스워드를 입력하여 정상적인 인증을 취득하는 것을 확인한다.
? 취약한 계정: admin, administrator, master, webmaster, manager, guest, test, tester,
root, anonymous, ftpuser, system
? 취약한 패스워드: 1, 1111, 1234, test, tester, tester1234, test1234, admin, qwer, root,
asdf, asdf1234, test!@#$, qwer1234 패스워드, 계정과 동일한 패스워드
□ 취약점 판단 기준
① 추측 가능한 계정 및 패스워드를 이용하여 로그인이 가능하다.
9. 불충분한 인증 및 인가(IN)
□ 취약점 설명
웹 어플리케이션에서 개인정보 수정 페이지나 통합 로그인(SSO)과 같은 곳에서 사용자 인증이 미흡(아이디로 인증)할 경우 공격자가 파라미터로 전달되는
값을 수정하여 사용자 도용 및 개인정보 노출 문제가 발생할 수 있는 취약점 또한 관리자 권한을 가지고 있는 페이지에 대해 접근 제한을 설정하지
않았을 경우 공격자가 해당 페이지로 불법 접근 및 조작이 가능한 문제가 발생 할 수 있다.
□ 취약점 점검 방법
① 웹프록시를 실행한다.
② 브라우저를 이용하여 취약점을 점검하고자 하는 서비스를 호출한다.
③ 파라미터 변조를 통해 반응을 확인한다.
(예. edit.jsp?gd=문의게시판&idx=297 -> edit.jsp?gd=문의게시판&idx=296)
? URL 강제 브라우징을 통해 관리자 기능이 존재하는 페이지로 접근한다.
□ 취약점 판단 기준
① 웹 프록시 도구를 사용하여 각종 파라미터 변조 하여 인증 우회를 통한 사용자 페이지 접근한다.
② 페이지 명을 추측하여 URL 강제 브라우징을 통해 관리자 기능 페이지 접근한다.
10. 취약한패스워드복구(PR)
□ 취약점 설명
취약한 패스워드 복구 메커니즘(패스워드 찾기 등)에 대해 공격자가 다른 사용자의 패스워드를 획득, 변경, 복구할 수 있는 취약점이다. 웹사이트들이
비밀번호를 복구할 때, 이메일 주소와 사용자의 집 주소, 전화번호 등의 정보를 혼합하여 제공하기도 한다. 이러한 정보들은 온라인 상에서 다양한
경로를 통해 획득할 수 있으므로 패스워드 생성에 이용되는 것은 안전하지 못하다. 일부 웹사이트들은 사용자의 비밀번호 복구를 돕기 위해 힌트를 제공하거나,
새로운 패스워드를 제공하는데 이러한 값을 이용해 무작위 대입 공격을 수행할 수 있다.
□ 취약점 점검 방법
① 애플리케이션의 패스워드 재발행 기능을 확인한다.
② 애플리케이션이 제공하는 일반적인 기능을 이용하여 패스워드 여러 번 재발행 하고 획득된 값을 비교/분석하여 고정된 값 또는 일정 패턴이 있는지
확인한다.
③ ②에서 발견된 일정 패턴을 이용하여 무작위 대입의 성공 가능성을 확인한다.
□ 취약점 판단 기준
① 패스워드 재발행 기능에서 사용자의 연락처, 주소, 메일 주소 등 일정패턴을 임시 패스워드로 이용하는 것이 확인 된다.
11. 불충분한 세션 관리(SM)
□ 취약점 설명
웹 어플리케이션에서 사용자가 로그인을 시도 시 매번 동일한 세션 ID를 발급하거나(혹은 일정한 패턴이 존재) 세션 타임아웃을 너무 길게 설정하였을
경우 공격자가 다른 사용자의 세션을 재사용 하여 해당 사용자의 권한을 탈취할 수 있는 취약점이고 또한 추측을 통해 단수난 숫자가 증가하는 방법
등의 취약한 특정 세션의 식별자(ID)를 예측하여 세션을 가로챌 수 있는 취약점이다.
□ 취약점 점검 방법
① 각각 다른 IP주소와 다른 사용자명을 이용하여 일정시간 간격을 두고 세션ID를 발급받는다.
② 발급받은 세션식별자를 비교/분석하여 단순히 숫자가 증가하거나 문자열이 오름차순으로 변경되는 등의 일정한 패턴이 있는지 조사한다.
(예. JSSESSIONID=F090B96E2747E456 -> JSSESSIONID=F090B96E2747E457
? 로그인 후 발급받은 세션 값을 이용하여 중복 로그인 가능 여부를 확인한다.
□ 취약점 판단 기준
① 일정한 패턴이 확인되고, 특정한 패턴에 의해 사용가능한 세션식별자의 예측이 가능한지 확인한다.
? 세션 값을 변조하여 로그인을 시도하여 다중로그인이 가능한지 확인한다.
? 인증후 정상적으로 세션이 생성되면 일정시간(10분이상)이 지난 후 해당 페이지에 재 접속하여 로그인 상태가 유지되는지 확인한다.
12. 크로스 사이트 리퀘스트변조(CF)
□ 취약점 설명
크로스 사이트 리퀘스트변조(Cross-Site Request Forgery)는 로그온한 사용자 브라우저로 하여금 사용자의 세션 쿠키와 기타 인증
정보를 포함하는 위조된 HTTP 요청을 웹애플리케이션에 전송했을 때 발생하는 취약점이다. 데이터를 등록, 변경의 기능이 있는 페이지에서 동일 요청(Request)으로
매회 등록 및 변경 기능이 정상적으로 수행이 되면 CSRF 공격에 취약한 가능성을 가지게 된다. 크로스사이트리퀘스트변조는 사용자의 브라우저가 취약한
애플리케이션에 직접 요청을 전송하게 해 사용자가 의도하지 않은 행위를 수행하게 한다.
□ 취약점 점검 방법
① 사용자의 세션 쿠키로 인증을 해야만 접근할 수 있는 데이터 등록 및 변경 페이지가 있는지 조사한다.
② 공격자는 조사한 데이터 등록 및 변경 페이지의 요청(request)을 취득하고, 해당 요청(request)이 강제로 실행되는 스크립트가 삽입되어
있는 페이지를 제작한다.
③ ②에서 제작된 페이지를 사용자가 요청하였을 때, 해당 요청(request)이 서버로 전송되고 실행되는지 점검한다.
□ 취약점 판단 기준
① 조작된 요청을 입력하여 조작된 요청이 실행된다.
13. 자동화공격(AU)
□ 취약점 설명
웹 애플리케이션에 정의된 프로세스를 이용하여 반복적인 공격을 수행함으로써 자동으로 수많은 프로세스가 생성되는 취약점이다. 자동화 공격 취약점을
방치하면, 자동 로봇 또는 공격자가 반복적으로 웹 사이트 기능을 사용해서 시스템을 악용할 수 있다.
□ 취약점 점검 방법
① 데이터 등록 및 메일 발송의 기능에서 반복적인 기능 이용을 통하여 대량의 데이터 등록이나 메일 발송이 가능한지 확인한다.
② 웹프록시를 실행한다.
③ 브라우저를 이용하여 데이터 등록 및 메일 발송의 기능 서비스를 호출한다.
④ 등록 또는 발송 버튼을 클릭 했을 때 생성되는 요청(request) 값을 리피터(repeater) 버프 수트(Burp Suite-웹프록시)의
한 기능으로 요청(request) 값을 수정하면서 서버에 연속적으로 전송할 수 있다.
로 연속하여 전송하여 데이터 등록현황을 확인한다.
□ 취약점 판단 기준
① 자동화 도구를 이용한 무차별 대입 공격을 시도하여 계정 정보 획득한다.
14. 파일업로드(FU)
□ 취약점 설명
파일을 첨부 할 수 있는 기능을 이용하여 시스템 명령어를 실행할 수 있는 웹 프로그램을 업로드 할 수 있는 취약점이다. 만약 게시판에서 업로드
되는 파일의 확장자에 대한 적합성 여부를 검증하는 루틴이 존재하지 않으면 공격자가 조작한 서버측 스크립트(Server Side Script) 파일을
업로드하고 업로드 된 파일이 서버 상에 저장된 경로를 유추한 후 이 경로를 통해 서버측 스크립트(Server Side Script)파일을 실행하여
쉘(shell)을 획득할 수 있다. 이러한 과정을 통해 웹 서버의 권한이 노출될 수 있다. 쉘(shell) 권한 획득 후, 시스템의 명령어를 홈페이지를
통해 실행하고 웹브라우저를 통해 그 결과 값을 보며 시스템 관리자 권한이나 인근 서버의 침입을 시도 할 수 있다.
□ 취약점 점검 방법
① 웹 프록시를 실행한다.
② 브라우저를 이용하여 파일첨부 기능이 있는 애플리케이션을 호출한다.
③ 첨부기능이 존재하는 경우, 확장자가 jsp, php, asp, cgi 등 Server Side Script 프로그램을 업로드 하여 업로드가
가능한지 조사한다.
④ 홈페이지에 있는 디렉터리 정보를 이용하여 첨부한 서버 측 스크립트(Server Side Script)프로그램의 위치를 조사 하여 웹브라우저를
통해 호출한다.
□ 취약점 판단 기준
① 파일업로드 시 클라이언트 프로그램에서 자바스크립트(JavaScript), 비주얼베이직스크립트(VBScript) 등의 스크립트로 파일 첨부를
차단하는 경우 차단기능을 변경하거나 업로드되는 파일의 확장자 변경 등을 통해 파일을 첨부할 수 있다.
② 브라우저 주소 창에서 해당 프로그램의 실행이 가능하다.
15. 파일다운로드(FD)
□ 취약점 설명
파일 다운로드 기능이 존재하는 어플리케이션에서 파일 다운로드 시 파일의 경로 및 파일명을 파라미터로 받아 처리하는 경우 파일에 대한 접근 권한이
설정되어 있지 않다면 공격자가 파라미터를 조작하여 환경설정 파일, 웹 소스코드 파일, 데이터베이스 연동 파일 등을 다운 받을 수 있는 취약점이다.
웹 애플리케이션 상에서 파일을 다운받는 cgi, jsp, php, asp 등의 프로그램에서 입력되는 경로를 체크하지 않는 경우, 임의의 문자(../..
등)나 주요 파일명의 입력을 통해 웹 서버의 홈 디렉터리를 벗어나서 임의의 위치에 있는 파일을 열람하거나 다운받는 것이 가능할 수 있다.
□ 취약점 점검 방법
① 웹프록시를 실행한다.
② 브라우저를 이용하여 게시판 또는 공지사항, 자료실 등에서 cgi, jsp, php 등의 프로그램을 이용하여 파일다운로드 기능이 있는 애플리케이션을
호출한다.
③ 해당 애플리케이션의 주소에서 다운받는 파일명을 시스템의 중요한 파일(winnt\win.ini, /etc/passwd 등)의 위치와 이름을 상대경로(../)로
치환한 후 입력하여 중요 파일의 다운이 가능한지 확인한다.
④ 다음 문자열을 적용하여 ③에서 입력한 값을 전송해서 해당파일의 내용이 표시되는 것을 확인한다.
[파일명]%00.jpg, [파일명]%0a.jpg
? ../../../../../../../../../../../../etc/passwd
? ../../../../../../../../../../../../winnt/win.ini
? ../../../../../../../../../../../../boot.ini
? URL인코딩: .(%2e), /(%2f), \(%5c)
? 16bit 유니코드인코딩: .(%u002e), /(%u2215), \(%u2216)
? 더블URL인코딩: .(%252e), /(%252f), \(%255c)
(예. www.test.com/down.asp?a=test.txt -> www.test.com/down.asp?a=/../../etc/passwd
또는 www.test.com/down.asp?a=test.txt%00.jpg)
□ 취약점 판단 기준
① 파일 다운로드 시 파라미터 값을 조작하여 서버파일을 다운로드 시도하여 다운로드되는지 확인 한다.
? 웹 루트 상위로 접근을 시도하여 주요 파일이 노출 되는지 확인한다.
16. 관리자페이지노출(AE)
□ 취약점 설명
단순한 관리자 페이지 이름(admin, manager 등)이나 설정, 프로그램 설계상의 오류로 인해 관리자 메뉴에 직접 접근할 수 있는 취약점이다.
관리자 페이지는 웹 서비스의 사용자나 데이터, 컨텐츠를 손쉽게 관리하기 위한 목적으로 다양한 기능과 권한을 갖고 있다. 이는 홈페이지의 운영에
매우 중요한 역할을 하고 있으므로 일반사용자는 인증 없이 접근할 수 없도록 할 뿐 아니라 일반사용자가 관리자 페이지에 접근할 수 없게 해야 한다.
그러나 추측하기 쉬운 경로(ex: /admin, /manager)를 이용 시 계정/패스워드에 대한 크랙이나 접근 허가 정책에 대해 요청하는 부분의
정보를 변경함으로써 접근이 가능한 경우가 많다. 웹 관리자의 권한이 노출될 경우 홈페이지의 변조뿐만 아니라 취약성 정도에 따라서 웹 서버의 권한까지도
노출될 위험성이 존재한다.
□ 취약점 점검 방법
① /admin, /manager, /master, /system, /administrator 등의 명칭의 디렉터리 및 파일의 관리자 페이지가
존재하는지 확인한다.
② 7001, 8080, 8443, 8888 포트의 접속으로 관리 페이지가 노출되는 것을 확인한다.
③ 관리자페이지에 기본 관리자 계정 및 패스워드를 입력하여 패스워드 취약점을 점검한다.(관리자 계정 예 : admin, administrator,
manager 등)
④ 사용자 인증을 통과하여 접속한 페이지에 대하여 인증 과정 없이 중간페이지를 요청하여 접근이 가능한지를 점검한다.(예 : /admin/main.asp,
/admin/menu.html 등)
⑤ Google 과 같은 검색엔진에서 site 검색옵션으로 검색대상 사이트를 제한한 후 ①의 관리자페이지 명칭들을 검색한다.(예 : site:www.xxx.com
inurl:admin, site:www.xxx.com inurl:manager)
□ 취약점 판단 기준
① 관리자 페이지가 노출된다.
17. 위치공개(PL)
□ 취약점 설명
개발 과정 또는 소스코드를 수정하였을 경우 백업파일, 로그파일, 압축파일과 같은 파일이 자동적으로 생성되어 웹 어플리케이션 상에 노출될 경우 공격자가
유추 후 직접 접근을 요청하여 핵심정보를 획득할 수 있는 취약점이다.
□ 취약점 점검 방법
① 웹브라우저를 이용하여 .bak, .backup, .org, .old, .zip, .log, .sql, .new, .txt, .tmp, .temp
확장자의 불필요한 파일의 존재 여부 조사한다.
② 웹브라우저를 이용하여 cgi-bin , manual, usage, iissamples, scripts, iisHelp, IISAdmin, _vit_bin,
Printers, phpinfo.php, examples, jsp, servlets의 디렉토리 및 파일이 존재하는지 조사한다.
(예. www.test.com/index.bak, www.test.com/common/conn.bak, www.test.com/WEB-INF/web.xml)
□ 취약점 판단 기준
① 임시파일이나 백업파일에 접근이 가능하다.
? 디렉터리 인덱싱을 통해 백업파일이 노출되어 있다.
18. 데이터평문전송(SN)
□ 취약점 설명
서버와 클라이언트간 통신 시 암호화 하여 전송을 하지 않아 중요 정보 등이 평문으로 전송되는 취약점이다. 개인 정보를 암호화하지 않고 평문으로
전송 처리하여 도청을 통해 노출되는 정보를 악용할 수 있는 취약점으로 구간 암호화를 통해 위험을 최소화 할 수 있다. 웹 상의 데이터 통신은 대부분
텍스트 기반으로 이루어지고 있으며 이는 간단한 도청을 통해 쉽게 개인 정보의 탈취 및 도용이 가능해 진다.
□ 취약점 점검 방법
① 네트워크 스니핑 프로그램 5. 취약점 점검툴 사용방법의 5.2.sniffer 참조
을 실행하고 패킷을 스니핑 한다.
② 중요 정보(인증정보, 개인정보 등)를 송수신하는 페이지에 접근한다.
□ 취약점 판단 기준
① 스니핑 프로그램에서 중요정보가 평문으로 노출된다.
19. 쿠키변조(CC)
□ 취약점 설명
적절히 보호되지 않은 쿠키를 사용하여 쿠키 인젝션 등과 같은 쿠키 값 변조를 통한 다른 사용자로의 위장 및 권한 상승 등이 가능한 취약점이다.
쿠키(Cookie)는 클라이언트에 전달되는 값으로 중요 정보로 구성되어 있는 쿠키는 정보의 조작으로 다른 사용자의 유효한 세션을 취득할 수도 있다.
쿠키에 중요정보가 포함 되어있으면 공격자에게 사용자의 중요한 정보가 노출 및 변조의 위험이 있다.
□ 취약점 점검 방법
① 웹프록시를 실행한다.
② 브라우저를 이용하여 로그인을 한다.
③ 웹프록시를 이용하여 쿠키의 내용 및 발행되는 쿠키에 중요한 정보(인증을 위한 아이디, 권한을 위한 구분자 등)의 노출 여부를 조사한다.
④ 쿠키의 중요 정보를 변경하여 다른 사용자 및 권한으로 정상적 이용이 가능한지 확인한다.
(예. Cookie: JSESSIONID=9213B05664A8E2DB7; admin=false; id=test ->
Cookie: JSESSIONID=9213B05664A8E2DB7; admin=true; id=root)
□ 취약점 판단 기준
① 쿠키 값 변조를 시도하여 권한 상승등이 이루어지는지 확인한다.
20. 웹서비스 메소드 설정 공격(MS)
□ 취약점 설명
웹 어플리케이션에서 일반적으로 사용하는 GET, POST 메소드 이외의 PUT, DELETE, COPY, MOVE 등의 불필요한 메소드를 허용하였을
경우 공격자가 이를 이용하여 웹 서버에 파일을 생성하거나 삭제 및 수정이 가능한 취약점이다.
□ 취약점 점검 방법
① 80번 포트로 텔넷 접속을 시도한다.
② 접속 후 OPTIONS * HTTP/1.0 [엔터 두번] 입력
③ 출력 값에 PUT, DELETE 와 같은 불필요한 메소드가 활성화 되어 있는지 확인한다.
④ PUT 메소드가 활성화 된 경우 악성 파일 업로드가 가능한지 확인한다.
□ 취약점 판단 기준
① 출력 값에 PUT, DELETE 와 같은 불필요한 메소드가 활성화 되어 있는지 확인한다.
② PUT 메소드가 활성화 된 경우 악성 파일 업로드가 가능한지 확인한다.
21. URL/파라미터 변조
□ 취약점 설명
웹 어플리케이션 상에 존재하는 모든 실행경로에 대해서 접근제어를 검사하지 않거나 미흡한 경우 공격자가 접근 가능한 실행경로를 통해 사용자의 정보를
유출 하거나 일시적인 권한 상승이 가능한 취약점이다. URL/파라미터 변조의 경우 불충분한 인증 및 인가 취약점과 유사하지만 프로세스 검증을 우회하는
것 이외에 사용자 입력값에 대한 검증 누락이 발생하는 모든 상황을 포함하고 있으므로 SQL 인젝션, 불충분한 인증 및 인가, 크로스 사이트 스크립트(XSS)
공격에 활용될 수 있다.
□ 취약점 점검 방법
① 개발자 도구를 이용하여 작성자 명 변경 시도한다.
② 웹 프록시 도구를 이용하여 파라미터 변수 값을 수정한다.
? 다른 명의로 게시글이 등록 가능한지 확인한다.
(예 . Content-Disposition: form-data: name=“notice_yn” N ->
Content-Disposition: form-data: name=“notice_yn” Y
□ 취약점 판단 기준
① 게시판 페이지에 존재하는 파라미터 변수 값 조작하여 일시적으로 권한 상승이 이루어지는지 확인한다.
'Public > IT' 카테고리의 다른 글
불법 스팸 방지를 위해 정보통신망법 이용 및 정보보호 법률 개정 (0) | 2015.02.26 |
---|---|
최상위 도메인 국가 코드 (0) | 2015.02.24 |
paypal 한국어 서비스 (0) | 2015.02.05 |
정보통신망 이용촉진 및 정보보호 등에 관한 법률 시행령 - 영리목적의 광고성 정보의 명시사항 및 명시방법 (0) | 2014.12.02 |
도로명주소 안전행정부 + 다음 "지번 없이도 건물·상호명으로 도로명주소 검색 가능" (0) | 2014.11.04 |