
CKEditor 4의 Open Link Plugin을 위한 XSS PoC/Exploit
이 저장소는 제가 발견하고 보고한 CVE-2024-37888의 취약점 세부 정보와 익스플로잇을 문서화합니다.
이 PoC(Proof of Concept)는 제가 최근 Open Link 플러그인에서 발견한 XSS 취약점의 익스플로잇을 보여줍니다. 이 플러그인이 활성화되면 CKEditor 4의 모든 버전에 직접 영향을 미칩니다. 이 결함은 플러그인이 제대로 살균하지 못하는 편집기 내의 조작된 링크를 통해 JavaScript 실행을 허용합니다. 이 결함은 Open Link 플러그인이 설치된 경우에만 텍스트 영역 내에서 악용될 수 있습니다. Open Link 플러그인을 사용하면 편집 영역 내에서 직접 링크를 열 수 있습니다.
이 취약점은 여기에 있는 사전 구성된 CKEditor 인스턴스에서 테스트할 수 있습니다.
페이로드 삽입:
CKEditor 인스턴스를 열고 'Source' 아이콘을 클릭하세요.
텍스트 영역에 다음 페이로드를 삽입하세요:
<a href="javascript:alert('XSS Found')">XSS</a>

WYSIWYG 모드로 전환:

XSS 트리거:

다음 단계에 따라 자신의 로컬 인스턴스를 설정하여 이 취약점을 테스트할 수 있습니다.
CKEditor 4 다운로드:

Open Link 플러그인 설치:
ckeditor/plugins/openlink 디렉터리에 넣으세요.
OpenLink 플러그인을 포함하도록 구성 업데이트:
config.js 파일을 수정하여 다음 줄을 끝에 추가하세요:config.extraPlugins = 'openlink';
config.linkShowTargetTab = false; // Hide link target tab
config.openlink_modifier = 0; // No modifier for opening links
config.openlink_enableReadOnly = true; // Allow links to open in read-only mode
config.js:CKEDITOR.editorConfig = function( config ) {
// Define changes to default configuration here.
config.extraPlugins = 'openlink';
config.linkShowTargetTab = false;
config.openlink_modifier = 0;
config.openlink_enableReadOnly = true;
};
이 취약점은 CKEditor 4 코드베이스가 아닌 Open Link 플러그인의 코드베이스에서 발견되었습니다. 위의 PoC는 CKEditor 4.*.*에서 Open Link 플러그인을 통한 XSS 취약점의 익스플로잇을 보여줍니다. 이 결함은 특별히 조작된 링크를 통해 임의의 JavaScript 실행을 허용하여 심각한 보안 위험을 초래합니다.
config.disallowedContent = 'a[onclick]';
HTML에 CKEditor 포함:
<!DOCTYPE html>
<html>
<head>
<script src="path/to/ckeditor/ckeditor.js"></script>
</head>
<body>
<textarea name="editor1" id="editor1"></textarea>
<script>
CKEDITOR.replace('editor1');
</script>
</body>
</html>
