OWASP TOP10
- 웹 서비스 관련 공격은 최신 해킹 경향에 따라 새로운 공격기법이 발견되므로 OWASP는 3년마다 OWASP TOP10을 발표한다.
- OWASP TOP10
SQL Injection
- DB와 연동되어 있는 애플리케이션 입력값을 조작하여 DBMS가 의도하지 않은 결과를 반환하도록 하는 기법
- 해당 사용자로부터 적정성을 검사하지 않았기에 발생
- SQL Injection으로 DB 정보 조회, 변조, 삭제, 인증절차 우회, 시스템 명령어 실행, 주요시스템 파일정보 노출등을 할 수 있다.
- DB접속시 비밀번호 입력에 '' or '1'='1'을 붙이면 SQL Injection이 된다.
- SQL Injection 종류
1. From SQL Injection
- HTML From 기반 인증을 담당하는 애플리케이션 취약점 존재시 사용자 인증을 통한 쿼리문의 조건을 임의로 조작하여 인증을 우회하는 기법
- 쿼리문의 조건절이 항상 참이 되도록 쿼리문을 조작
2. Union SQL Injection
- 한 쿼리의 결과를 다른 쿼리의 결과에 결합하여 공격하는 기법
- union은 2개 이상의 select 문을 결합하고자 할 때 사용하며 2개의 select문의 필드 개수가 같아야하며 필드 타입이 호환이 가능해야 한다.
3. Error-Based SQL Injection
- DB 쿼리에 에러값을 기반으로 한 단계씩 점진적으로 DB 정보를 획득할 수 있는 방법
- 클라이언트에서 조작할 수 있는 파라미터에 SQL Query 관련 특수문자 삽입하여 SQL 에러가 발생하면 해당 취약점이 있다고 판단
4. Blind SQL Injection
- 쿼리 결과의 참과 거짓을 통해 의도하지 않은 SQL문을 실행시켜 DB를 비정상적으로 공격하는 기법
- 에러페이지 따로 설정하지 않으면 웹 서버 DB정보가 노출될 수 있는데 그정보를 수집할 때 사용하는 기술
- SQL Injection 대응 방법
1. 개발단계부터 모든 입력값에 대해 적절한 검증절차를 설계 구현해야함
2. SQL 서버의 에러 메시지를 표시하지 않는다.
3. 일반 사용자 권한으로 시스템 저장 프로시저 접근을 불허한다.
4. 동적 SQL 완성방식 사용을 지양하고 저장 프로시저를 사용한다.
5. 선처리 질의문을 이용한다.
XSS(크로스 사이트 스크립팅)
- 웹 어플리케이션에서 사용자 입력값에 대한 필터링이 제대로 이루어지지 않을 경우 공격자가 입력이 가능한 폼에 악의적인 스크립트를 삽입, 해당 스크립트가 희생자 측에서 동작하도록 하여 악의적인 행위를 수행
- 개인정보 및 쿠키정보 탈취, 악성코드 감염, 웹 페이지 변조 등의 공격 수행
- XSS는 클라이언트 컴퓨터를 공격한다.
- 공격과정
1. 공격자는 게시판 등에다가 XSS 코드를 심어놓는다
2. 희생자는 공격자가 작성해 놓은 XSS 코드에 접근
3. 게시판의 글을 통해 XSS코드가 희생자에게 전달됨
4. XSS가 사용자 시스템에서 실행
5. XSS 코드가 공격자에게 전달되고 공격자는 공격을 종료함
- XSS의 종류
1. Stored XSS
- 가장 일반적인 XSS 공격
- 사용자가 글을 저장할 수 있는 부분에 정상적인 평문이 아닌 스크립트 코드를 입력하는 기법
- 사용자가 게시판을 열람하는 순간 악성 스크립트가 실행되어 사용자의 쿠키정보가 유출되거나 악성 스크립트가 기획한 공격에 당하게 됨
2. Reflected XSS
- 악성 스크립트 코드가 인자 형태로 포함된 URL을 클릭 시 악성 스크립트 코드가 서버 사이트에 의해 HTML 문서로 반사되어 웹 브라우저에서 실행됨
- 공격 스크립트 부분을 주로 인코딩하여 전달해 사용자가 눈치채지 못하게 함
- URL의 변수 부분처럼 스크립트 코드를 입력하는 동시에 결과가 바로 전해지는 기법
- 서버 사이트에 악성 스크립트 코드를 남기지 않아도 되는 장점이 있다.
3. DOM based XSS
- 피해자의 브라우저가 HTML 페이지 구분 분석할 때 마다 공격 스크립트가 DOM 생성의 일부로 실행되며 공격
- 페이지 자체는 변경되지 않으나 페이지에 포함되어 있는 브라우저측 코드가 DOM 환경에서 악성코드로 변경
- DOM 기반 XSS는 서버와 관계없이 브라우저에서 발생하는 것이다.
- 보안대책
1. <, >, &, “, "등 문자열은 <, >, &, "로 치환한다.
2. 사용자 입력값에 대한 검증은 서버단에서 반드시 해야함
3. 게시판에서 HTML 태그의 리스트를 선정해 해당 태그만 허용하는 방식 이용
사이트 간 요청 위조(CSRF)
- 서버가 정상적 경로와 비 정상적 경로를 통한 요청을 구분하지 못할 경우, 공격자가 스크립트 구문을 이용하여 정상적 사용자로 하여 조작된 요청을 할 수 있도록하는 공격
- 공격자는 피해자의 권한을 그대로 사용한다.
- XSS는 악성 스크립트가 클라이언트에서 실행되는 반면에 CSRF는 사용자가 악성 스크립트를 서버에 요청을 한다.
- CSRF 공격 과정
- 보안대책
1. 입력화면 폼 작성시 GET 방식보다 POST 방식을 사용한다.
2. 폼과 해당 입력을 처리하는 프로그램 사이에 토큰을 사용하여 공격자의 직접적인 URL 사용이 동작하지 않도록 한다.
3. 특정한 사용자를 구분하는 인수가 존재할 경우 인증과정을 통해 CSRF를 막을 수 있다.
디렉터리 탐색 공격(파일 다운로드 취약점)
- 디렉터리 탐색은 웹 브라우저에서 확인 가능한 경로의 상위로 탐색하여 시스템 파일을 다운로드 하는 방법이다.
- 자료실에 올라간 파일을 다운로드 할 때 전용 다운로드 프로그램이 파일 이름을 필터링 하지 않아서 발생하는 취약점이다.
- 파일 다운로드 시 전용 프로그램을 사용시 ..과 / 문자를 필터링 하도록 해야한다.
리버스 텔넷
- 웹 해킹을 통해 시스템 권한을 획득해 해당 시스템에 텔넷과 같이 직접 명령을 입력하고 확인할 수 있는 셸을 획득하기 위한 방법
- 방화벽이 존재하는 시스템을 공격시 주로 사용
- 방화벽 설정시 inbound 정책은 설정하였지만, outbound 설정을 하지 않았을 경우 그 취약점을 이용하여 공격하는 방식
보안 설정 취약점
1. 백업 및 임시파일존재
- 개발자들이 웹 사이트를 개발하고 난 후 웹 서버에 백업파일이나 임시 파일을 삭제하지 않고 방치하게되는데 이를 통해 공격자가 백업파일을 발견하게 되면 내부 로직 및 DB 접속 정보등 중요한 정보를 획득할 수 있게되므로 백업 및 임시파일은 삭제하는 것이 좋다.
2. 주석관리 미흡
- 일반적 프로그램의 주석은 개발자만 볼 수 있지만 웹 어플리케이션 경우 웹 프락시를 통해 이용자도 볼 수 있다.
- 주석에는 중요한 정보가 적혀있을 수 있기 때문에 주석에 기록하는 정보에 대해서는 주의를 기울여야한다.
3. 특수문자 필터링
- 웹 해킹의 기본적 형태 중 하나가 인수 조작인데 인수조작은 예외적 상황 실행시키기 위해 일반적으로 특수문자를 포함하게 되어있다.
주요 특수 문자 |
주요 관련 공격 |
< |
XSS |
> |
XSS |
& |
XSS |
“ ” |
XSS |
? |
XSS |
‘ ’ |
XSS, SQL injection |
-- |
SQL injection |
= |
SQL injection |
; |
SQL injection |
* |
SQL injection |
/ |
XSS 디렉터리 탐색 |
4. 서버측 통제
- 파일 업로드 취약점이나, 특수 문자 필터링 수행시 CSS 기반 언어로 필터링을 하면 안된다.
- CSS(Client Side Script) 언어는 웹 프락시를 통해 전달되는 과정에서 변조될 수 있기 때문이다.
- 그러므로 ASP, JSP등과 같은 SSS(Server Side Script)로 필터링을 수행해야한다.
5. 지속적인 세션 관리
- URL 접근제한 실패를 막기 위해서는 모든 웹 페이지에 세션에 대한 인증을 수행해야한다.
- 모든 웹 페이지에 대해 일관성 있는 로직 적용하려면 기업 단위 또는 웹 사이트 단위서 세션 로직 표준화, 모든 웹 페이지 개발시 해당 표준을 준수하도록 해야한다.
웹 방화벽
- 웹 애플리케이션을 대상으로 시도되는 해킹을 차단하는 보안장비
- SQL Injection, XSS, CSRF등 공격을 탐지, 차단 및 정보유출 방지, 부정 로그인 탐지, 웹사이트 위변조 방지등에 활용된다.
- 웹 방화벽기능
1. 사용자 요청검사
2. 콘텐츠 보호
3. 위장
4. 웹 방화벽과 기존 방화벽 차이
구분 |
웹 방화벽 |
기존 방화벽 |
목적 |
유해 HTTP 차단 |
유해 포드 차단 |
동작레벨 |
7계층 |
3~4계층 |
동작방식 |
규칙 + 애플리케이션 로직 |
일련의 규칙에 의해 동작 |
소프트웨어 개발 보안
- S/W 개발보안은 해킹 등 사이버 공격의 원인이 보안약점을 S/W 단계에서 사전에 제거해 안전한 S/W를 개발하기 위한 목적으로 추진하는 S/W 개발체계이다.
- S/W 보안약점 유형
유형 |
내용 |
입력데이터 검증 및 표현 |
ㆍ프로그램 입력값에 대한 검증 누락 또는 부적절한 검증 ㆍ데이터의 잘못된 형식지정으로 인해 발생할 수 있는 보안약점 ex) SQL 삽입, 자원 삽입, XSS |
보안 기능 |
ㆍ보안기능을 적절하지 않게 구현 시 발생할 수 있는 보안약점 ex) 부적절한 인가 허용, 중요정보 평문저장 |
시간 및 상태 |
ㆍ동시 또는 거의 동시 수행을 지원하는 병렬시스템, 하나 이상의 프로세스가 동작하는 환경서 시간 및 상태를 부적절하게 관리하여 발생하는 보안약점 ex) 경쟁조건, 제어문을 사용하지 않는 재귀함수 |
에러처리 |
ㆍ에러를 처리하지 않거나, 불충분하게 처리하여 에러정보에 중요정보가 포함될 때 발생하는 보안 약점 ex) 오류상황 대응 부재, 오류 msg를 통한 정보 노출 |
코드오류 |
ㆍ타입변환 오류, 자원의 부적절한 반환 등 개발자가 범할 수 있는 코딩오류로 인한 보안약점 ex) Null pointer 역참조, 부적절한 자원 헤제등 |
캡슐화 |
ㆍ중요한 데이터 또는 기능성 불충분하게 캡슐화하였을 때 인가되지 않은 사용자에게 데이터 노출이 가능한 보안약점 ex) 제거되지 않고 남은 디버거 코드, 시스템 데이터 정보노출 등 |
API 오용 |
ㆍ의도된 사용에 반하는 방법으로 API 사용 ㆍ보안에 취약한 API를 사용하여 발생하는 보안 약점 ex) DNS lookup에 의존한 보안결정 |
'보안기사 > 필기' 카테고리의 다른 글
기사 자격증(알기사, DB보안) (0) | 2019.02.24 |
---|---|
기사 자격증(알기사, DHCP,DNS 보안) (0) | 2019.02.22 |
기사 자격증(알기사, 웹 보안 - HTTP) (0) | 2019.02.22 |
정보보안기사 자격증(알기사, 이메일 보안) (0) | 2019.02.18 |
기사 자격증(알기사, FTP 보안)FTP (0) | 2019.02.17 |