5 KiB
Chrome Cache를 이용한 XSS
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
- 사이버 보안 회사에서 일하시나요? 회사를 HackTricks에서 광고하고 싶으신가요? 또는 PEASS의 최신 버전을 사용하거나 HackTricks를 PDF로 다운로드하고 싶으신가요? SUBSCRIPTION PLANS를 확인해보세요!
- The PEASS Family를 발견해보세요. 독점적인 NFTs 컬렉션입니다.
- 공식 PEASS & HackTricks 스웨그를 얻으세요.
- 💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter에서 팔로우하세요 🐦@carlospolopm.
- 해킹 트릭을 공유하려면 hacktricks repo 및 hacktricks-cloud repo에 PR을 제출하세요.
더 자세한 내용은 이 writeup에서 확인할 수 있습니다.
여기에서 논의되는 기술은 두 가지 주요 캐시 유형인 **뒤로/앞으로 캐시 (bfcache)**와 디스크 캐시의 동작과 상호작용을 이해하는 것입니다. bfcache는 JavaScript 힙을 포함한 페이지의 완전한 스냅샷을 저장하며, 더 포괄적인 스냅샷을 저장할 수 있는 능력으로 인해 뒤로/앞으로 탐색에 대해 디스크 캐시보다 우선시됩니다. 반면, 디스크 캐시는 JavaScript 힙을 포함하지 않고 웹에서 가져온 리소스를 저장하며, 통신 비용을 줄이기 위해 뒤로/앞으로 탐색에 사용됩니다. 디스크 캐시의 흥미로운 측면은 fetch
를 사용하여 가져온 리소스를 포함한다는 것입니다. 즉, 액세스한 URL 리소스는 브라우저에서 캐시로부터 렌더링됩니다.
주요 포인트:
- bfcache는 뒤로/앞으로 탐색에서 디스크 캐시보다 우선합니다.
- bfcache 대신 디스크 캐시에 저장된 페이지를 활용하려면, bfcache를 비활성화해야 합니다.
bfcache 비활성화:
기본적으로 Puppeteer는 Chromium의 문서에 나열된 조건과 일치하도록 bfcache를 비활성화합니다. bfcache를 비활성화하는 효과적인 방법 중 하나는 RelatedActiveContentsExist
를 사용하는 것입니다. 이는 window.open()
을 사용하여 window.opener
에 대한 참조를 유지하는 페이지를 열어서 달성할 수 있습니다.
동작 재현:
- 웹페이지(e.g.,
https://example.com
)를 방문합니다. open("http://spanote.seccon.games:3000/api/token")
을 실행합니다. 이로 인해 서버 응답이 500 상태 코드로 반환됩니다.- 새로 열린 탭에서
http://spanote.seccon.games:3000/
로 이동합니다. 이 작업은http://spanote.seccon.games:3000/api/token
의 응답을 디스크 캐시로 캐시합니다. history.back()
을 사용하여 뒤로 이동합니다. 이 작업으로 페이지에 캐시된 JSON 응답이 렌더링됩니다.
디스크 캐시가 사용되었는지 확인하기 위해 Google Chrome의 DevTools를 사용할 수 있습니다.
bfcache와 디스크 캐시에 대한 자세한 내용은 각각 web.dev의 bfcache와 Chromium의 디스크 캐시 설계 문서에서 찾을 수 있습니다.
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
- 사이버 보안 회사에서 일하시나요? 회사를 HackTricks에서 광고하고 싶으신가요? 또는 PEASS의 최신 버전을 사용하거나 HackTricks를 PDF로 다운로드하고 싶으신가요? SUBSCRIPTION PLANS를 확인해보세요!
- The PEASS Family를 발견해보세요. 독점적인 NFTs 컬렉션입니다.
- 공식 PEASS & HackTricks 스웨그를 얻으세요.
- 💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter에서 팔로우하세요 🐦@carlospolopm.
- 해킹 트릭을 공유하려면 hacktricks repo 및 hacktricks-cloud repo에 PR을 제출하세요.