POC详情: b386bd766cf10e0305830eee284daacb205cdce3

来源
关联漏洞
标题: jQuery 跨站脚本漏洞 (CVE-2022-31160)
描述:jQuery是美国John Resig个人开发者的一套开源、跨浏览器的JavaScript库。该库简化了HTML与JavaScript之间的操作,并具有模块化、插件扩展等特点。 jQuery UI 1.13.2 之前版本存在跨站脚本漏洞,该漏洞源于容易受到跨站点脚本的攻击。
描述
jquery XSS Proof of Concept (PoC)
介绍
# jQuery UI CVE-2022-31160 Vulnerability Demonstration

![Security Badge](https://img.shields.io/badge/Security-Vulnerability%20Demo-red)
![jQuery UI](https://img.shields.io/badge/jQuery%20UI-1.13.0-blue)
![CVE](https://img.shields.io/badge/CVE-2022--31160-critical)
![Docker](https://img.shields.io/badge/Docker-Ready-blue)

This project demonstrates the **jQuery UI Checkboxradio Widget Refresh Vulnerability (CVE-2022-31160)**, which allows HTML entity decoding during widget refresh operations, potentially leading to Cross-Site Scripting (XSS) attacks.

## 🚨 Security Warning

**⚠️ This project contains working XSS payloads for educational and research purposes only.**

- **Do NOT use on production systems**
- **Only use in controlled environments**
- **Intended for security research and education**

## 📋 Table of Contents

- [Vulnerability Overview](#vulnerability-overview)
- [Quick Start](#quick-start)
- [Project Structure](#project-structure)
- [Demonstrations](#demonstrations)
- [Technical Details](#technical-details)
- [Docker Usage](#docker-usage)
- [Security Analysis](#security-analysis)
- [Mitigation](#mitigation)
- [Contributing](#contributing)

## 🔍 Vulnerability Overview

### CVE-2022-31160 Details

- **Component**: jQuery UI Checkboxradio Widget
- **Affected Versions**: jQuery UI ≤ 1.13.1
- **Vulnerability Type**: Cross-Site Scripting (XSS) via HTML Entity Decoding
- **CVSS Score**: 6.1 (Medium)
- **First Published**: July 20, 2022

### Root Cause

When a checkboxradio widget is initialized on an input enclosed within a label, calling `.checkboxradio("refresh")` on the widget causes HTML entities in the label content to be erroneously decoded. This can convert safely encoded malicious content into executable JavaScript.

### Attack Vector

```html
<!-- Safe encoded content -->
<label for="checkbox">
  Text &lt;img src=x onerror=&quot;alert('XSS')&quot;&gt;
  <input type="checkbox" id="checkbox">
</label>

<!-- After .checkboxradio("refresh") -->
<label for="checkbox">
  Text <img src=x onerror="alert('XSS')">
  <input type="checkbox" id="checkbox">
</label>
```

## 🚀 Quick Start

### Prerequisites

- Docker installed on your system
- Web browser with developer tools
- Basic understanding of web security concepts

### Build and Run

```bash
# Clone or navigate to the project directory
cd jquery-cve-2022-31160

# Build the Docker image
docker build -t jquery-cve-2022-31160 .

# Run the container
docker run -p 3000:3000 jquery-cve-2022-31160
```

### Access the Demonstrations

Once the container is running, access:

- **Simplified Survey Demo**: http://localhost:3000/survey
- **Alternative Survey URL**: http://localhost:3000/simplified-survey

## 📁 Project Structure

```
jquery-cve-2022-31160/
├── README.md                    # This documentation
├── Dockerfile                   # Docker container configuration
├── package.json                 # Node.js dependencies
├── server.js                    # Express.js server
└── simplified-survey.html       # Survey-style demonstration
```

## 🎯 Demonstrations

### 1. Simplified Survey Demo (`simplified-survey.html`)

**URL**: http://localhost:3000/survey

- Survey-style interface
- Multiple vulnerability scenarios
- Enhanced visual feedback

**Features**:
- 4 different checkbox options demonstrating various scenarios:
  - **Safe Option**: No encoded entities (control group)
  - **Network Security XSS**: `&lt;img src=x onerror=&quot;...&quot;&gt;` - Immediate execution
  - **Mobile Security XSS**: `&lt;details ontoggle=&quot;...&quot; open&gt;` - Immediate execution  
  - **Cloud Security XSS**: `&lt;span onmouseover=&quot;...&quot;&gt;` - Interactive execution

**Analysis Tools**:
- Detailed console logging
- XSS execution alerts
- Step-by-step vulnerability tracking

## 🔧 Technical Details

### Vulnerability Mechanism

1. **Widget Initialization**: jQuery UI creates checkboxradio widget
2. **HTML Entity Storage**: Label content with encoded entities is processed
3. **Refresh Trigger**: `.checkboxradio("refresh")` is called
4. **Entity Decoding**: jQuery UI erroneously decodes HTML entities
5. **XSS Execution**: Decoded malicious content becomes executable

### Affected Code Path

```javascript
// Vulnerable operation
$('#vulnerable-checkbox').checkboxradio();
$('#vulnerable-checkbox').checkboxradio("refresh"); // Triggers vulnerability
```

### Test Payloads

The demonstrations include various payloads to test different XSS execution methods:

```html
<!-- Network Security: Error event XSS (Immediate execution) -->
&lt;img src=x onerror=&quot;console.log('XSS via widget refresh!'); alert('Widget refresh XSS executed!');&quot;&gt;

<!-- Mobile Security: Details toggle XSS (Immediate execution) -->
&lt;details ontoggle=&quot;alert('Mobile Security XSS executed!'); console.log('Mobile XSS via details ontoggle!')&quot; open&gt;&lt;summary&gt;&lt;/summary&gt;&lt;/details&gt;

<!-- Cloud Security: Interactive XSS (User interaction required) -->
&lt;span onmouseover=&quot;alert('Hover XSS executed!'); console.log('Cloud Security XSS via mouseover!')&quot; style=&quot;text-decoration:underline; cursor:pointer;&quot;&gt;[Hover to trigger]&lt;/span&gt;
```

### XSS Execution Methods

#### 1. Error Event Handler (`onerror`)
- **Trigger**: Immediate when element is inserted into DOM
- **Reliability**: Very high (always fails with `src=x`)
- **Use Case**: Demonstrates immediate XSS execution
- **Real-World Risk**: High - commonly bypasses input filters

#### 2. Details Toggle Event Handler (`ontoggle`)
- **Trigger**: When details element open/close state changes
- **Reliability**: Very high (guaranteed trigger with `open` attribute)
- **Use Case**: Immediate execution on DOM insertion
- **Real-World Risk**: High - reliable cross-browser execution

#### 3. Mouse Event Handler (`onmouseover`)
- **Trigger**: Requires user interaction (hover)
- **Reliability**: High when user interacts
- **Use Case**: Social engineering scenarios
- **Real-World Risk**: Medium - requires user engagement

### Why These Payloads Work

**Event Handler Advantages:**
- Execute when element is inserted via `innerHTML`
- Bypass `<script>` tag restrictions
- Work across different browsers consistently
- Don't require external resources to load
- State-based triggers (like `ontoggle`) are highly reliable

**Encoding Bypass:**
- HTML entities (`&lt;`, `&quot;`) get decoded by jQuery UI refresh
- Transforms safe encoded content into executable code
- Demonstrates real-world sanitization bypass
- Multiple execution vectors show attack surface diversity

## 🐳 Docker Usage

### Building the Image

```bash
docker build -t jquery-cve-2022-31160 .
```

### Running the Container

```bash
# Run on default port 3000
docker run -p 3000:3000 jquery-cve-2022-31160

# Run on custom port
docker run -p 8080:3000 jquery-cve-2022-31160

# Run in background
docker run -d -p 3000:3000 jquery-cve-2022-31160

# Run with custom name
docker run --name jquery-xss-demo -p 3000:3000 jquery-cve-2022-31160
```

### Container Management

```bash
# List running containers
docker ps

# Stop the container
docker stop jquery-cve-2022-31160

# Remove the container
docker rm jquery-cve-2022-31160

# Remove the image
docker rmi jquery-cve-2022-31160
```

## 🔬 Security Analysis

### Impact Assessment

- **Severity**: Medium (CVSS 6.1)
- **Attack Complexity**: Low
- **User Interaction**: Required (page interaction)
- **Scope**: Unchanged (same-origin)
- **Confidentiality**: Low impact
- **Integrity**: Low impact
- **Availability**: None

### Real-World Scenarios

This vulnerability can be exploited in applications that:

1. Use jQuery UI checkboxradio widgets
2. Allow user-generated content in labels
3. Sanitize content using HTML entity encoding
4. Programmatically refresh widgets

### Detection Methods

- **Static Analysis**: Search for `.checkboxradio("refresh")` calls
- **Dynamic Analysis**: Monitor HTML content changes during widget operations
- **Automated Scanning**: Use tools that can detect DOM-based XSS
- **Manual Testing**: Test widget refresh with encoded payloads

## 🛡️ Mitigation

### Immediate Actions

1. **Update jQuery UI**: Upgrade to version 1.13.2 or later
2. **Input Validation**: Implement proper server-side validation
3. **Content Security Policy**: Deploy restrictive CSP headers
4. **Output Encoding**: Use context-appropriate output encoding

### Code Fixes

```javascript
// Before refresh, sanitize or validate content
function safeRefresh(element) {
    // Validate label content before refresh
    const label = $(`label[for="${element.attr('id')}"]`);
    const content = label.html();
    
    // Check for potentially dangerous content
    if (content.includes('<') || content.includes('javascript:')) {
        console.warn('Potentially dangerous content detected');
        return;
    }
    
    element.checkboxradio("refresh");
}
```

### Security Headers

```javascript
// Express.js security headers
app.use((req, res, next) => {
    res.setHeader('X-Content-Type-Options', 'nosniff');
    res.setHeader('X-Frame-Options', 'DENY');
    res.setHeader('X-XSS-Protection', '1; mode=block');
    res.setHeader('Content-Security-Policy', "default-src 'self'");
    next();
});
```

## 📚 Educational Value

This project serves as an educational resource for:

- **Security Researchers**: Understanding DOM manipulation vulnerabilities
- **Web Developers**: Learning about jQuery UI security considerations
- **Penetration Testers**: Practical XSS exploitation techniques
- **Security Students**: Hands-on vulnerability analysis

## 🔗 References

- [CVE-2022-31160 Official Entry](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-31160)
- [jQuery UI Security Advisory](https://blog.jqueryui.com/2022/07/jquery-ui-1-13-2-released/)
- [OWASP XSS Prevention Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html)
- [CWE-79: Cross-site Scripting](https://cwe.mitre.org/data/definitions/79.html)

## 📈 Testing Checklist

When using this demonstration:

### Pre-Testing Setup:
- [ ] Verify jQuery UI version (should be 1.13.0)
- [ ] Test with developer tools open (F12)
- [ ] Access survey at http://localhost:3000/survey
- [ ] Check console for initialization messages

### Vulnerability Testing:
- [ ] Click "🔄 Refresh Widgets" button
- [ ] **Network Security Option**: Verify immediate alert execution
- [ ] **Mobile Security Option**: Verify immediate alert execution  
- [ ] **Cloud Security Option**: Hover over "[Hover to trigger]" text
- [ ] Check console for detailed vulnerability logging

### Analysis Verification:
- [ ] Validate XSS payload execution (3 different types)
- [ ] Test widget reset functionality
- [ ] Verify checkbox visual feedback works correctly

## 🤝 Contributing

Contributions are welcome! Please:

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add appropriate documentation
5. Submit a pull request

### Areas for Enhancement

- Additional payload examples
- More detailed analysis tools
- Enhanced visual demonstrations

## ⚖️ Legal Disclaimer

This software is provided for educational and research purposes only. The authors and contributors:

- Are not responsible for any misuse of this software
- Do not encourage or condone malicious activities
- Recommend using only in authorized testing environments
- Advise following responsible disclosure practices

## 📄 License

This project is provided under the MIT License for educational purposes.

---

**Created for security research and education** | **Use responsibly** | **Report vulnerabilities through proper channels**
文件快照

[4.0K] /data/pocs/b386bd766cf10e0305830eee284daacb205cdce3 ├── [ 399] Dockerfile ├── [4.0K] node_modules │   ├── [4.0K] accepts │   │   ├── [5.0K] HISTORY.md │   │   ├── [5.1K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.1K] package.json │   │   └── [4.0K] README.md │   ├── [4.0K] array-flatten │   │   ├── [1.2K] array-flatten.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 879] package.json │   │   └── [1.2K] README.md │   ├── [4.0K] body-parser │   │   ├── [ 16K] HISTORY.md │   │   ├── [2.6K] index.js │   │   ├── [4.0K] lib │   │   │   ├── [4.2K] read.js │   │   │   └── [4.0K] types │   │   │   ├── [5.2K] json.js │   │   │   ├── [1.8K] raw.js │   │   │   ├── [2.2K] text.js │   │   │   └── [6.3K] urlencoded.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.4K] package.json │   │   ├── [ 19K] README.md │   │   └── [1.2K] SECURITY.md │   ├── [4.0K] bytes │   │   ├── [1.7K] History.md │   │   ├── [3.5K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 959] package.json │   │   └── [4.7K] Readme.md │   ├── [4.0K] call-bind-apply-helpers │   │   ├── [ 23] actualApply.d.ts │   │   ├── [ 280] actualApply.js │   │   ├── [ 614] applyBind.d.ts │   │   ├── [ 264] applyBind.js │   │   ├── [1.9K] CHANGELOG.md │   │   ├── [ 34] functionApply.d.ts │   │   ├── [ 99] functionApply.js │   │   ├── [ 33] functionCall.d.ts │   │   ├── [ 97] functionCall.js │   │   ├── [2.2K] index.d.ts │   │   ├── [ 511] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.4K] package.json │   │   ├── [2.3K] README.md │   │   ├── [ 82] reflectApply.d.ts │   │   ├── [ 132] reflectApply.js │   │   ├── [4.0K] test │   │   │   └── [2.6K] index.js │   │   └── [ 115] tsconfig.json │   ├── [4.0K] call-bound │   │   ├── [2.8K] CHANGELOG.md │   │   ├── [4.5K] index.d.ts │   │   ├── [ 687] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.4K] package.json │   │   ├── [1.9K] README.md │   │   ├── [4.0K] test │   │   │   └── [2.4K] index.js │   │   └── [ 137] tsconfig.json │   ├── [4.0K] content-disposition │   │   ├── [1020] HISTORY.md │   │   ├── [ 10K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.2K] package.json │   │   └── [5.1K] README.md │   ├── [4.0K] content-type │   │   ├── [ 523] HISTORY.md │   │   ├── [4.9K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.0K] package.json │   │   └── [2.7K] README.md │   ├── [4.0K] cookie │   │   ├── [7.9K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.1K] package.json │   │   ├── [ 11K] README.md │   │   └── [1.2K] SECURITY.md │   ├── [4.0K] cookie-signature │   │   ├── [ 695] History.md │   │   ├── [1.2K] index.js │   │   ├── [ 492] package.json │   │   └── [1.5K] Readme.md │   ├── [4.0K] debug │   │   ├── [ 11K] CHANGELOG.md │   │   ├── [ 321] component.json │   │   ├── [1.7K] karma.conf.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.0K] Makefile │   │   ├── [ 40] node.js │   │   ├── [1.1K] package.json │   │   ├── [ 17K] README.md │   │   └── [4.0K] src │   │   ├── [4.6K] browser.js │   │   ├── [4.3K] debug.js │   │   ├── [ 263] index.js │   │   ├── [ 373] inspector-log.js │   │   └── [5.9K] node.js │   ├── [4.0K] depd │   │   ├── [2.2K] History.md │   │   ├── [ 11K] index.js │   │   ├── [4.0K] lib │   │   │   └── [4.0K] browser │   │   │   └── [1.5K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.3K] package.json │   │   └── [9.8K] Readme.md │   ├── [4.0K] destroy │   │   ├── [4.2K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.1K] package.json │   │   └── [2.4K] README.md │   ├── [4.0K] dunder-proto │   │   ├── [1.5K] CHANGELOG.md │   │   ├── [ 121] get.d.ts │   │   ├── [ 980] get.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.1K] package.json │   │   ├── [1.9K] README.md │   │   ├── [ 144] set.d.ts │   │   ├── [1.2K] set.js │   │   ├── [4.0K] test │   │   │   ├── [1.1K] get.js │   │   │   ├── [ 51] index.js │   │   │   └── [1.7K] set.js │   │   └── [ 116] tsconfig.json │   ├── [4.0K] ee-first │   │   ├── [1.6K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 859] package.json │   │   └── [2.6K] README.md │   ├── [4.0K] encodeurl │   │   ├── [1.5K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.1K] package.json │   │   └── [3.1K] README.md │   ├── [4.0K] escape-html │   │   ├── [1.3K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 434] package.json │   │   └── [ 707] Readme.md │   ├── [4.0K] es-define-property │   │   ├── [2.2K] CHANGELOG.md │   │   ├── [ 93] index.d.ts │   │   ├── [ 288] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.1K] package.json │   │   ├── [2.0K] README.md │   │   ├── [4.0K] test │   │   │   └── [1.3K] index.js │   │   └── [ 138] tsconfig.json │   ├── [4.0K] es-errors │   │   ├── [1.8K] CHANGELOG.md │   │   ├── [ 68] eval.d.ts │   │   ├── [ 75] eval.js │   │   ├── [ 56] index.d.ts │   │   ├── [ 66] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.1K] package.json │   │   ├── [ 71] range.d.ts │   │   ├── [ 77] range.js │   │   ├── [2.1K] README.md │   │   ├── [ 83] ref.d.ts │   │   ├── [ 79] ref.js │   │   ├── [ 74] syntax.d.ts │   │   ├── [ 79] syntax.js │   │   ├── [4.0K] test │   │   │   └── [ 356] index.js │   │   ├── [3.1K] tsconfig.json │   │   ├── [ 67] type.d.ts │   │   ├── [ 75] type.js │   │   ├── [ 65] uri.d.ts │   │   └── [ 73] uri.js │   ├── [4.0K] es-object-atoms │   │   ├── [2.1K] CHANGELOG.md │   │   ├── [ 59] index.d.ts │   │   ├── [ 67] index.js │   │   ├── [ 72] isObject.d.ts │   │   ├── [ 161] isObject.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.2K] package.json │   │   ├── [2.5K] README.md │   │   ├── [ 123] RequireObjectCoercible.d.ts │   │   ├── [ 313] RequireObjectCoercible.js │   │   ├── [4.0K] test │   │   │   └── [1.1K] index.js │   │   ├── [ 352] ToObject.d.ts │   │   ├── [ 250] ToObject.js │   │   └── [ 81] tsconfig.json │   ├── [4.0K] etag │   │   ├── [1.7K] HISTORY.md │   │   ├── [2.4K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.3K] package.json │   │   └── [4.1K] README.md │   ├── [4.0K] express │   │   ├── [112K] History.md │   │   ├── [ 224] index.js │   │   ├── [4.0K] lib │   │   │   ├── [ 14K] application.js │   │   │   ├── [2.4K] express.js │   │   │   ├── [4.0K] middleware │   │   │   │   ├── [ 853] init.js │   │   │   │   └── [ 885] query.js │   │   │   ├── [ 12K] request.js │   │   │   ├── [ 28K] response.js │   │   │   ├── [4.0K] router │   │   │   │   ├── [ 15K] index.js │   │   │   │   ├── [3.2K] layer.js │   │   │   │   └── [4.3K] route.js │   │   │   ├── [5.7K] utils.js │   │   │   └── [3.2K] view.js │   │   ├── [1.2K] LICENSE │   │   ├── [2.7K] package.json │   │   └── [9.6K] Readme.md │   ├── [4.0K] finalhandler │   │   ├── [4.4K] HISTORY.md │   │   ├── [6.6K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.2K] package.json │   │   ├── [4.0K] README.md │   │   └── [1.2K] SECURITY.md │   ├── [4.0K] forwarded │   │   ├── [ 400] HISTORY.md │   │   ├── [1.5K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.1K] package.json │   │   └── [1.6K] README.md │   ├── [4.0K] fresh │   │   ├── [1.5K] HISTORY.md │   │   ├── [2.6K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.3K] package.json │   │   └── [3.3K] README.md │   ├── [4.0K] function-bind │   │   ├── [ 13K] CHANGELOG.md │   │   ├── [2.0K] implementation.js │   │   ├── [ 126] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.2K] package.json │   │   ├── [1.7K] README.md │   │   └── [4.0K] test │   │   └── [8.8K] index.js │   ├── [4.0K] get-intrinsic │   │   ├── [ 15K] CHANGELOG.md │   │   ├── [ 14K] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.5K] package.json │   │   ├── [2.7K] README.md │   │   └── [4.0K] test │   │   └── [8.6K] GetIntrinsic.js │   ├── [4.0K] get-proto │   │   ├── [1.0K] CHANGELOG.md │   │   ├── [ 126] index.d.ts │   │   ├── [ 821] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [ 125] Object.getPrototypeOf.d.ts │   │   ├── [ 156] Object.getPrototypeOf.js │   │   ├── [2.1K] package.json │   │   ├── [1.8K] README.md │   │   ├── [ 67] Reflect.getPrototypeOf.d.ts │   │   ├── [ 150] Reflect.getPrototypeOf.js │   │   ├── [4.0K] test │   │   │   └── [2.3K] index.js │   │   └── [ 118] tsconfig.json │   ├── [4.0K] gopd │   │   ├── [3.0K] CHANGELOG.md │   │   ├── [ 42] gOPD.d.ts │   │   ├── [ 97] gOPD.js │   │   ├── [ 173] index.d.ts │   │   ├── [ 206] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.0K] package.json │   │   ├── [1.5K] README.md │   │   ├── [4.0K] test │   │   │   └── [ 656] index.js │   │   └── [ 116] tsconfig.json │   ├── [4.0K] hasown │   │   ├── [2.5K] CHANGELOG.md │   │   ├── [ 117] index.d.ts │   │   ├── [ 206] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [2.2K] package.json │   │   ├── [1.6K] README.md │   │   └── [ 73] tsconfig.json │   ├── [4.0K] has-symbols │   │   ├── [9.2K] CHANGELOG.md │   │   ├── [ 73] index.d.ts │   │   ├── [ 447] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.9K] package.json │   │   ├── [2.0K] README.md │   │   ├── [ 69] shams.d.ts │   │   ├── [1.9K] shams.js │   │   ├── [4.0K] test │   │   │   ├── [ 654] index.js │   │   │   ├── [4.0K] shams │   │   │   │   ├── [ 797] core-js.js │   │   │   │   └── [ 760] get-own-property-symbols.js │   │   │   └── [2.1K] tests.js │   │   └── [ 143] tsconfig.json │   ├── [4.0K] http-errors │   │   ├── [3.9K] HISTORY.md │   │   ├── [6.2K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.3K] package.json │   │   └── [5.8K] README.md │   ├── [4.0K] iconv-lite │   │   ├── [4.2K] Changelog.md │   │   ├── [4.0K] encodings │   │   │   ├── [ 21K] dbcs-codec.js │   │   │   ├── [8.1K] dbcs-data.js │   │   │   ├── [ 710] index.js │   │   │   ├── [6.0K] internal.js │   │   │   ├── [2.1K] sbcs-codec.js │   │   │   ├── [ 31K] sbcs-data-generated.js │   │   │   ├── [4.6K] sbcs-data.js │   │   │   ├── [4.0K] tables │   │   │   │   ├── [ 17K] big5-added.json │   │   │   │   ├── [ 46K] cp936.json │   │   │   │   ├── [ 37K] cp949.json │   │   │   │   ├── [ 41K] cp950.json │   │   │   │   ├── [ 40K] eucjp.json │   │   │   │   ├── [2.2K] gb18030-ranges.json │   │   │   │   ├── [1.2K] gbk-added.json │   │   │   │   └── [ 23K] shiftjis.json │   │   │   ├── [4.9K] utf16.js │   │   │   └── [9.0K] utf7.js │   │   ├── [4.0K] lib │   │   │   ├── [1.1K] bom-handling.js │   │   │   ├── [8.5K] extend-node.js │   │   │   ├── [ 982] index.d.ts │   │   │   ├── [5.0K] index.js │   │   │   └── [3.3K] streams.js │   │   ├── [1.0K] LICENSE │   │   ├── [1.2K] package.json │   │   └── [6.4K] README.md │   ├── [4.0K] inherits │   │   ├── [ 753] inherits_browser.js │   │   ├── [ 250] inherits.js │   │   ├── [ 749] LICENSE │   │   ├── [ 581] package.json │   │   └── [1.6K] README.md │   ├── [4.0K] ipaddr.js │   │   ├── [9.5K] ipaddr.min.js │   │   ├── [4.0K] lib │   │   │   ├── [ 19K] ipaddr.js │   │   │   └── [2.9K] ipaddr.js.d.ts │   │   ├── [1.1K] LICENSE │   │   ├── [ 719] package.json │   │   └── [8.1K] README.md │   ├── [4.0K] math-intrinsics │   │   ├── [ 18] abs.d.ts │   │   ├── [ 73] abs.js │   │   ├── [1.4K] CHANGELOG.md │   │   ├── [4.0K] constants │   │   │   ├── [ 71] maxArrayLength.d.ts │   │   │   ├── [ 110] maxArrayLength.js │   │   │   ├── [ 77] maxSafeInteger.d.ts │   │   │   ├── [ 231] maxSafeInteger.js │   │   │   ├── [ 71] maxValue.d.ts │   │   │   └── [ 197] maxValue.js │   │   ├── [ 20] floor.d.ts │   │   ├── [ 77] floor.js │   │   ├── [ 80] isFinite.d.ts │   │   ├── [ 262] isFinite.js │   │   ├── [ 87] isInteger.d.ts │   │   ├── [ 410] isInteger.js │   │   ├── [ 22] isNaN.d.ts │   │   ├── [ 121] isNaN.js │   │   ├── [ 79] isNegativeZero.d.ts │   │   ├── [ 143] isNegativeZero.js │   │   ├── [1.0K] LICENSE │   │   ├── [ 18] max.d.ts │   │   ├── [ 73] max.js │   │   ├── [ 18] min.d.ts │   │   ├── [ 73] min.js │   │   ├── [ 76] mod.d.ts │   │   ├── [ 218] mod.js │   │   ├── [2.6K] package.json │   │   ├── [ 18] pow.d.ts │   │   ├── [ 73] pow.js │   │   ├── [1.8K] README.md │   │   ├── [ 20] round.d.ts │   │   ├── [ 77] round.js │   │   ├── [ 57] sign.d.ts │   │   ├── [ 214] sign.js │   │   ├── [4.0K] test │   │   │   └── [6.2K] index.js │   │   └── [ 36] tsconfig.json │   ├── [4.0K] media-typer │   │   ├── [ 461] HISTORY.md │   │   ├── [6.2K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 759] package.json │   │   └── [2.3K] README.md │   ├── [4.0K] merge-descriptors │   │   ├── [ 363] HISTORY.md │   │   ├── [1.2K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.0K] package.json │   │   └── [1.3K] README.md │   ├── [4.0K] methods │   │   ├── [ 427] HISTORY.md │   │   ├── [1.0K] index.js │   │   ├── [1.2K] LICENSE │   │   ├── [ 947] package.json │   │   └── [1.7K] README.md │   ├── [4.0K] mime │   │   ├── [9.3K] CHANGELOG.md │   │   ├── [ 149] cli.js │   │   ├── [1.1K] LICENSE │   │   ├── [2.7K] mime.js │   │   ├── [ 933] package.json │   │   ├── [2.1K] README.md │   │   ├── [4.0K] src │   │   │   ├── [1.3K] build.js │   │   │   └── [2.3K] test.js │   │   └── [ 31K] types.json │   ├── [4.0K] mime-db │   │   ├── [182K] db.json │   │   ├── [ 12K] HISTORY.md │   │   ├── [ 189] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.6K] package.json │   │   └── [4.0K] README.md │   ├── [4.0K] mime-types │   │   ├── [8.6K] HISTORY.md │   │   ├── [3.6K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.1K] package.json │   │   └── [3.4K] README.md │   ├── [4.0K] ms │   │   ├── [2.7K] index.js │   │   ├── [1.1K] license.md │   │   ├── [ 704] package.json │   │   └── [1.7K] readme.md │   ├── [4.0K] negotiator │   │   ├── [2.4K] HISTORY.md │   │   ├── [2.4K] index.js │   │   ├── [4.0K] lib │   │   │   ├── [3.0K] charset.js │   │   │   ├── [3.4K] encoding.js │   │   │   ├── [3.3K] language.js │   │   │   └── [5.2K] mediaType.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 993] package.json │   │   └── [4.8K] README.md │   ├── [4.0K] object-inspect │   │   ├── [ 36K] CHANGELOG.md │   │   ├── [4.0K] example │   │   │   ├── [ 391] all.js │   │   │   ├── [ 116] circular.js │   │   │   ├── [ 126] fn.js │   │   │   └── [ 251] inspect.js │   │   ├── [ 19K] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.8K] package.json │   │   ├── [ 365] package-support.json │   │   ├── [2.9K] readme.markdown │   │   ├── [4.0K] test │   │   │   ├── [2.0K] bigint.js │   │   │   ├── [4.0K] browser │   │   │   │   └── [ 416] dom.js │   │   │   ├── [ 451] circular.js │   │   │   ├── [ 400] deep.js │   │   │   ├── [1.5K] element.js │   │   │   ├── [1.5K] err.js │   │   │   ├── [ 683] fakes.js │   │   │   ├── [2.2K] fn.js │   │   │   ├── [ 372] global.js │   │   │   ├── [ 514] has.js │   │   │   ├── [ 255] holes.js │   │   │   ├── [6.5K] indent-option.js │   │   │   ├── [4.8K] inspect.js │   │   │   ├── [ 268] lowbyte.js │   │   │   ├── [2.3K] number.js │   │   │   ├── [1.5K] quoteStyle.js │   │   │   ├── [1.5K] toStringTag.js │   │   │   ├── [ 302] undef.js │   │   │   └── [8.2K] values.js │   │   ├── [ 534] test-core-js.js │   │   └── [ 42] util.inspect.js │   ├── [4.0K] on-finished │   │   ├── [1.8K] HISTORY.md │   │   ├── [4.3K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.0K] package.json │   │   └── [5.0K] README.md │   ├── [4.0K] parseurl │   │   ├── [1.0K] HISTORY.md │   │   ├── [2.7K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.2K] package.json │   │   └── [4.0K] README.md │   ├── [4.0K] path-to-regexp │   │   ├── [3.7K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 554] package.json │   │   └── [1.1K] Readme.md │   ├── [4.0K] proxy-addr │   │   ├── [2.9K] HISTORY.md │   │   ├── [5.9K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.2K] package.json │   │   └── [4.0K] README.md │   ├── [4.0K] qs │   │   ├── [ 31K] CHANGELOG.md │   │   ├── [4.0K] dist │   │   │   └── [ 46K] qs.js │   │   ├── [4.0K] lib │   │   │   ├── [ 476] formats.js │   │   │   ├── [ 211] index.js │   │   │   ├── [ 11K] parse.js │   │   │   ├── [ 11K] stringify.js │   │   │   └── [7.1K] utils.js │   │   ├── [1.6K] LICENSE.md │   │   ├── [3.0K] package.json │   │   ├── [ 24K] README.md │   │   └── [4.0K] test │   │   ├── [7.5K] empty-keys-cases.js │   │   ├── [ 46K] parse.js │   │   ├── [ 52K] stringify.js │   │   └── [5.0K] utils.js │   ├── [4.0K] range-parser │   │   ├── [ 917] HISTORY.md │   │   ├── [2.8K] index.js │   │   ├── [1.2K] LICENSE │   │   ├── [1.2K] package.json │   │   └── [2.2K] README.md │   ├── [4.0K] raw-body │   │   ├── [5.9K] HISTORY.md │   │   ├── [2.2K] index.d.ts │   │   ├── [7.0K] index.js │   │   ├── [1.2K] LICENSE │   │   ├── [1.3K] package.json │   │   ├── [6.4K] README.md │   │   └── [1.2K] SECURITY.md │   ├── [4.0K] safe-buffer │   │   ├── [8.5K] index.d.ts │   │   ├── [1.6K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.0K] package.json │   │   └── [ 19K] README.md │   ├── [4.0K] safer-buffer │   │   ├── [1.4K] dangerous.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 822] package.json │   │   ├── [ 12K] Porting-Buffer.md │   │   ├── [8.1K] Readme.md │   │   ├── [2.1K] safer.js │   │   └── [ 15K] tests.js │   ├── [4.0K] send │   │   ├── [ 13K] HISTORY.md │   │   ├── [ 23K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [4.0K] node_modules │   │   │   ├── [4.0K] encodeurl │   │   │   │   ├── [ 238] HISTORY.md │   │   │   │   ├── [1.5K] index.js │   │   │   │   ├── [1.1K] LICENSE │   │   │   │   ├── [1.1K] package.json │   │   │   │   └── [3.8K] README.md │   │   │   └── [4.0K] ms │   │   │   ├── [3.0K] index.js │   │   │   ├── [1.1K] license.md │   │   │   ├── [ 732] package.json │   │   │   └── [1.8K] readme.md │   │   ├── [1.5K] package.json │   │   ├── [9.3K] README.md │   │   └── [1.1K] SECURITY.md │   ├── [4.0K] serve-static │   │   ├── [ 11K] HISTORY.md │   │   ├── [4.4K] index.js │   │   ├── [1.2K] LICENSE │   │   ├── [1.1K] package.json │   │   └── [7.6K] README.md │   ├── [4.0K] setprototypeof │   │   ├── [ 93] index.d.ts │   │   ├── [ 407] index.js │   │   ├── [ 727] LICENSE │   │   ├── [1.2K] package.json │   │   ├── [ 844] README.md │   │   └── [4.0K] test │   │   └── [ 690] index.js │   ├── [4.0K] side-channel │   │   ├── [ 10K] CHANGELOG.md │   │   ├── [ 486] index.d.ts │   │   ├── [1.2K] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.3K] package.json │   │   ├── [2.1K] README.md │   │   ├── [4.0K] test │   │   │   └── [2.5K] index.js │   │   └── [ 116] tsconfig.json │   ├── [4.0K] side-channel-list │   │   ├── [ 818] CHANGELOG.md │   │   ├── [ 335] index.d.ts │   │   ├── [3.3K] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [ 721] list.d.ts │   │   ├── [2.2K] package.json │   │   ├── [2.2K] README.md │   │   ├── [4.0K] test │   │   │   └── [2.6K] index.js │   │   └── [ 116] tsconfig.json │   ├── [4.0K] side-channel-map │   │   ├── [1.2K] CHANGELOG.md │   │   ├── [ 367] index.d.ts │   │   ├── [1.9K] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.3K] package.json │   │   ├── [2.2K] README.md │   │   ├── [4.0K] test │   │   │   └── [2.8K] index.js │   │   └── [ 116] tsconfig.json │   ├── [4.0K] side-channel-weakmap │   │   ├── [1.4K] CHANGELOG.md │   │   ├── [ 382] index.d.ts │   │   ├── [2.6K] index.js │   │   ├── [1.0K] LICENSE │   │   ├── [2.4K] package.json │   │   ├── [2.3K] README.md │   │   ├── [4.0K] test │   │   │   └── [2.9K] index.js │   │   └── [ 116] tsconfig.json │   ├── [4.0K] statuses │   │   ├── [1.7K] codes.json │   │   ├── [1.5K] HISTORY.md │   │   ├── [2.5K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.4K] package.json │   │   └── [3.5K] README.md │   ├── [4.0K] toidentifier │   │   ├── [ 128] HISTORY.md │   │   ├── [ 504] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.1K] package.json │   │   └── [1.8K] README.md │   ├── [4.0K] type-is │   │   ├── [5.3K] HISTORY.md │   │   ├── [5.4K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [1.1K] package.json │   │   └── [5.1K] README.md │   ├── [4.0K] unpipe │   │   ├── [ 59] HISTORY.md │   │   ├── [1.1K] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 770] package.json │   │   └── [1.2K] README.md │   ├── [4.0K] utils-merge │   │   ├── [ 381] index.js │   │   ├── [1.1K] LICENSE │   │   ├── [ 857] package.json │   │   └── [1.3K] README.md │   └── [4.0K] vary │   ├── [ 792] HISTORY.md │   ├── [2.9K] index.js │   ├── [1.1K] LICENSE │   ├── [1.2K] package.json │   └── [2.7K] README.md ├── [ 486] package.json ├── [ 29K] package-lock.json ├── [ 11K] README.md ├── [ 763] server.js └── [ 11K] simplified-survey.html 110 directories, 560 files
神龙机器人已为您缓存
备注
    1. 建议优先通过来源进行访问。
    2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
    3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。