I can do it!!

He can do! She can do! why cannot me? i can do it!

개발/보안

OWASP TOP10 - 2017

gogoriver 2021. 1. 10. 00:43

출처 : https://www.rangeforce.com/blog/owasp-top-10-vulnerabilities-training

OWASP TOP10-2017


OWASP(Open Web Application Security Project)는 국제 웹 보안 표준기구로 3년 주기로 보안상 크게 위협이 되는 10가지 이슈를 발표합니다.

출처 IT 위키

A1. 인젝션 

: SQL, OS, XXE, LDAP 인젝션 취약점은 신뢰할 수 없는 데이터가 명령어나 쿼리문의 일부분으로써 서버로 보내질 때 발생하며, 공격자의 악의적인 데이터는 예기치 않은 명령을 실행하거나 올바른 권한 없이 데이터에 접근하도록 할 수 있음

즉, 비정상적인 명령어, 쿼리 등을 보내 시스템이 접근할 수 있는 취약점으로 대표적으로 SQL Injection이 있다.

* SQL Injection)

- 로그인 화면 등 입력 필드에서 SQL 쿼리문을 만들기 위한 값을 받을 때 해당 값을 조작하는 형태로 공격이 이루어짐

origin code>

"SELECT * FROM USER WHERE memlID='"+request.getParameter("id")+"'";

=> id 변수 값을 조작하여 참인 조건을 만들어 보낼 수 있음 ( ' or '1' = '1 )

SQL Injection을 당했을 때 쿼리 문>

SELECT * FROM USER WHERE memlID=''or '1' = '1';

 

A2. 취약한 인증

: 인증 및 세션 관리와 관련된 애플리케이션 기능이 종종 잘못 구현되어 공격자들이 암호, 키, 세션 토큰을 위험에 노출시킬 수 있거나 일시적 또는 영구적으로 다른 사용자의 권한 획득이 가능함

이러한 취약한 인증은 매우 일반적으로 발견되며 무차별대입공격이 허용된다거나, 취약한 암호화를 사용하는 등 여러 유형이 존재한다.

 

A3. 민감한 데이터 노출

: 다수의 웹 애플리케이션과 API는 금융 정보, 건강 정보, 개인 식별 정보와 같은 중요한 정보를 제대로 보호하지 않고 있어, 공격자는 신용카드 사기, 신분 도용 또는 다른 범죄를 수행하기 위해 보호가 취약한 데이터를 훔치거나 수정할 수 있음

: 중요한 데이터는 저장 또는 전송할 때 암호화 같은 추가 보호 조치가 없으면 탈취 당할 수 있으며, 브라우저에서 주고 받을 때 각별한 주의가 필요함

EX)

- 웹 소스 코드 등에 DB 접속과 관련된 정보 등을 중요정보가 평문 등으로 저장되어 있는 경우 (+ 주석으로 민감 데이터 노출되는 경우)

- 패스워드 DB에서 *salt값을 사용하지 않거나 간단한 해시함수를 사용하여 비밀번호를 저장하게 되면 공격자가 파일 업로드 결함을 이용한 비밀번호 DB를 검색할 수 있음. 여기서 salt값을 사용하지 않은 해시 암호화는 *레인보우 테이블로 노출될 수 있음

* salt : UNIX에서 로그인 패스워드와 함께 일방향 해시함수에 입력되는 12비트 난수 값

* 레인보우 테이블 : 해시 함수(MD5SHA-1SHA-2 등)을 사용하여 만들어낼 수 있는 값들을 저장한 표

 

A4. XML 외부 개체(XXE)

: XXE는 *XML Entity 중 외부 엔티티 정의의 보안 취약점을 이용한 공격으로, 취약하게 설정된 XML parser에 의해 공격자가 XML 문서에서 외부 엔티티를 이용하여 공격자가 의도하는 외부 url을 실행시킨 뒤, 서버의 로컬파일 정보 등을 출력하거나 DOS공격을 수행할 수 있는 취약점

* XML ENTITY : 반복적으로 나오는 문자열 또는 특수처리가 필요한 문자를 XML 문서에 사용하기 위해 미리 정의해 놓은 개체로, DOCTYPE 태그에 정의할 수 있음

https://rootable.tistory.com/entry/XXE-Injection

 

XXE Injection

0. 주제 선정 이유 - XXE 라는 것을 많이 들어보았고 패킷 내 어떤 형태일 때 공격을 시도할만한지는 알고 있었지만 정확한 개념이 잡혀있지 않아 정리하는 겸 적어본다. 1. 정의  : XXE Injection이 무

rootable.tistory.com

위 사이트에서 엄청 잘 설명하고 있다.

 

A5. 취약한 접근 통제

: 인증된 사용자가 수행할 수 있는 작업에 대한 제한이 제대로 적용되어 있지 않아, 공격자가 이를 악용하여 다른 사용자의 계정에 접근하거나, 중요한 파일을 보거나, 다른 사용자의 데이터를 수정하거나, 접근 권한을 변경하는 등 권한 없는 기능과 데이터에 접근할 수 있는 취약점

대표적인 타겟이 바로 관리자 페이지이다. 따라서 접근 제한이 제대로 되어 있지 않은 관리자 페이지는 공격자의 공격 루트가 된다.

+ SSH, FTP 서비스도 접근 제한이 제대로 되어있지 않다면 악용될 수 있음

 

A6. 잘못된 보안 구성

: 가장 흔하게 보이는 이슈로서, 취약한 기본 설정, 미완성, 개방된 클라우드 스토리지, 잘못 구성된 HTTP 헤더 및 민감한 정보가 포함된 에러 메시지로 인한 결과 등이 해당된다. 따라서 모든 운영체제, 프레임워크, 라이브러리와 애플리케이션을 안전하게 설정해야 할 뿐만 아니라 시기 적절하게 패치/업그레이드를 진행해야 함

EX)

- 불필요한 기능(포트, 서비스, 페이지, 계정) 등이 활성화 = 공격자의 공격루트

- 관리 콘솔의 기본 계정이 변경되지 않은 경우 공격자가 기본 암호로 로그인하여 정보 획득

- 자세한 오류 메시지 = Blind SQL Injection과 같은 공격 사용

 

A7. 크로스 사이트 스크립팅(XSS) ★ (대표 취약점)

 

: 애플리케이션이 올바른 유효성 검사 또는 필터링 처리 없이 새 웹페이지에 신뢰할 수 없는 데이터를 포함하거나, 자바 스크립트와 HTML을 생성하는 브라우저 API를 활용한 사용자 제공 데이터로 기존 웹 페이지를 업데이트할 때 발생하며, XSS는 피해자의 브라우저에서 공격자에 의해 스크립트를 실행시켜 사용자 세션을 탈취할 수 있게 만들고, 웹 사이트를 변조시키고, 악성 사이트로 리다이렉션할 수 있도록 함

즉, HTML을 생성하는 브라우저 API를 활용한 공격으로 공격자가 보낸 스크립트(HTML태그)가 피해자 브라우저에서 실행되는 것이다.

크게 저장형과 반사형으로 구분된다.

저장형(Stored) 웹 사이트의 게시판, 코멘트 필드, 사용자 프로필 등의 입력 form을 통해 악성 스크립트를 삽입하여 DB에 저장되면, 사용자가 사이트를 방문하여 저장되어 있는 페이지에 정보를 요청할 때, 서버는 악성 스크립트를 사용자에게 전달하여 사용자 브라우저에서 스크립트가 실행되면서 공격이 가능하게 되는 취약점을 말한다.
반사형(Reflected) 검색결과, 에러 메시지 등을 통해 서버가 외부에서 입력받은 악성 스크립트가 포함된 URL파라미터 값을 사용자 브라우저에서 응답보낼 때 발생함
EX) 검색창에 검색했을 때 악성 스크립트가 실행

 

 

크로스 사이트 스크립트 취약점 (XSS Cross-Site Script )

1.       크로스 사이트 스크립팅 (XSS Cross-Site Script ) 2.       영향을 받는 환경 3.       취약점 4...

secu153.tistory.com

위 블로그에서 자세하게 설명하고 있다.

 

A8. 안전하지 않은 역질렬화

: 데이터를 역직렬화 하는 과정에서 종종 원격 코드 실행으로 이어지며, 원격 코드 실행 결과를 가져오지 않더라고 권한 상승 공격, 주입공격과 재생 공격을 포함한 다양한 공격 수행에 사용될 수 있음

* 직렬화 : 객체를 직렬화하여 전송 가능한 형태로 만드는 것

* 역질렬화 : 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원하는 것

 

A9. 알려진 취약점이 있는 구성요소 사용

: 이미 알려진 취약한 구성요소를 사용하여 발생한 취약점으로, 이때 취약한 구성요소가 악용된 경우 라이브러리, 프레임워크 같은 구성요소는 애플리케이션과 같은 권한으로 실행되기 때문에 심각한 데이터 손실을 일으키거나 서버가 장악될 수 있음.

EX)

- 하트블리드 취약점이 있는 OpenSSL 1.0.1 버전을 사용하는 경우 전송정보 탈취 될 수 있음

 

A10. 불충분한 로깅 & 모니터링

: 불충분한 로깅과 모니터링은 사고 대응의 비효율적인 통합 또는 누락과 함께 공격자들이 시스템을 더 공격하고, 지속성을 유지하며, 더 많은 시스템을 중심으로 공격할 수 있도록 만들고, 데이터를 변조, 추출 또는 파괴할 수 있음.

즉, 불충분한 로깅과 모니터링은 공격자로 하여금 시스템을 공격할만한 기회를 제공하는 것이다.

EX)

- 개인정보보호법에 따라 개인정보를 1년 이상 저장하여야 하는데 이때 로깅과 모니터링이 불충분할 경우 법적 처벌을 받을 수 있음

 


참고

http://itwiki.kr/w/OWASP_Top_10

https://namu.wiki/w/%EB%A0%88%EC%9D%B8%EB%B3%B4%EC%9A%B0%20%ED%85%8C%EC%9D%B4%EB%B8%94

http://itwiki.kr/w/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88%EA%B8%B0%EC%82%AC_12%ED%9A%8C