1. Cross Site Script 취약점
1-1. 개념
- 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹 사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점
1-2. 공격방법
- 비 지속적 기법
- 반사 (Reflected) XSS라고도 불리며, 가장 일반적인 유형이다. 웹 클라이언트가 제공하는 HTTP 쿼리 매개 변수에서 적절하지 않고, 구문 분석 및 해당 사용자에 대한 결과의 페이지를 표시하는 공격 기법
- 지속적 기법
- 공격자가 제공 한 데이터가 서버에 저장 된 다음 지속적으로 서비스를 제공하는 "정상"페이지에서 다른 사용자에게 노출된다.
1-3. 대응방안
- 입출력 값 검증
- XSS Cheat Sheet 에 대한 필터 목록을 만들어 모든 Cheat Sheet에 대한 대응이 가능하도록 하여야 합니다
- 웹 방화벽 사용
- 웹 방화벽은 웹 공격에 특화되어있기 때문에 XSS 공격을 방어하기 위함만이 아니라 각종 Injection 공격을 효과적으로 방어할 수 있습니다.
- XSS 방어 라이브러리 , 브라우저 확장앱 사용
- XSS를 막아주는 Anti XSS 라이브러리를 여러 회사에서 제공하는데 이 라이브러리를 사용하면 손쉽게 XSS를 방어할 수 있습니다
2. SQL Injection 취약점
2-1. 개념
- 웹 사이트의 보안상 허점을 이용해 특정 SQL 쿼리문을 전송하여 공격자가 원하는 데이터베이스의 중요한 정보를 가져오는 해킹 기법을 말한다. 대부분 클라이언트가 입력한 데이터를 제대로 필터링하지 못하는 경우에 발생한다. 공격의 쉬운 난이도에 비해 피해가 상당하기 때문에 보안 위협 1순위로 불릴만큼 중요한 기법
2-2. 공격방법
- Classic SQLi
- 가장 일반적인 공격 방법
- 공격자가 동일한 통신 구간(ex : 브라우저)에서 공격을 시도하고 결과를 얻을 수 있다.
- Union-based SQLi
- SQL 구문에서 UNION은 두개나 그 이상의 SELECT 구문을 결합하여 하나의 결과로 출력한다.
- 이러한 기능을 활용하여 공격자는 쿼리의 일부로 추가 구문을 삽입하여 HTTP 응답으로 결과를 가져올 수 있다.
2-3. 대응방안
- 입출력 값 검증
- SQL Injection 에서 사용되는 기법과 키워드는 엄청나게 많다. 사용자의 입력 값에 대한 검증이 필요한데, 서버 단에서 화이트리스트 기반으로 검증
- 웹 방화벽 사용
- 소프트웨어형, 하드웨어형, 프록시형 이렇게 세가지 종류로 나눔
- 소프트웨어형은 서버 내에 직접 설치하는 방법
- 하드웨어형은 네트워크 상에서 서버 앞 단에 직접 하드웨어 장비로 구성하는 방법
- 프록시형은 DNS 서버 주소를 웹 방화벽으로 바꾸고 서버로 가는 트래픽이 웹 방화벽을 먼저 거치도록 하는 방법
- 소프트웨어형, 하드웨어형, 프록시형 이렇게 세가지 종류로 나눔
- Prepared Statement 구문사용
- Prepared Statement 구문을 사용하게 되면, 사용자의 입력 값이 데이터베이스의 파라미터로 들어가기 전에 DBMS가 미리 컴파일 하여 실행하지 않고 대기한다. 그 후 사용자의 입력 값을 문자열로 인식하게 하여 공격쿼리가 들어간다고 하더라도, 사용자의 입력은 이미 의미 없는 단순 문자열이기 때문에 전체 쿼리문도 공격자의 의도대로 작동하지 않는다.
3. 권한인증 취약점
3-1. 개념
- 사용자 인증 방식중 하나인 쿠키를 변조하여 다른 사용자로 전환하거나 권한 상승이 가능한 취약점
3-2. 대응방안
- 홈페이지 개발 보안 조치
- 홈페이지는 사용자 인증 등 중요기능 구현 시 가급적이면 Coolie 대신 Session 방식 사용
- 홈페이지의 사용자 인증 등 중요기능 구현 시 Cookie 방식 활용 시 안전한 알고리즘을 사용
4. 에러처리 취약점
4-1. 개념
- 웹 서버에 별도의 에러페이지를 설정하지 않은 경우, 에러 메시지를 통해 서버 데이터 정보 등 공격에 필요한 정보가 노출되는 취약점
4-2. 대응방안
- 홈페이지의 에러 페이지는 별도의 페이지를 제작하여 에러 페이지로 이동