반응형
버그바운티 다양한 공격 심층 분석 및 취약점 예방 가이드
1. XSSI 공격 심층 분석
- 정의: XSSI(Cross-Site Scripting Inclusion)는 공격자가 웹 페이지에 악의적인 스크립트를 삽입하여 사용자에게 피해를 입히는 공격 방식
- 공격 유형:
- Regular XSSI: 웹 페이지에 직접 악의적인 스크립트를 삽입하는 방식
- Dynamic-JavaScript-based XSSI: JSONP 응답이나 Ajax 요청을 통해 악의적인 스크립트를 삽입하는 방식
- Authenticated-JavaScript-XSSI: 인증된 사용자만 접근할 수 있는 페이지에 악의적인 스크립트를 삽입하는 방식
- Non-Script-XSSI: 스크립트 태그가 아닌 다른 방식으로 악의적인 스크립트를 실행하는 방식
- 공격 예시:
- 사용자의 개인 정보를 탈취하는 악의적인 스크립트를 삽입
- 사용자의 행위를 조작하는 악의적인 스크립트를 삽입
- 웹 사이트를 변조하는 악의적인 스크립트를 삽입
- 예방 방법:
- 웹 사이트의 취약점을 파악하고 개선
- XSS 필터링 기술 사용
- Content Security Policy (CSP) 사용
- Cross-Origin Resource Sharing (CORS) 적절하게 설정
- 사용자에게 XSS 공격 교육 실시
2. 추가 취약점 분석 및 예방 가이드
2.1. HTTP 응답 분할 공격
- 정의: HTTP 응답 분할 공격은 공격자가 단일 요청에 대해 두 개의 HTTP 응답을 반환하도록 유도하여 피해자에게 악성 콘텐츠를 전달하는 공격 방식
- 공격 시나리오:
- 공격자가 악성 URL을 피해자에게 전달
- 피해자가 악성 URL을 클릭
- 취약한 웹 사이트는 두 개의 HTTP 응답을 반환
- 첫 번째 응답은 피해자를 정상 페이지로 리디렉션
- 두 번째 응답은 피해자에게 악성 콘텐츠를 전달
- 예방 방법:
- 입력 데이터(CR 및 LF)의 유효성 검사
- 하나의 헤더 필드에 HTTP 헤더 중첩 금지
2.2. 구분 기호 삽입 공격
- 정의: 구분 기호 삽입 공격은 공격자가 웹 애플리케이션의 매개변수를 조작하여 예상치 못한 동작을 발생시키는 공격 방식
- 공격 시나리오:
- 공격자가 특정 매개변수에 구분 기호를 삽입
- 취약한 웹 애플리케이션은 예상치 못한 방식으로 매개변수를 해석
- 공격자가 원하는 동작을 수행
- 예방 방법:
- 입력 유효성 검사 올바르게 구현
- 허용되는 문자의 허용 목록 사용
2.3. SMTP 헤더 삽입 공격
- 정의: SMTP 헤더 삽입 공격은 공격자가 이메일 헤더에 악의적인 값을 삽입하여 피해자에게 가짜 이메일을 보내는 공격 방식
- 공격 시나리오:
- 공격자가 이메일 템플릿에 악의적인 값을 삽입
- 취약한 웹 애플리케이션은 악의적인 값을 포함하는 이메일을 전송
- 피해자는 가짜 이메일을 수신
- 예방 방법:
- 사용자 입력이 이메일 헤더에 배치되기 전에 안전한 문자의 허용 목록을 준수하는지 확인
- 이메일 라이브러리 사용
2.4. 지나치게 제한적인 계정 잠금 정책
- 정의: 지나치게 제한적인 계정 잠금 정책은 공격자가 무차별 대입 공격을 통해 사용자 계정을 잠금시키는 공격 방식
- 테스트 방법
- Wi-Fi 연결을 사용하여 사이트에 로그인 시도를 50회 이상 실패시킨다.
- 사용자 이름이 vflexo라고 가정하고 50개의 잘못된 비밀번호가 포함된 단어 목록을 사용한다.
- 계정이 잠겼다는 오류가 표시되면 인터넷 연결을 Wi-Fi에서 모바일 핫스팟으로 변경한다.
- 동일한 사용자 vflexo에 대한 로그인 요청을 보낸다.
- 공격자는 Wi-Fi 연결을 사용하여 피해자 user8@gmail.com의 로그인 시도를 여러 번 실패시켜 계정을 잠금한다.
- 피해자는 인터넷 연결을 모바일 핫스팟으로 변경한다.
- 피해자는 Wi-Fi 연결을 사용하여 로그인 시도를 하지만 여전히 잠금 오류가 표시된다.
- 피해자는 모바일 핫스팟 연결을 사용하여 로그인 시도를 하지만 여전히 잠금 오류가 표시된다.
- 공격자는 IP Rotator를 사용하여 피해자에 대한 무차별 대입 공격을 수행한다.
- 로그인 이름 외에 IP 주소를 고려하는 등 보다 지능적인 비밀번호 조절 메커니즘을 구현한다.
- 사용자 컴퓨터에 퍼즐 해결과 같은 계산 작업을 요구하는 암호 무차별 대입 공격에 대한 대안적인 계정 잠금 방식을 고려한다.
- 로그인 실패 횟수 제한은 적절하게 설정해야 한다.
- 로그인 실패 후 일정 시간이 지나면 자동으로 계정 잠금 해제 기능을 구현하는 것이 좋다.
- 사용자에게 로그인 실패 횟수 및 남은 시도 횟수를 알려주는 것이 좋다.
- 로그인 시도 기록을 저장하여 공격자의 IP 주소를 추적할 수 있도록 한다.
- 인터넷 연결을 변경한 후에도 잠금 오류가 지속된다면 잠금 정책은 로그인 시도를 잠그기 위해 사용자 이름만 고려한다는 의미다. 이는 공격자가 사이트의 모든 사용자에 대해 무차별 대입 공격을 수행하여 사용자들이 로그인할 수 없도록 서비스 거부 공격을 할 수 있다는 것을 의미한다.
https://tsunote.tistory.com/m/113
반응형
'보안' 카테고리의 다른 글
다크 웹 탐험기: 안전 가이드 및 탐색 팁 (1) | 2024.02.14 |
---|---|
사기 메일로부터 안전하게 보호하는 방법 (0) | 2024.02.13 |
OAuth 인증이 취약한 이유 (0) | 2024.01.29 |
char() , varchar()-- char() 취약점 (0) | 2023.11.06 |
CSP는 무엇인가 (0) | 2023.10.22 |