Overview
Scan4all supports two formats for creating custom POCs:- Go POCs - Native Go code for complex vulnerability checks
- YAML POCs - Declarative YAML files based on xray v2 format
Go POC Development
Step 1: Add or Check Fingerprints
First, ensure the target technology has a fingerprint defined inpkg/fingerprint/localFingerData.go:
Step 2: Create POC Function
Create a new Go file in thepocs_go/ directory. Here’s the basic structure:
Step 3: Register POC in Check Function
Add your POC to the switch statement inpocs_go/go_poc_check.go:41:
Complete Example: Apache Tomcat CVE-2017-12615
Here’s a real example from the codebase:HttpRequset Function Parameters
Thepkg.HttpRequset function is the main utility for HTTP requests:
Advanced POC Examples
Weblogic T3 Protocol Check
Weblogic T3 Protocol Check
Shiro Key Detection
Shiro Key Detection
JSON-Based Exploitation
JSON-Based Exploitation
YAML POC Development
Step 1: Check Fingerprints
Ensure the fingerprint is defined inpkg/fingerprint/localFingerData.go.
Step 2: Create YAML POC File
Create a YAML file inpocs_yml/ymlFiles/ with the naming convention:
thinkphp-cve-2018-20062-rce.yml
YAML POC Structure
YAML POCs follow the xray v2 format:YAML POC Components
Request Configuration
Request Configuration
Expression Matching
Expression Matching
response.status- HTTP status coderesponse.body- Response bodyresponse.headers- Response headers.bcontains(b"string")- Binary contains.contains("string")- String contains
Multi-Step Rules
Multi-Step Rules
Example YAML POCs
Example 1: SQL Injection Detection
Example 2: Weblogic Console Detection
Example 3: File Upload Vulnerability
POC Organization
Directory Structure
Naming Conventions
Go POC Files
- Use lowercase package names
- Group by technology/vendor
- Function names:
CVE_YEAR_NUMBER
YAML POC Files
- Format:
<tech>-<vuln>-<type>.yml - Use lowercase with hyphens
- Include CVE number if applicable
Testing Your POCs
Local Testing
Debug Mode
Best Practices
Contributing POCs
See the Contributing Guide for information on submitting your POCs to the project.Next Steps
API Integration
Learn how to integrate scan4all into your applications
Contributing
Contribute your POCs and modules to scan4all