가장 최신인 OWASP top 10 의 항목은 2021년 기준이다. (이번년도인 25년도에 안에 업데이트 되서 공개될 듯?)
실습전에 먼저 순위들을 알고가자.
1. Broken Access Control (부적절한 인가)
사용자가 접근하는 리소스나 기능등을 사용해도 되는지 권한을 확인하는 "접근제어" 에서 적절하게 검증하지 못하여 이루어지는 취약점이다.
취약한 유형
1. Insecure Direct Object References
애플리케이션이 내부 객체(데이터나 자산)를 고유 식별자로 직접 참조하면서 이에 대한 접근 권한을 적절히 검증하지 못할때
사용자가 자신의 비밀 게시글이나 주문 페이지 등 특정한 페이지를 들어감
주소는 /orders/1234 등으로 페이지를 고유 식별자 형태로 저장되어 불러오는중
사용자는 직접적으로 요청내용에 1234 등 식별자 번호를 임의로 바꿔서 보냄 (ex: 1238 , 1236 ... )
비밀글이나 해당 페이지에 대한 검증이 없어 사용자에게 그대로 보여지게됨
2. Parameter Tampering
파라미터 변경을 하여 악의적인 행동이 이루어짐
POST /cart/checkout HTTP/1.1
Content-Type: application/x-www-form-urlencoded
item_id=555&quantity=1&price=10000&role=user
해당과 같은 요청을 보내고 있는 사이트가 있다고 가정할때 user를 admin으로 바꾸거나 price등을 10으로 바꿔 입력하는등 사용자가 임의대로 값을 바꾸어 변경하고 서버는 이를 그대로 받아 처리하게될때 => 취약점
3. Forced Browsing
“숨겨진” URL, 관리자 페이지, API 엔드포인트 등을 탐색·추측하여 접근하는 기법
관리자 권한이 없는 일반 사용자가 /admin/dashboard.php 등으로 url 접근시 적절한 검증이 없으면 그대로 관리자 페이지 노출
2. Cryptographic Failures (암호화 문제)
취약하거나 구식 암호 알고리즘 사용, 저장 데이터 미암호화 , 전송 중 데이터 미암호화 (http 등), 하드코딩된 크리덴셜·키, 부적절한 키 관리
3. Injection (인젝션)
sql 인젝션이나 이외에 인젝션류 등과 다른 항목으로 분류되었던 XSS가 인젝션 항목과 합쳐졌다.
또한 오랜기간동안 owasp top10 의 1순위였지만 요즘 개발 프레임워크의 발전과 ORM 의 사용으로 방어가 잘 되어 취약점이 발생하기 어려움
인젝션 류로는 내용이 많아 다 설명하기 어렵지만
LDAP, SQL , Comman 인젝션 + XSS (저장형, 반사형, 셀프 등등) 가 있다.
4. Insecure Design (안전하지 않은 설계)
애초에 설계 단계에서부터 보안을 신경쓰지 않는 경우를 의미함.
예를 들어 회원가입 페이지에서 "이메일 인증" 혹은 "전화번호 인증" 등을 구현하지 않고 그저 입력받고 그대로 처리하게되면 아무렇게나 입력하고 없는 전화번호 혹은 이메일을 입력하며 스팸계정 혹은 유령계정 남발하게됨
5. Security Misconfiguration (보안 설정 오류)
- 디폴트·불필요 기능 활성화: 기본 관리자 계정, 기본 비밀번호, 디버그 모드 등이 그대로 남아 있어 공격에 노출
- 불필요 서비스·포트 개방: 사용하지 않는 웹 서버 기능, 예를 들어 WebDAV, FTP, SSH 등이 인터넷에 노출
- 안전하지 않은 HTTP 헤더: X-Frame-Options, Content-Security-Policy 미설정으로 클릭재킹·XSS 위험 증가
- 잘못된 CORS 설정: Access-Control-Allow-Origin: * 등으로 모든 도메인에서 API 호출 허용
6. Vulnerable and Outdated Components (취약하거나 오래된 컴포넌트)
- 구버전 라이브러리·프레임워크: 알려진 CVE가 존재하는 의존성(예: Log4Shell) 사용
- 보안 패치 미적용: 운영체제·웹서버·DBMS 등에 최신 보안 업데이트를 적용하지 않음
- 서드파티 모듈 무검증: 출처 불분명한 플러그인·스크립트 그대로 사용
- 불필요한 파일·샘플 코드: 예제 애플리케이션, README, 테스트 스크립트 등이 서버에 남아 있어 공격자에게 힌트 제공
7. Identification and Authentication Failures (식별·인증 실패)
- 약한 비밀번호 정책: 최소 길이·복잡성 요구사항 미흡하여 브루트포스 공격에 취약
- 세션 관리 취약: 세션 타임아웃 미설정, 세션 ID 예측 가능 또는 URL에 노출
- 다단계 인증(MFA) 미적용: 중요 기능(비밀번호 변경, 결제 등)에 2FA를 적용하지 않음
- 인증 우회: 비밀번호 재설정 토큰 검증 미흡, OTP 검증 로직 결함
8. Software and Data Integrity Failures (소프트웨어·데이터 무결성 실패)
- 서명 검증 누락: 패키지 매니저 또는 업데이트 서버에서 배포된 바이너리·스크립트에 디지털 서명 검증을 하지 않음
- 신뢰할 수 없는 직렬화(Deserialization): 악의적 입력으로 임의 객체 생성·코드 실행
- 코드·구성파일 변조: CI/CD 파이프라인에서 무결성 검사 없이 배포
- 타사 CDN 위변조: 외부 CDN 스크립트를 검증 없이 포함해 Supply-chain 공격 가능
9. Security Logging and Monitoring Failures (보안 로깅·모니터링 실패)
- 로그 미작성 또는 불완전: 인증 실패·권한 상승 시도·에러 발생 로그가 남지 않음
- 로그 보존 기간 짧음: 사고 조사에 필요한 시점의 로그를 이미 삭제
- 실시간 알림 부재: 이상 징후(다수 로그인 실패, 비정상 API 호출)를 탐지해도 경보·차단 체계 미구축
- SIEM 미연계: 중앙집중형 모니터링 시스템 없이 개별 서버 로그만 보관
10. Server-Side Request Forgery (SSRF) (서버 측 요청 위조)
- 리다이렉트·프록시 기능 남용: 외부 URL 요청 기능을 이용해 내부망(Intranet) 스캔
- 메타데이터 API 노출: AWS, GCP 등의 인스턴스 메타데이터 엔드포인트 접근으로 크리덴셜 탈취
- URL 검증 미흡: 호스트 화이트리스트·포트 제한 없이 모든 URL에 대해 서버 측 요청 수행
- 파일 스키마 오용: file://, gopher:// 등 다양한 프로토콜을 통해 로컬 파일·서비스에 접근
'WEBGOAT 환경 웹해킹 정리' 카테고리의 다른 글
| WebGoat 환경 구축 (0) | 2025.06.16 |
|---|