![[Natas] Natas5 - Natas6](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXESn4%2FbtqEKPNgV8M%2F9eaCZZJPBkvFkhUjPlYHJ0%2Fimg.png)
1. Question
- 엑세스가 허용되지 않았고, 로그인 되어있지 않다는 힌트가 존재한다.
2. Answer
- 소스코드를 봤을때 별다른 특이한 점을 발견할 수 없었다.
- Burp Suite를 이용하여 해당 페이지에 접근 시 인증 관련 영역이 있는지 살펴보았다.
- 확인해본 결과 Cookie값 중 loggedin 항목이 0으로 설정 되어있는것을 확인
1) Cookie란?
- 서버측에서 클라이언트 측에 상태 정보를 저장하고 추출할 수 있는 메커니즘
- 클라이언트의 매 요청마다 웹 브라우저로부터 서버에게 전송되는 정보패킷의 일종
- HTTP에서 클라이언트의 상태 정보를 클라이언트의 하드 디스크에 저장하였다가 필요시 정보를 참조하거나 재사용 가능
- 해당 loggedin 항목을 1로 변경한 후 Foward 진행
3. Success
4. 문제 풀이
1) 주요정보통신기반시설 기술적 취약점 분석 상세 가이드
- 주통기의 CC(상) 쿠키 변조 취약점 항목에 해당한다.
1.1) 점검 방법
1.2) 대응 방안
- 쿠키를 사용하여 중요 정보나 인증을 구현해야 하는경우 안전한 알고리즘(SEED, 3DES, AES 등)을 적용
- 쿠키 대신에 Server Side에서 동작하는 Session을 사용
- Cilent Side Cookie는 암호화를 진행 하여도 구조상 다양한 취약점에 노출될 수 있음
2) 소프트웨어 보안약점 진단가이드
- Cookie 값은 자산 가치 3등급(1점)으로 분류되어있음
- 프로그램에서 Cookie값을 설정하거나, 응답 헤더값을 설정하거나 페이지를 리다이렉트를 하기 위한 Location정보를 삽입하는등 외부입력 값이 삽입되는 경우 HTTP 응답분할을 일으킬 수 있는 문자(\n\n)을 필터링 수행
2.1) HTTP 응답분할 Cookie 취약점
- HTTP 요청에 들어 있는 파라미터(Parameter)가 HTTP 응답헤더에 포함되어 사용자에게 다시 전달 될 때, 입력값에 CR(Carriage Return)이나 LF(Line Feed)와 같은 개행문자가 존재하면 HTTP 응답 이 2개 이상으로 분리될 수 있음
- request.getParameter("last_login"); 함수를 통해 last_login Cookie 값을 저장
- lastLogin Cookie 값을 검증하지 않고 reresponse.addCookie(); 함수에 Cookie값 삽입
- 중간에 last_login값을 Wiley Hacker₩r₩nHTTP/1.1 200 OK₩r₩n로 설정할 경우 분리된 응답 본문의 내용을 수정 가능
- lastlogin 값을 저장 한 후 해당 Cookie 값을 사용하기 이전에 replaceAll();함수를 사용하여 CR, LF 제거 후 저장
[출처]
Cookie: https://soul0.tistory.com/106
'Hacking & Security > Natas War Game' 카테고리의 다른 글
[Natas] Natas7 - Natas8 (0) | 2020.06.11 |
---|---|
[Natas] Natas6 - Natas7 (0) | 2020.06.11 |
[Natas] Natas4 - Natas5 (0) | 2020.06.09 |
[Natas] Natas3 - Natas4 (0) | 2020.06.08 |
[Natas] Natas2 - Natas3 (0) | 2020.06.08 |
공부&일상 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 질문은 언제나 환영입니다😊