POC详情: 0d0ec060c1a9415c23577c6de934efbc178a3525

来源
关联漏洞
标题: Open Link 安全漏洞 (CVE-2024-37888)
描述:Open Link plugin是Marek Lewandowski个人开发者的一个非常简单的插件。可以扩展上下文菜单,在新的选项卡中打开链接。 Open Link 1.0.5之前版本存在安全漏洞,该漏洞源于开放链接功能中存在跨站脚本漏洞,允许通过滥用链接 href 属性来执行 JavaScript 代码。
描述
XSS PoC/Exploit for Open Link Plugin for CKEditor 4
介绍
# CVE-2024-37888
This repository documents vulnerability details and exploit for CVE-2024-37888 discovered and reported by myself.

## Metrics
- [CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')](https://cwe.mitre.org/data/definitions/79.html)
- [CVSS: 6.1 (MEDIUM)](https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N&version=3.1)

## Vulnerability Overview

This Proof of Concept (POC) demonstrates the exploitation of an XSS vulnerability discovered by me recently in the Open Link plugin which when enabled, directly affects all versions of CKEditor 4. The flaw allows JavaScript execution through crafted links within the editor, which the plugin fails to sanitize. This flaw can be exploited inside the text area only when the Open Link plugin is installed. The Open Link plugin allows us to open links directly inside the editing area.

## Prerequisites

1. **CKEditor (version 4.\*.\*)**: https://ckeditor.com/ckeditor-4/download/#ckeditor-4
2. **Open Link Plugin (version < 1.0.5)**: https://ckeditor.com/cke4/addon/openlink

## Reproduction Steps

This vulnerability can be tested from the pre-configured CKEditor instance present [here](https://7ragnarok7.github.io/CVE-2024-37888/).

1. **Insert Payload**:
   - Open the CKEditor instance and click on the "Source" icon.
   - Insert the following payload in the text area:

     ```html
     <a href="javascript:alert('XSS Found')">XSS</a>
     ```

   ![Payload Insertion Screenshot](screenshots/payload.png)

2. **Switch to WYSIWYG Mode**:
   - Click on the "Source" icon again to switch back to the WYSIWYG mode.
   - Observe that the hyperlink becomes clickable inside the editor.

   ![Clickable Hyperlink Screenshot](screenshots/preview.png)

3. **Trigger XSS**:
   - Click on the hyperlink within the editor.
   - Observe that the XSS payload is triggered, resulting in an alert box in a new tab.

   ![XSS Triggered Screenshot](screenshots/XSS.png)

## Setup Instructions

You can set up your own local instance to test this vulnerability by following the below steps.

1. **Download CKEditor 4**:
   - Download the Full-Package Open-Source edition of [CKEditor 4](https://ckeditor.com/ckeditor-4/download/#ckeditor-4).

   ![Download](screenshots/download.png)

2. **Install Open Link Plugin**:
   - Download the Open Link plugin version 1.0.4 from [here](https://download.ckeditor.com/openlink/releases/openlink_1.0.4.zip).
   - Extract and place the contents into the `ckeditor/plugins/openlink` directory.

   ![OpenLink](screenshots/openlink.png)

3. **Update Configuration to Include OpenLink plugin**:
   - Modify the `config.js` file of CKEditor by appending the the following lines to the end:

   ```javascript
   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
   ```

   - Example `config.js`:

   ```javascript
   CKEDITOR.editorConfig = function( config ) {
       // Define changes to default configuration here.
       config.extraPlugins = 'openlink';
       config.linkShowTargetTab = false;
       config.openlink_modifier = 0;
       config.openlink_enableReadOnly = true;
   };
   ```

4. **Include CKEditor in HTML**:
   - Ensure the CKEditor library is included in your HTML file.

   ```html
   <!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>
   ```

   ![Demo Page Screenshot](screenshots/CKEditor4.png)

## Conclusion

This vulnerability has been discovered in the code base of the [Open Link](https://github.com/mlewand/ckeditor-plugin-openlink) plugin and not in the CKEditor 4 codebase. The above POC demonstrates the exploitation of an XSS vulnerability via Open Link plugin in CKEditor 4.\*.\*. The flaw allows arbitrary JavaScript execution through specially crafted links, posing a significant security risk. 

## Advisory

- The official advisory by the Open Link plugin maintainer can be found at https://github.com/mlewand/ckeditor-plugin-openlink/security/advisories/GHSA-rhxf-gvmh-hrxm. 

## Additional Notice

- Note that if you want to display content from the editor elsewhere, [you should always properly filter it](https://ckeditor.com/docs/ckeditor4/latest/guide/dev_best_practices.html#filter-content-server-side).
- As for the **onclick** attribute on links, it can be disallowed by the [config.disallowedContent](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-disallowedContent) configuration option:
 
```javascript
config.disallowedContent = 'a[onclick]';
```

## Important Links
- https://github.com/mlewand/ckeditor-plugin-openlink/security/advisories/GHSA-rhxf-gvmh-hrxm
- https://nvd.nist.gov/vuln/detail/CVE-2024-37888
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-37888
- https://7ragnarok7.github.io/CVE-2024-37888/
文件快照

[4.0K] /data/pocs/0d0ec060c1a9415c23577c6de934efbc178a3525 ├── [4.0K] docs │   ├── [4.0K] ckeditor │   │   ├── [4.0K] adapters │   │   │   └── [3.1K] jquery.js │   │   ├── [2.7K] build-config.js │   │   ├── [307K] CHANGES.md │   │   ├── [743K] ckeditor.js │   │   ├── [1.5K] config.js │   │   ├── [3.0K] contents.css │   │   ├── [4.0K] lang │   │   │   └── [ 18K] en.js │   │   ├── [ 77K] LICENSE.md │   │   ├── [4.0K] plugins │   │   │   ├── [4.0K] a11yhelp │   │   │   │   └── [4.0K] dialogs │   │   │   │   ├── [2.9K] a11yhelp.js │   │   │   │   └── [4.0K] lang │   │   │   │   ├── [4.1K] af.js │   │   │   │   ├── [4.3K] ar.js │   │   │   │   ├── [4.2K] az.js │   │   │   │   ├── [4.5K] bg.js │   │   │   │   ├── [4.7K] ca.js │   │   │   │   ├── [4.8K] cs.js │   │   │   │   ├── [4.3K] cy.js │   │   │   │   ├── [4.2K] da.js │   │   │   │   ├── [4.6K] de-ch.js │   │   │   │   ├── [4.6K] de.js │   │   │   │   ├── [7.5K] el.js │   │   │   │   ├── [4.1K] en-au.js │   │   │   │   ├── [4.1K] en-gb.js │   │   │   │   ├── [4.1K] en.js │   │   │   │   ├── [4.7K] eo.js │   │   │   │   ├── [4.7K] es.js │   │   │   │   ├── [4.8K] es-mx.js │   │   │   │   ├── [4.3K] et.js │   │   │   │   ├── [4.4K] eu.js │   │   │   │   ├── [6.0K] fa.js │   │   │   │   ├── [4.7K] fi.js │   │   │   │   ├── [4.1K] fo.js │   │   │   │   ├── [4.8K] fr-ca.js │   │   │   │   ├── [5.2K] fr.js │   │   │   │   ├── [4.7K] gl.js │   │   │   │   ├── [4.3K] gu.js │   │   │   │   ├── [4.9K] he.js │   │   │   │   ├── [4.1K] hi.js │   │   │   │   ├── [4.2K] hr.js │   │   │   │   ├── [4.7K] hu.js │   │   │   │   ├── [4.0K] id.js │   │   │   │   ├── [5.1K] it.js │   │   │   │   ├── [5.1K] ja.js │   │   │   │   ├── [5.1K] km.js │   │   │   │   ├── [5.5K] ko.js │   │   │   │   ├── [5.9K] ku.js │   │   │   │   ├── [4.1K] lt.js │   │   │   │   ├── [4.7K] lv.js │   │   │   │   ├── [4.5K] mk.js │   │   │   │   ├── [4.1K] mn.js │   │   │   │   ├── [4.4K] nb.js │   │   │   │   ├── [4.4K] nl.js │   │   │   │   ├── [4.4K] no.js │   │   │   │   ├── [5.0K] oc.js │   │   │   │   ├── [5.1K] pl.js │   │   │   │   ├── [4.8K] pt-br.js │   │   │   │   ├── [4.5K] pt.js │   │   │   │   ├── [4.5K] ro.js │   │   │   │   ├── [6.5K] ru.js │   │   │   │   ├── [6.0K] si.js │   │   │   │   ├── [4.7K] sk.js │   │   │   │   ├── [4.5K] sl.js │   │   │   │   ├── [4.8K] sq.js │   │   │   │   ├── [7.4K] sr.js │   │   │   │   ├── [4.8K] sr-latn.js │   │   │   │   ├── [4.3K] sv.js │   │   │   │   ├── [4.5K] th.js │   │   │   │   ├── [ 903] _translationstatus.txt │   │   │   │   ├── [4.5K] tr.js │   │   │   │   ├── [4.4K] tt.js │   │   │   │   ├── [6.8K] ug.js │   │   │   │   ├── [6.8K] uk.js │   │   │   │   ├── [5.3K] vi.js │   │   │   │   ├── [4.1K] zh-cn.js │   │   │   │   └── [4.3K] zh.js │   │   │   ├── [4.0K] about │   │   │   │   └── [4.0K] dialogs │   │   │   │   ├── [1.9K] about.js │   │   │   │   ├── [4.0K] hidpi │   │   │   │   │   └── [ 12K] logo_ckeditor.png │   │   │   │   └── [5.5K] logo_ckeditor.png │   │   │   ├── [4.0K] clipboard │   │   │   │   └── [4.0K] dialogs │   │   │   │   └── [3.7K] paste.js │   │   │   ├── [4.0K] colordialog │   │   │   │   └── [4.0K] dialogs │   │   │   │   ├── [ 806] colordialog.css │   │   │   │   └── [5.2K] colordialog.js │   │   │   ├── [4.0K] copyformatting │   │   │   │   ├── [4.0K] cursors │   │   │   │   │   ├── [3.9K] cursor-disabled.svg │   │   │   │   │   └── [2.7K] cursor.svg │   │   │   │   └── [4.0K] styles │   │   │   │   └── [1.5K] copyformatting.css │   │   │   ├── [4.0K] dialog │   │   │   │   ├── [ 182] dialogDefinition.js │   │   │   │   └── [4.0K] styles │   │   │   │   └── [ 249] dialog.css │   │   │   ├── [4.0K] div │   │   │   │   └── [4.0K] dialogs │   │   │   │   └── [4.6K] div.js │   │   │   ├── [4.0K] exportpdf │   │   │   │   ├── [2.9K] CHANGELOG.md │   │   │   │   ├── [ 973] LICENSE.md │   │   │   │   ├── [ 3] plugindefinition.js │   │   │   │   ├── [6.2K] README.md │   │   │   │   └── [4.0K] tests │   │   │   │   ├── [3.0K] authentication.js │   │   │   │   ├── [4.7K] exportpdf.js │   │   │   │   ├── [4.0K] _helpers │   │   │   │   │   └── [ 673] tools.js │   │   │   │   ├── [4.0K] manual │   │   │   │   │   ├── [ 694] configfilename.html │   │   │   │   │   ├── [1.2K] configfilename.md │   │   │   │   │   ├── [ 432] emptyeditor.html │   │   │   │   │   ├── [ 906] emptyeditor.md │   │   │   │   │   ├── [5.3K] integration.html │   │   │   │   │   ├── [1.1K] integration.md │   │   │   │   │   ├── [4.0K] integrations │   │   │   │   │   │   ├── [ 814] easyimage.html │   │   │   │   │   │   └── [ 882] easyimage.md │   │   │   │   │   ├── [1.0K] notificationsasync.html │   │   │   │   │   ├── [ 799] notificationsasync.md │   │   │   │   │   ├── [ 396] notifications.html │   │   │   │   │   ├── [1.1K] notifications.md │   │   │   │   │   ├── [1.2K] paperformat.html │   │   │   │   │   ├── [ 637] paperformat.md │   │   │   │   │   ├── [ 411] readonly.html │   │   │   │   │   ├── [ 611] readonly.md │   │   │   │   │   ├── [1.2K] stylesheets.html │   │   │   │   │   ├── [ 651] stylesheets.md │   │   │   │   │   ├── [ 568] tokenfetching.html │   │   │   │   │   ├── [ 666] tokenfetching.md │   │   │   │   │   ├── [1.0K] tokentwoeditorscorrect.html │   │   │   │   │   ├── [ 515] tokentwoeditorscorrect.md │   │   │   │   │   ├── [1.1K] tokentwoeditorswrong.html │   │   │   │   │   ├── [ 524] tokentwoeditorswrong.md │   │   │   │   │   ├── [ 475] tokenwithouturl.html │   │   │   │   │   ├── [ 862] tokenwithouturl.md │   │   │   │   │   ├── [ 488] wrongendpoint.html │   │   │   │   │   └── [ 824] wrongendpoint.md │   │   │   │   ├── [1.9K] notification.js │   │   │   │   ├── [4.6K] resourcespaths.js │   │   │   │   ├── [1.1K] statistics.js │   │   │   │   └── [9.7K] stylesheets.js │   │   │   ├── [4.0K] find │   │   │   │   └── [4.0K] dialogs │   │   │   │   └── [ 11K] find.js │   │   │   ├── [4.0K] forms │   │   │   │   ├── [4.0K] dialogs │   │   │   │   │   ├── [1.8K] button.js │   │   │   │   │   ├── [2.5K] checkbox.js │   │   │   │   │   ├── [2.1K] form.js │   │   │   │   │   ├── [1.7K] hiddenfield.js │   │   │   │   │   ├── [2.3K] radio.js │   │   │   │   │   ├── [8.3K] select.js │   │   │   │   │   ├── [2.3K] textarea.js │   │   │   │   │   └── [3.4K] textfield.js │   │   │   │   └── [4.0K] images │   │   │   │   └── [ 178] hiddenfield.gif │   │   │   ├── [ 38K] icons_hidpi.png │   │   │   ├── [ 12K] icons.png │   │   │   ├── [4.0K] iframe │   │   │   │   ├── [4.0K] dialogs │   │   │   │   │   └── [3.4K] iframe.js │   │   │   │   └── [4.0K] images │   │   │   │   └── [ 265] placeholder.png │   │   │   ├── [4.0K] image │   │   │   │   ├── [4.0K] dialogs │   │   │   │   │   └── [ 21K] image.js │   │   │   │   └── [4.0K] images │   │   │   │   └── [1.6K] noimage.png │   │   │   ├── [4.0K] link │   │   │   │   ├── [4.0K] dialogs │   │   │   │   │   ├── [2.2K] anchor.js │   │   │   │   │   └── [ 13K] link.js │   │   │   │   └── [4.0K] images │   │   │   │   ├── [ 752] anchor.png │   │   │   │   └── [4.0K] hidpi │   │   │   │   └── [1.1K] anchor.png │   │   │   ├── [4.0K] liststyle │   │   │   │   └── [4.0K] dialogs │   │   │   │   └── [2.8K] liststyle.js │   │   │   ├── [4.0K] magicline │   │   │   │   └── [4.0K] images │   │   │   │   ├── [4.0K] hidpi │   │   │   │   │   ├── [ 199] icon.png │   │   │   │   │   └── [ 176] icon-rtl.png │   │   │   │   ├── [ 133] icon.png │   │   │   │   └── [ 138] icon-rtl.png │   │   │   ├── [4.0K] openlink │   │   │   │   ├── [4.0K] icons │   │   │   │   │   ├── [4.0K] hidpi │   │   │   │   │   │   └── [ 696] openLink.png │   │   │   │   │   └── [ 373] openLink.png │   │   │   │   ├── [4.0K] lang │   │   │   │   │   ├── [ 245] bg.js │   │   │   │   │   ├── [ 233] de.js │   │   │   │   │   ├── [ 229] en.js │   │   │   │   │   ├── [ 237] pl.js │   │   │   │   │   └── [ 248] ru.js │   │   │   │   ├── [5.0K] plugin.js │   │   │   │   └── [1.9K] README.md │   │   │   ├── [4.0K] pagebreak │   │   │   │   └── [4.0K] images │   │   │   │   └── [ 99] pagebreak.gif │   │   │   ├── [4.0K] pastefromgdocs │   │   │   │   └── [4.0K] filter │   │   │   │   └── [2.2K] default.js │   │   │   ├── [4.0K] pastefromlibreoffice │   │   │   │   └── [4.0K] filter │   │   │   │   └── [3.4K] default.js │   │   │   ├── [4.0K] pastefromword │   │   │   │   └── [4.0K] filter │   │   │   │   └── [ 19K] default.js │   │   │   ├── [4.0K] pastetools │   │   │   │   └── [4.0K] filter │   │   │   │   ├── [ 10K] common.js │   │   │   │   └── [3.9K] image.js │   │   │   ├── [4.0K] preview │   │   │   │   ├── [4.0K] images │   │   │   │   │   └── [ 99] pagebreak.gif │   │   │   │   ├── [ 259] preview.html │   │   │   │   └── [4.0K] styles │   │   │   │   └── [ 242] screen.css │   │   │   ├── [4.0K] scayt │   │   │   │   ├── [ 225] CHANGELOG.md │   │   │   │   ├── [4.0K] dialogs │   │   │   │   │   ├── [ 419] dialog.css │   │   │   │   │   ├── [ 16K] options.js │   │   │   │   │   └── [1.3K] toolbar.css │   │   │   │   ├── [1.4K] LICENSE.md │   │   │   │   ├── [4.5K] README.md │   │   │   │   └── [4.0K] skins │   │   │   │   └── [4.0K] moono-lisa │   │   │   │   └── [ 381] scayt.css │   │   │   ├── [4.0K] showblocks │   │   │   │   └── [4.0K] images │   │   │   │   ├── [ 152] block_address.png │   │   │   │   ├── [ 154] block_blockquote.png │   │   │   │   ├── [ 127] block_div.png │   │   │   │   ├── [ 120] block_h1.png │   │   │   │   ├── [ 127] block_h2.png │   │   │   │   ├── [ 123] block_h3.png │   │   │   │   ├── [ 123] block_h4.png │   │   │   │   ├── [ 126] block_h5.png │   │   │   │   ├── [ 123] block_h6.png │   │   │   │   ├── [ 115] block_p.png │   │   │   │   └── [ 128] block_pre.png │   │   │   ├── [4.0K] smiley │   │   │   │   ├── [4.0K] dialogs │   │   │   │   │   └── [3.4K] smiley.js │   │   │   │   └── [4.0K] images │   │   │   │   ├── [1.2K] angel_smile.gif │   │   │   │   ├── [1.1K] angel_smile.png │   │   │   │   ├── [1.2K] angry_smile.gif │   │   │   │   ├── [1.2K] angry_smile.png │   │   │   │   ├── [ 732] broken_heart.gif │   │   │   │   ├── [1.1K] broken_heart.png │   │   │   │   ├── [1.2K] confused_smile.gif │   │   │   │   ├── [1.1K] confused_smile.png │   │   │   │   ├── [ 795] cry_smile.gif │   │   │   │   ├── [1.2K] cry_smile.png │   │   │   │   ├── [1.2K] devil_smile.gif │   │   │   │   ├── [1.2K] devil_smile.png │   │   │   │   ├── [ 786] embaressed_smile.gif │   │   │   │   ├── [ 786] embarrassed_smile.gif │   │   │   │   ├── [1.1K] embarrassed_smile.png │   │   │   │   ├── [ 506] envelope.gif │   │   │   │   ├── [ 760] envelope.png │   │   │   │   ├── [ 692] heart.gif │   │   │   │   ├── [ 999] heart.png │   │   │   │   ├── [ 683] kiss.gif │   │   │   │   ├── [1003] kiss.png │   │   │   │   ├── [ 660] lightbulb.gif │   │   │   │   ├── [ 919] lightbulb.png │   │   │   │   ├── [ 820] omg_smile.gif │   │   │   │   ├── [1.1K] omg_smile.png │   │   │   │   ├── [1.2K] regular_smile.gif │   │   │   │   ├── [1.1K] regular_smile.png │   │   │   │   ├── [ 782] sad_smile.gif │   │   │   │   ├── [1.1K] sad_smile.png │   │   │   │   ├── [1.2K] shades_smile.gif │   │   │   │   ├── [1.2K] shades_smile.png │   │   │   │   ├── [1.2K] teeth_smile.gif │   │   │   │   ├── [1.2K] teeth_smile.png │   │   │   │   ├── [ 715] thumbs_down.gif │   │   │   │   ├── [ 985] thumbs_down.png │   │   │   │   ├── [ 714] thumbs_up.gif │   │   │   │   ├── [ 959] thumbs_up.png │   │   │   │   ├── [1.2K] tongue_smile.gif │   │   │   │   ├── [1.1K] tongue_smile.png │   │   │   │   ├── [1.2K] tounge_smile.gif │   │   │   │   ├── [ 775] whatchutalkingabout_smile.gif │   │   │   │   ├── [1.0K] whatchutalkingabout_smile.png │   │   │   │   ├── [1.2K] wink_smile.gif │   │   │   │   └── [1.1K] wink_smile.png │   │   │   ├── [4.0K] specialchar │   │   │   │   └── [4.0K] dialogs │   │   │   │   ├── [4.0K] lang │   │   │   │   │   ├── [4.5K] af.js │   │   │   │   │   ├── [4.7K] ar.js │   │   │   │   │   ├── [3.3K] az.js │   │   │   │   │   ├── [4.7K] bg.js │   │   │   │   │   ├── [4.9K] ca.js │   │   │   │   │   ├── [4.9K] cs.js │   │   │   │   │   ├── [4.8K] cy.js │   │   │   │   │   ├── [3.3K] da.js │   │   │   │   │   ├── [4.7K] de-ch.js │   │   │   │   │   ├── [4.7K] de.js │   │   │   │   │   ├── [7.6K] el.js │   │   │   │   │   ├── [4.5K] en-au.js │   │   │   │   │   ├── [4.5K] en-ca.js │   │   │   │   │   ├── [4.5K] en-gb.js │   │   │   │   │   ├── [4.5K] en.js │   │   │   │   │   ├── [4.0K] eo.js │   │   │   │   │   ├── [4.9K] es.js │   │   │   │   │   ├── [4.7K] es-mx.js │   │   │   │   │   ├── [3.8K] et.js │   │   │   │   │   ├── [4.5K] eu.js │   │   │   │   │   ├── [5.7K] fa.js │   │   │   │   │   ├── [4.5K] fi.js │   │   │   │   │   ├── [3.2K] fr-ca.js │   │   │   │   │   ├── [3.8K] fr.js │   │   │   │   │   ├── [4.9K] gl.js │   │   │   │   │   ├── [4.9K] he.js │   │   │   │   │   ├── [4.3K] hr.js │   │   │   │   │   ├── [4.1K] hu.js │   │   │   │   │   ├── [4.5K] id.js │   │   │   │   │   ├── [4.9K] it.js │   │   │   │   │   ├── [3.9K] ja.js │   │   │   │   │   ├── [4.7K] km.js │   │   │   │   │   ├── [4.8K] ko.js │   │   │   │   │   ├── [7.4K] ku.js │   │   │   │   │   ├── [4.5K] lt.js │   │   │   │   │   ├── [4.9K] lv.js │   │   │   │   │   ├── [3.4K] nb.js │   │   │   │   │   ├── [4.6K] nl.js │   │   │   │   │   ├── [3.4K] no.js │   │   │   │   │   ├── [3.8K] oc.js │   │   │   │   │   ├── [4.3K] pl.js │   │   │   │   │   ├── [3.8K] pt-br.js │   │   │   │   │   ├── [4.7K] pt.js │   │   │   │   │   ├── [4.6K] ro.js │   │   │   │   │   ├── [7.4K] ru.js │   │   │   │   │   ├── [4.8K] si.js │   │   │   │   │   ├── [4.7K] sk.js │   │   │   │   │   ├── [4.3K] sl.js │   │   │   │   │   ├── [4.9K] sq.js │   │   │   │   │   ├── [7.4K] sr.js │   │   │   │   │   ├── [4.6K] sr-latn.js │   │   │   │   │   ├── [3.4K] sv.js │   │   │   │   │   ├── [4.6K] th.js │   │   │   │   │   ├── [ 754] _translationstatus.txt │   │   │   │   │   ├── [4.4K] tr.js │   │   │   │   │   ├── [6.6K] tt.js │   │   │   │   │   ├── [4.9K] ug.js │   │   │   │   │   ├── [6.2K] uk.js │   │   │   │   │   ├── [6.0K] vi.js │   │   │   │   │   ├── [4.3K] zh-cn.js │   │   │   │   │   └── [4.1K] zh.js │   │   │   │   └── [4.9K] specialchar.js │   │   │   ├── [4.0K] table │   │   │   │   └── [4.0K] dialogs │   │   │   │   └── [8.8K] table.js │   │   │   ├── [4.0K] tableselection │   │   │   │   └── [4.0K] styles │   │   │   │   └── [1.1K] tableselection.css │   │   │   ├── [4.0K] tabletools │   │   │   │   └── [4.0K] dialogs │   │   │   │   └── [7.2K] tableCell.js │   │   │   ├── [4.0K] templates │   │   │   │   ├── [4.0K] dialogs │   │   │   │   │   ├── [1.6K] templates.css │   │   │   │   │   └── [3.3K] templates.js │   │   │   │   ├── [ 182] templatedefinition.js │   │   │   │   └── [4.0K] templates │   │   │   │   ├── [1.9K] default.js │   │   │   │   └── [4.0K] images │   │   │   │   ├── [ 539] template1.gif │   │   │   │   ├── [ 497] template2.gif │   │   │   │   └── [ 557] template3.gif │   │   │   └── [4.0K] widget │   │   │   └── [4.0K] images │   │   │   └── [ 220] handle.png │   │   ├── [1.4K] README.md │   │   ├── [4.0K] samples │   │   │   ├── [4.0K] css │   │   │   │   └── [ 66K] samples.css │   │   │   ├── [4.0K] img │   │   │   │   ├── [ 383] github-top.png │   │   │   │   ├── [ 13K] header-bg.png │   │   │   │   ├── [ 123] header-separator.png │   │   │   │   ├── [5.5K] logo.png │   │   │   │   ├── [ 11K] logo.svg │   │   │   │   └── [ 12K] navigation-tip.png │   │   │   ├── [7.1K] index.html │   │   │   ├── [4.0K] js │   │   │   │   ├── [1.6K] sample.js │   │   │   │   └── [6.3K] sf.js │   │   │   ├── [4.0K] old │   │   │   │   ├── [2.8K] ajax.html │   │   │   │   ├── [7.4K] api.html │   │   │   │   ├── [2.5K] appendto.html │   │   │   │   ├── [4.0K] assets │   │   │   │   │   ├── [4.0K] inlineall │   │   │   │   │   │   └── [4.2K] logo.png │   │   │   │   │   ├── [4.0K] outputxhtml │   │   │   │   │   │   └── [2.1K] outputxhtml.css │   │   │   │   │   ├── [1.6K] posteddata.php │   │   │   │   │   ├── [ 14K] sample.jpg │   │   │   │   │   └── [4.0K] uilanguages │   │   │   │   │   └── [1.4K] languages.js │   │   │   │   ├── [ 47K] datafiltering.html │   │   │   │   ├── [4.0K] dialog │   │   │   │   │   ├── [4.0K] assets │   │   │   │   │   │   └── [ 911] my_dialog.js │   │   │   │   │   └── [7.4K] dialog.html │   │   │   │   ├── [4.8K] divreplace.html │   │   │   │   ├── [4.0K] enterkey │   │   │   │   │   └── [4.5K] enterkey.html │   │   │   │   ├── [4.0K] htmlwriter │   │   │   │   │   └── [7.4K] outputhtml.html │   │   │   │   ├── [5.9K] index.html │   │   │   │   ├── [ 10K] inlineall.html │   │   │   │   ├── [6.2K] inlinebycode.html │   │   │   │   ├── [5.0K] inlinetextarea.html │   │   │   │   ├── [7.6K] jquery.html │   │   │   │   ├── [4.0K] magicline │   │   │   │   │   └── [8.4K] magicline.html │   │   │   │   ├── [3.1K] readonly.html │   │   │   │   ├── [7.1K] replacebyclass.html │   │   │   │   ├── [7.0K] replacebycode.html │   │   │   │   ├── [5.0K] sample.css │   │   │   │   ├── [1.7K] sample.js │   │   │   │   ├── [ 807] sample_posteddata.php │   │   │   │   ├── [2.5K] tabindex.html │   │   │   │   ├── [4.0K] toolbar │   │   │   │   │   └── [8.9K] toolbar.html │   │   │   │   ├── [2.7K] uicolor.html │   │   │   │   ├── [4.6K] uilanguages.html │   │   │   │   ├── [4.0K] wysiwygarea │   │   │   │   │   └── [8.1K] fullpage.html │   │   │   │   └── [7.1K] xhtmlstyle.html │   │   │   └── [4.0K] toolbarconfigurator │   │   │   ├── [4.0K] css │   │   │   │   └── [1.7K] fontello.css │   │   │   ├── [4.0K] font │   │   │   │   ├── [ 557] config.json │   │   │   │   ├── [4.9K] fontello.eot │   │   │   │   ├── [1.7K] fontello.svg │   │   │   │   ├── [4.7K] fontello.ttf │   │   │   │   ├── [2.8K] fontello.woff │   │   │   │   └── [ 188] LICENSE.txt │   │   │   ├── [ 15K] index.html │   │   │   ├── [4.0K] js │   │   │   │   ├── [6.4K] abstracttoolbarmodifier.js │   │   │   │   ├── [3.7K] fulltoolbareditor.js │   │   │   │   ├── [ 16K] toolbarmodifier.js │   │   │   │   └── [6.7K] toolbartextmodifier.js │   │   │   └── [4.0K] lib │   │   │   └── [4.0K] codemirror │   │   │   ├── [7.9K] codemirror.css │   │   │   ├── [145K] codemirror.js │   │   │   ├── [ 12K] javascript.js │   │   │   ├── [1.1K] LICENSE │   │   │   ├── [ 851] neo.css │   │   │   ├── [ 700] show-hint.css │   │   │   └── [7.9K] show-hint.js │   │   ├── [ 578] SECURITY.md │   │   ├── [4.0K] skins │   │   │   └── [4.0K] minimalist │   │   │   ├── [ 16K] dialog.css │   │   │   ├── [ 17K] dialog_ie7.css │   │   │   ├── [ 17K] dialog_ie8.css │   │   │   ├── [ 16K] dialog_ie.css │   │   │   ├── [ 16K] dialog_iequirks.css │   │   │   ├── [ 60K] editor.css │   │   │   ├── [ 60K] editor_gecko.css │   │   │   ├── [ 63K] editor_ie7.css │   │   │   ├── [ 61K] editor_ie8.css │   │   │   ├── [ 61K] editor_ie.css │   │   │   ├── [ 62K] editor_iequirks.css │   │   │   ├── [ 38K] icons_hidpi.png │   │   │   ├── [ 12K] icons.png │   │   │   ├── [4.0K] images │   │   │   │   ├── [ 191] arrow.png │   │   │   │   ├── [ 468] close.png │   │   │   │   ├── [4.0K] hidpi │   │   │   │   │   ├── [1.2K] close.png │   │   │   │   │   ├── [1.3K] lock-open.png │   │   │   │   │   ├── [1.3K] lock.png │   │   │   │   │   └── [1.8K] refresh.png │   │   │   │   ├── [ 349] lock-open.png │   │   │   │   ├── [ 475] lock.png │   │   │   │   └── [ 422] refresh.png │   │   │   └── [ 167] readme.md │   │   ├── [5.4K] styles.js │   │   └── [4.0K] vendor │   │   └── [6.1K] promise.js │   └── [2.5K] index.html ├── [ 34K] LICENSE ├── [5.1K] README.md └── [4.0K] screenshots ├── [120K] CKEditor4.png ├── [469K] download.png ├── [101K] openlink.png ├── [137K] payload.png ├── [364K] preview.png └── [149K] XSS.png 116 directories, 401 files
神龙机器人已为您缓存
备注
    1. 建议优先通过来源进行访问。
    2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
    3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。