| name | pentesting-checklist-usage |
| description | Interactive security assessment checklist covering 23 platforms with 1000+ checks for penetration testing, bug bounty, and security assessments |
| triggers | ["use pentesting checklist","open security assessment checklist","start penetration testing workflow","check security testing coverage","track pentest progress","export security assessment findings","search pentesting checks","organize security testing tasks"] |
PentestingChecklist Skill
Skill by ara.so — Security Skills collection.
PentestingChecklist is a comprehensive, client-side security assessment tool providing structured checklists across 23 platforms including Web, API, Mobile, Cloud, Active Directory, Kubernetes, LLM, and more. It runs entirely in-browser with no backend—all progress, notes, and findings are stored locally in localStorage.
What It Does
- Hierarchical assessment framework: Platform → Category → Technology → Check (4-level structure)
- 1000+ security checks across 23 assessment platforms
- Progress tracking: Mark checks as Open/Closed/N/A, add notes per check
- Global search: Search across all platforms, checks, descriptions, tags, and references
- Export capabilities: Markdown, CSV, Excel (.xlsx), JSON formats
- Severity filtering: Critical, High, Medium, Low, Info badges
- Private by design: No login, no backend, no telemetry—everything stays local
Installation & Setup
Using the Hosted Version
Access directly at: https://checklist.m14r41.in/
No installation required—runs entirely in your browser.
Self-Hosting
git clone https://github.com/m14r41/PentestingChecklist.git
cd PentestingChecklist
npm install
pnpm install
npm run dev
pnpm dev
npm run build
pnpm build
npm run preview
The application will be available at http://localhost:5173 (dev) or as static files in dist/ (production).
Project Structure
PentestingChecklist is built with TypeScript, React, and Vite. Key directories:
PentestingChecklist/
├── src/
│ ├── components/ # React components
│ ├── data/ # Checklist data (JSON/TS)
│ ├── hooks/ # Custom React hooks
│ ├── utils/ # Utility functions
│ └── types/ # TypeScript type definitions
├── public/ # Static assets
└── dist/ # Production build output
Understanding the Data Model
The checklist uses a 4-level hierarchy:
interface Platform {
id: string;
name: string;
description: string;
categories: Category[];
}
interface Category {
id: string;
name: string;
technologies: Technology[];
}
interface Technology {
id: string;
name: string;
checks: Check[];
}
interface Check {
id: string;
title: string;
description: string;
severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
tags: string[];
tools?: string[];
references?: string[];
status?: 'open' | 'closed' | 'na';
notes?: string;
}
Key Features & Usage
1. Navigation
2. Global Search (⌘K / Ctrl+K)
Press the keyboard shortcut from any page to open search:
- Searches across platforms, categories, technologies, checks
- Searches descriptions, tags, tools, and references
- Auto-expands and highlights selected results
3. Progress Tracking
Each check can be marked with a status:
- Open: Finding identified, needs remediation
- Closed: Check completed/passed or finding resolved
- N/A: Not applicable to current assessment
Progress is calculated automatically per category, platform, and globally.
4. Adding Notes
Click any check to expand it and add notes:
- Record payloads, request IDs, screenshots references
- Document evidence and reproduction steps
- Notes persist in browser localStorage
- Notes are included in exports
5. Exporting Assessment Data
6. Importing Previous Assessments
Upload a previously exported JSON file to restore:
- All check statuses
- All notes
- Progress tracking state
Common Workflows
Starting a New Assessment
Bug Bounty Workflow
Red Team Engagement
Cloud Security Assessment
Active Directory Assessment
LocalStorage Structure
Understanding data persistence for troubleshooting:
localStorage.setItem('checkStatus_<checkId>', 'open|closed|na');
localStorage.setItem('checkNotes_<checkId>', 'your notes here');
Extending the Checklist
To add custom checks or modify existing ones:
export const webApplicationPlatform: Platform = {
id: 'web-application',
name: 'Web Application',
categories: [{
id: 'authentication',
name: 'Authentication',
technologies: [{
id: 'session-management',
name: 'Session Management',
checks: [
{
id: 'custom-check-001',
title: 'Check for session fixation',
description: 'Verify that session tokens are regenerated after login',
severity: 'high',
tags: ['session', 'authentication'],
tools: ['Burp Suite', 'OWASP ZAP'],
references: [
'OWASP Session Management Cheat Sheet'
]
}
]
}]
}]
};
Integration Examples
Exporting to CI/CD
import fs from 'fs';
interface ChecklistState {
platform: string;
checks: {
id: string;
status: 'open' | 'closed' | 'na';
notes?: string;
}[];
}
function validateSecurityChecks(checklistPath: string): boolean {
const state: ChecklistState = JSON.parse(
fs.readFileSync(checklistPath, 'utf-8')
);
const criticalOpen = state.checks.filter(
c => c.status === 'open' && c.severity === 'critical'
);
if (criticalOpen.length > 0) {
console.error(`❌ ${criticalOpen.length} critical findings still open`);
return false;
}
return true;
}
Generating Custom Reports
import fs from 'fs';
interface ExportedData {
exportDate: string;
platforms: {
name: string;
categories: {
name: string;
technologies: {
name: string;
checks: {
title: string;
status: string;
severity: string;
notes?: string;
}[];
}[];
}[];
}[];
}
function generateExecutiveSummary(jsonPath: string): string {
const data: ExportedData = JSON.parse(
fs.readFileSync(jsonPath, 'utf-8')
);
let summary = '# Security Assessment Executive Summary\n\n';
summary += `Assessment Date: ${data.exportDate}\n\n`;
let totalChecks = 0;
let openFindings = 0;
let criticalFindings = 0;
data.platforms.forEach(platform => {
platform.categories.forEach(category => {
category.technologies.forEach(tech => {
tech.checks.forEach(check => {
totalChecks++;
if (check.status === 'open') {
openFindings++;
if (check.severity === 'critical') {
criticalFindings++;
}
}
});
});
});
});
summary += `## Key Metrics\n`;
summary += `- Total Checks Performed: ${totalChecks}\n`;
summary += `- Open Findings: ${openFindings}\n`;
summary += `- Critical Findings: ${criticalFindings}\n\n`;
return summary;
}
Troubleshooting
Progress Not Saving
if (typeof localStorage === 'undefined') {
console.error('localStorage not available');
}
try {
localStorage.setItem('test', 'test');
localStorage.removeItem('test');
} catch (e) {
console.error('localStorage quota exceeded or disabled');
}
Export Not Working
function manualDownload(content: string, filename: string) {
const blob = new Blob([content], { type: 'application/json' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
}
Search Not Finding Results
Platform Coverage Reference
Quick reference for what each platform covers:
- Web Application: OWASP Top 10, auth, session, injection, business logic
- API: OWASP API Top 10, REST/GraphQL, authorization, rate limiting
- Mobile: OWASP MASVS, iOS/Android, storage, transport, reverse engineering
- Thick Client: Desktop apps, DLL injection, IPC, local storage
- Secure Code Review: Source analysis, dangerous sinks, secrets in code
- Cloud: AWS/Azure/GCP, IAM, storage, compute, SSRF via metadata
- DevSecOps: SAST/DAST/SCA, secrets management, supply chain
- Network: Host discovery, service enumeration, transport security
- Wi-Fi: WPA2/WPA3, rogue APs, handshake attacks
- Firewall: Ruleset review, egress filtering, segmentation
- Active Directory: Kerberos, ACLs, delegation, lateral movement
- Infrastructure: OS hardening, patch management, exposed services
- MCP Security: Model Context Protocol, tool poisoning, prompt injection
- LLM Security: OWASP LLM Top 10, prompt injection, data leakage
- Threat Modeling: STRIDE, attack trees, abuse cases
- Configuration Review: CIS benchmarks, hardening baselines
- Containers & Kubernetes: Image security, RBAC, network policies
- CI/CD: Pipeline attacks, secrets exfiltration, dependency confusion
- IoT: Firmware analysis, hardware interfaces, insecure protocols
- Blockchain: Smart contracts, reentrancy, oracle manipulation
- Phishing: Social engineering campaigns, infrastructure setup
- OSINT: Domain footprinting, exposed credentials, code leakage
- Forensics: Evidence acquisition, disk/memory analysis, chain of custody
Best Practices
- Start with OSINT: Always begin reconnaissance with the OSINT platform
- Use severity filters: Focus on critical/high findings first during time-constrained assessments
- Document thoroughly: Add detailed notes—future you will thank present you
- Export regularly: Backup your progress with JSON exports
- Combine platforms: Security assessments rarely fit one category—use multiple platforms
- Customize for context: Not all checks apply to every assessment—mark N/A liberally
- Track remediation: Use status changes to track finding lifecycle
- Search before adding: Use global search to find existing checks before requesting new ones
License & Usage
Personal Use Only license—see LICENSE file in repository.
- ✅ Personal, non-commercial security assessments
- ✅ Educational use
- ✅ Bug bounty hunting
- ❌ Commercial/paid services
- ❌ Redistribution or resale
- ❌ Hosted/SaaS offerings
Commercial licensing: Contact via https://m14r41.in
Project: https://github.com/m14r41/PentestingChecklist
Live Tool: https://checklist.m14r41.in/
Author: m14r41