
CVE-2018-19131의 개념 증명 익스플로잇: X.509 인증서를 통한 Squid Proxy XSS
이것으로 불법적인 행위를 하지 마십시오. 이것은 악성 소프트웨어가 아닙니다. 단지 개념 증명일 뿐입니다.
이것은 CVE-2018-19131의 데모이며, Docker Compose 앱에서 실행됩니다.

이 라이브러리는 취약점이 있는 Squid 버전 3.5.27을 빌드합니다. 버전 3.5.28은 취약하지 않습니다. 영향을 받는 특정 버전은 여기에 나열되어 있습니다.
테스트는 Windows 10 및 Mac OS X Mojave에서 성공적으로 완료되었습니다.
프록시를 사용하도록 구성된 동일한 호스트에서 실행하지 마십시오. 프록시가 모든 HTTP 요청을 자신에게 다시 리디렉션하기 때문입니다. 클라이언트와 서버는 별도의 두 대의 머신이어야 합니다.
git clone https://github.com/JonathanWilbur/CVE-2018-19131.git을 실행하여 이 저장소를 클론합니다.cd CVE-2018-19131을 실행하여 디렉토리로 이동합니다.docker-compose up을 실행하여 애플리케이션을 빌드합니다.HTTPS 프록시 설정은 매우 표준적인 작업입니다. Windows와 MacOS에는 기능이 내장되어 있습니다. Linux는 창의력만 있다면 무엇이든 가능합니다. 여기서 프록시 설정 방법을 문서화하지는 않겠습니다. 다른 곳에서 이미 광범위하게 문서화되어 있기 때문입니다. 취약한 Squid 인스턴스를 설치한 서버를 가리키도록 컴퓨터를 구성하기만 하면 됩니다.
그러나 한 가지 언급할 점은 HTTP가 아닌 HTTPS 프록시를 사용해야 한다는 것입니다. MacOS의 프록시 설정에서는 이를 보안 웹 프록시라고 합니다. Windows는 이러한 구분을 하지 않습니다.
https://web에 연결하여 악성 사이트에 접속합니다. 첫 번째 인증서 오류를 수락합니다. 이는 프록시가 HTTPS 트래픽을 가로채서 발생한 것입니다. 그러면 다음 페이지가 표시되고 익스플로잇이 실행됩니다. HACKED!라는 웹 브라우저 알림이 표시되어야 합니다.
OK를 클릭하면 보안 연결 실패에 대한 기본 Squid 페이지가 표시됩니다. 표시된 발급자/주체 이름(자체 서명 인증서를 사용하므로 동일함)에 commonName (CN) 속성이 누락된 것을 확인할 수 있습니다. 그 이유는 해당 값이 다음과 같았기 때문입니다:
<script>alert("HACKED!");</script>
이는 원시 HTML로 해석되므로 스크립트가 실행됩니다!
이 라이브러리에 대한 수정 사항이나 개선 사항을 제안하려면 이 GitHub 페이지에 이슈를 남겨 주십시오. 다른 이유로 연락하려면 [email protected]로 이메일을 보내주십시오. (내 GPG 키) (내 TLS 인증서). 🐗