
크로스사이트 누수(XS-Leaks) 검색기
XSLeaker는 웹사이트에서 XS-Leaks를 찾는 데 도움을 주는 도구입니다. 이 도구는 누출 기법이 알려진 리소스 값(예: iframe 수)을 서로 다른 상태 간에 비교합니다.
XSLeaker는 두 가지 구성 요소로 이루어져 있습니다. 서로 다른 상태에서 리소스 값을 수집하는 데 사용되는 Chrome 확장 프로그램과 결과를 비교하고 표시하는 데 사용되는 node.js 서버입니다.
다음 리소스 값의 차이점이 확인됩니다:
사용자가 n개의 서로 다른 상태를 테스트하려고 한다고 가정할 때 다음 설정을 수행해야 합니다:
각 상태에 대해 하나씩 n개의 Chrome 프로필을 생성합니다. 프로필은 재사용할 수 있으므로 사용자는 n개보다 더 많은 상태를 테스트해야 하는 경우에만 새 Chrome 프로필을 만들면 됩니다.
각 프로필에 XSLeaker Chrome 확장 프로그램을 설치합니다.
이 설정은 사용자가 n개보다 더 많은 상태를 테스트하려는 경우를 제외하고는 한 번만 수행하면 됩니다.
서로 다른 프로필로 n개의 브라우저 창을 엽니다.
각 창에서 브라우저 확장 프로그램을 활성화합니다. 이는 팝업의 "Activate" 버튼으로 수행됩니다.
선택적으로 상태 이름(예: admin 계정)을 지정합니다. 결과에서 상태를 식별하기가 훨씬 쉬워지므로 권장됩니다.
테스트할 웹사이트의 서로 다른 상태를 각 창에 하나씩 설정합니다(예: 다른 사용자로 로그인).
창 하나를 선택하고 팝업 창의 스위치를 통해 Master Mode를 활성화합니다. 이제 다른 창들은 마스터 창의 URL 변경을 따릅니다.
마스터 창에서 테스트할 사이트로 이동합니다. 다른 모든 창도 같은 페이지로 이동합니다.
마스터 창의 팝업에서 "Send Results" 버튼을 클릭하여 테스트를 시작합니다.
차이점을 확인하려면 Node.js가 제공하는 웹 인터페이스(예: http://localhost:3000)로 이동합니다.
같은 웹사이트를 다음에 테스트할 때는 마스터 창으로 대상 URL로 이동한 후 "Send Results" 버튼을 다시 누르기만 하면 됩니다.
이미지를 클릭하면 XSLeaker가 작동하는 모습을 볼 수 있습니다:
node.js로 호스팅되는 웹 인터페이스에는 다음 사이트가 있습니다.
Results: 가장 최근 테스트 결과를 표시합니다.
History: 과거에 수행된 모든 테스트를 표시합니다. 테이블의 행을 클릭하면 테스트 결과가 표시됩니다.
Automation: Automation 페이지에서는 테스트할 URL 목록을 업로드할 수 있습니다. "Start Test" 버튼은 연결된 모든 브라우저 창을 하나씩 차례로 URL로 이동시키며 테스트를 실행합니다. 결과는 History에서 확인할 수 있습니다.
참고: 먼저 테스트하려는 상태를 서로 다른 창에 설정해야 합니다.
현재 데이터베이스에 저장된 차이점이 항상 정확하지 않은 버그가 있습니다. 자동화된 테스트 후 테스트 결과를 확인하여 차이점을 다시 검증하십시오.
Test: XSLeaker가 제대로 작동하는지 테스트하는 데 사용할 수 있는 테스트 벤치입니다. http://localhost:3000/tests에서 상태를 선택할 수 있습니다. 그런 다음 상태에 따른 속성을 설정할 수 있습니다. 서로 다른 상태의 여러 브라우저 창이 열려 있으면 마스터 창으로 테스트 사이트(http://localhost:3000/tests/testsite)로 이동하여 테스트를 실행합니다.

이 이미지는 XSLeaker의 아키텍처를 보여줍니다. 서로 다른 상태의 서로 다른 브라우저 창은 WebSockets를 통해 node.js 애플리케이션에 연결됩니다. 서버는 사용자가 테스트 결과를 확인할 수 있는 웹 인터페이스를 제공합니다(XSLeaker 웹 인터페이스 참조). 서버는 테스트 결과를 SQLite 데이터베이스에 저장합니다.