(게시 후 수정시 수정하기 버튼 꼭 누르기.. 자동 저장 X)
Velog 사용법
세션 만료 시간 설정, 로그아웃 시 재발급 및 이전 사용 토큰 삭제
쿠키의 유효기간 설정
: Remember Me 옵션을 사용
HttpOnly, secure, Samesite 옵션 사용
HttpOnly
: 쿠키가 클라이언트 측 스크립트에서 접근할 수 없도록 만듦
: XSS(Cross-Site Scripting) 공격으로부터 쿠키를 보호하는 데 유용, 세션보호에도 유용
secure
: 쿠키가 오직 HTTPS 연결을 통해서만 전송되도록 만듦
: 해당 옵션 허용시 HTTP 연결에서는 전송 X
Samesite
: CSRF 공격을 방지하기 위해
: strict(쿠키는 동일한 도메인 내에서만 전송, 외부 접근 X), Lax(사용자가 링크를 타거나 검색해서 들어오는 경우에만 접근 가능), None(쿠키가 모든 요청에 전송, secure 와 같이 사용함)
: 쿠키가 다른 도메인 요청시 어떻게 전송될지 제어 => 즉 공격자가 세션을 탈취 할수 없게하는 역할
: CSRF 공격을 방지하기 위해 사용
응답헤더 내 Cache-Control, Pragma, Expires 같은 캐시 제어 헤더를 설정
: 캐시로 인해 로그인되는 문제를 방지 가능
: 세개 중 Cache-Control의 우선 순위가 가장 높음
: 구형 브라우저, 서버의 호환성을 위해 위 세개를 다 사용하는 경우도 있음
Cache-Control
: http/1.1 에 도입됨
: 캐싱 정책을 설정하는 헤더 (클라이언트나 중간 프록시 서버가 응답을 캐시할지, 얼마나 캐시할지)
Pragma
: 1.0 에 도입
: 매번 최신 데이터를 받아오게 설정
Expires
: 1.0 에 도입
: 만료되는 시간과 날짜를 지정, 지정 시간 이후엔 새로운 콘텐츠를 요청함
: 현재는 Cache-control: max-age 사용으로 많이 사용안함
: 웹은 상태 비저장 방식이기 때문에
사용자 세션 유지, 개인화된 사용자 경험 제공, 성능 최적화, 트래킹 및 분석 등을 위해 로컬에 저장됨 => 개인화된 방식으로 사용하기 위함임
JWT는 헤더, 페이로드, 서명 세 부분으로 나뉘어져 있음
여기서 주로 exp 클레임에 저장됨, 이때 디코딩 후 확인 가능..
base64로 디코딩해서 토큰을 확인 가능(인코딩은 보안 조치가 아님)
추측하기 쉬운 패턴이 있는 경우 취약점으로 볼수도 있다.
버프스위트에 기능 설치 방법
구성 1 (KALI)
버프, 크롬 or 파이어 폭스, 포스트맨, wfuzz 등 도구 설치
burp 설정은 생략
크롬도 생략
API 개발, 테스트 도구
API 요청을 생성하고, 응답을 분석가능
포스트맨 실습용 무료 API 찾기(책 내에 있는 예시 사이트는 폐쇄됨)
링크 1 : http://www.7timer.info/bin/astro.php?lon=113.17&lat=23.09&ac=0&lang=en&unit=metric&output=internal&tzshift=0
버프의 intruder 와 비슷한 역할 Wfuzz(스캐닝 도구)
nikto 와 비슷한 스캐닝 도구
닉토랑은 다른 느낌의 스캐닝 도구
Nikto: 취약점 스캐너로, 웹 서버와 애플리케이션의 기본적인 취약점을 자동으로 스캔
Wfuzz: 브루트 포스 도구로, 웹 애플리케이션의 숨겨진 요소나 취약점을 찾는 데 사용
좀더 세밀한 공격 가능
가능한 기능
wfuzz -z range, 1-20 https://reqres.in/api/users/FUZZ
=> 1~20번까지 users 확인 가능
단, 내용은 확인 x, byte 수까진 가능
wfuzz -z range,1-20 -u https://reqres.in/api/users/FUZZ -c
=> 위와 동일 but 상태코드까지 확인 가능
wfuzz -c -z file,/path/to/wordlist.txt --hc 404 https://reqres.in/api/users/FUZZ
wfuzz -c -z file,/path/to/wordlist.txt --hc 404 https://reqres.in/api/FUZZ
wfuzz -c -z file,/path/to/wordlist.txt --hc 404 https://reqres.in/api/users/1?FUZZ=test
wfuzz -c -z file,/path/to/wordlist.txt --hs "User not found" https://reqres.in/api/users/1?param=FUZZ
인덱스 순서대로 출력하면
wfuzz -z range,1-20 -u https://reqres.in/api/users/FUZZ -c | sort -k1,1n
구성 2 (Ubuntu) => 칼리로 변경
우분투 시스템 패키지 업데이트
sudo apt-get update
필요한 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
시스템 패키지 업데이트
sudo apt-get update
Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io
Docker 실행상태 확인
sudo systemctl status docker
도커 실행
sudo docker run hello-world
docker-compose 설치
sudo apt install docker-compose
cd