
CVE-2023-4771 PoC CKEditor 4 AJAX 샘플의 크로스 사이트 스크립팅(XSS) 취약점
CVE-2023-4771 PoC CKEditor 4 AJAX 샘플의 크로스사이트 스크립팅(XSS) 취약점
이 문서는 CKEditor를 사용하여 XSS 취약점(CVE-2023-4771)을 수행하는 방법을 설명합니다. 다음 단계를 진행할 때는 각별한 주의를 기울이십시오:
사전 요구 사항
• CKEditor 인스턴스에 접근 권한이 있어야 합니다.
파일: ckeditor/samples/old/ajax.html.
XSS 취약점 수행 단계:
CKEditor 샘플 페이지 방문 원하는 브라우저를 열고 이 URL(/ckeditor/samples/old/ajax.html)을 방문합니다. 이 URL은 테스트 대상 웹 애플리케이션에 있는 CKEditor 샘플 페이지를 가리켜야 합니다.
새 편집기 인스턴스 생성: CKEditor 샘플 페이지로 이동하여 새 편집기 인스턴스를 생성할 수 있는 버튼, 링크 등의 컨트롤을 찾아 클릭합니다. 페이지의 CKEditor 인스턴스가 활성화되어야 합니다.
소스 모드로 전환: CKEditor 인스턴스가 준비되면 "Source" 버튼을 찾아 클릭합니다. 이 버튼을 사용하면 편집기에서 원시 HTML 콘텐츠를 제어할 수 있습니다.
XSS 페이로드 주입: 소스 보기에는 HTML 코드를 작성할 수 있는 textarea가 제공됩니다. 다음은 이 textarea에 주입하려는 XSS 페이로드의 예입니다:
<p>Xss<!-- --!>-->Attack</p>
이 페이로드는 해당 HTML을 렌더링할 때 경고창을 발생시키는 로직입니다.
편집기 인스턴스 제거: 페이로드를 붙여넣은 후 "Remove Editor" 버튼/링크를 찾아 클릭합니다. 그러면 CKEditor 인스턴스가 꺼지고 콘텐츠가 HTML로 출력됩니다.
XSS 경고창 확인: 애플리케이션이 취약한 경우, 편집기가 제거되고 HTML 콘텐츠가 렌더링된 후 "XSS" 메시지가 포함된 경고창이 나타납니다.
ajax.html의 취약한 코드: document.getElementById( 'editorcontents' ).innerHTML = html = editor.getData();

참고 자료:
• https://cve.mitre.org/cgi-bin/cvename.cgi?name=2023-4771
PoC 크레딧: Sahar Shlichove
CVE 보고 크레딧: Rafael Pedrero