Chrome Cache to XSS
Reading time: 2 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
자세한 내용은 이 글에서 확인할 수 있습니다.
여기서 논의된 기술은 두 가지 주요 캐시 유형인 **back/forward cache (bfcache)**와 disk cache의 동작 및 상호작용을 이해하는 것과 관련이 있습니다. bfcache는 JavaScript 힙을 포함한 페이지의 전체 스냅샷을 저장하며, 더 포괄적인 스냅샷을 저장할 수 있는 능력 덕분에 back/forward 탐색 시 disk cache보다 우선시됩니다. 반면, disk cache는 JavaScript 힙을 포함하지 않고 웹에서 가져온 리소스를 저장하며, 통신 비용을 줄이기 위해 back/forward 탐색에 사용됩니다. disk cache의 흥미로운 점은 fetch
를 사용하여 가져온 리소스를 포함한다는 것으로, 이는 접근된 URL 리소스가 캐시에서 브라우저에 의해 렌더링된다는 것을 의미합니다.
주요 사항:
- bfcache는 back/forward 탐색에서 disk cache보다 우선합니다.
- bfcache 대신 disk cache에 저장된 페이지를 사용하려면 후자를 비활성화해야 합니다.
bfcache 비활성화:
기본적으로 Puppeteer는 Chromium 문서에 나열된 조건에 맞춰 bfcache를 비활성화합니다. bfcache를 비활성화하는 효과적인 방법 중 하나는 window.opener
에 대한 참조를 유지하는 window.open()
을 사용하여 페이지를 여는 것입니다.
동작 재현:
- 웹페이지를 방문합니다. 예:
https://example.com
. open("http://spanote.seccon.games:3000/api/token")
을 실행합니다. 이로 인해 서버 응답이 500 상태 코드로 반환됩니다.- 새로 열린 탭에서
http://spanote.seccon.games:3000/
으로 이동합니다. 이 작업은http://spanote.seccon.games:3000/api/token
의 응답을 disk cache로 캐시합니다. history.back()
을 사용하여 뒤로 탐색합니다. 이 작업은 페이지에 캐시된 JSON 응답을 렌더링합니다.
disk cache가 사용되었는지 확인하려면 Google Chrome의 DevTools를 사용할 수 있습니다.
bfcache 및 disk cache에 대한 추가 세부정보는 각각 web.dev의 bfcache 및 Chromium의 disk cache 설계 문서에서 확인할 수 있습니다.
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.