Files
cve/docs/index.html
T
0xMarcio 3e9e0a40e0 Follow the repository rename and drop two bits of padding
The slug moved to 0xMarcio/pocindex, so the raw.githubusercontent URLs in the
README banner were riding a redirect. SLUG now lives in brand.py with the rest
of the identity and getTrending imports it.

The About description lost "with CVSS, KEV and EPSS. Free JSON API, no signup."
GitHub truncates listings near 150 characters, so that tail rarely rendered and
read as a feature list rather than a description. 142 characters now.

The MITRE disclaimer comes out of the footer. The brand carries no MITRE mark,
which was the reason for picking it, and referring to CVE identifiers by name is
ordinary descriptive use. NVD, Tenable and Rapid7 all do it without a notice.

_urltest.html is temporary and comes out in the next commit.
2026-09-02 03:54:25 +02:00

140 lines
6.7 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- Absolute URLs all point at the canonical host. Keep them in step with
SITE in scripts/brand.py, which drives every generated surface. -->
<title>PoC Index: Search CVE Proof-of-Concept Exploits</title>
<meta name="description" content="Search 82,000+ public CVE proof-of-concept exploits from GitHub, Nuclei, ExploitDB, Metasploit and Vulhub. Updated hourly. Free JSON API, no signup." />
<meta name="robots" content="index, follow, max-image-preview:large" />
<link rel="icon" href="/favicon.ico" />
<link rel="canonical" href="https://pocindex.io/" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="PoC Index" />
<meta property="og:title" content="PoC Index: Search CVE Proof-of-Concept Exploits" />
<meta property="og:description" content="Public proof-of-concept exploits, indexed by CVE. Searchable, refreshed hourly, no signup." />
<meta property="og:url" content="https://pocindex.io/" />
<meta property="og:image" content="https://pocindex.io/social-card.png" />
<meta property="og:image:width" content="1280" />
<meta property="og:image:height" content="640" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="PoC Index: Search CVE Proof-of-Concept Exploits" />
<meta name="twitter:description" content="Public proof-of-concept exploits, indexed by CVE. Searchable, refreshed hourly, no signup." />
<meta name="twitter:image" content="https://pocindex.io/social-card.png" />
<!-- WebSite.name is how Google decides what to print as the site name in a
result. Without it the title, the og tags and the h1 were three different
names and it picked one on its own. SearchAction points at the ?q= route
logic.js now keeps in the URL. -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "PoC Index",
"url": "https://pocindex.io/",
"description": "Search 82,000+ public CVE proof-of-concept exploits from GitHub, Nuclei, ExploitDB, Metasploit and Vulhub. Updated hourly. Free JSON API, no signup.",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://pocindex.io/?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
</script>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="/style.css" />
</head>
<body>
<header class="container hero-bar">
<div class="hero">
<svg class="hero-radar" viewBox="0 0 400 400" aria-hidden="true">
<circle cx="200" cy="200" r="70" />
<circle cx="200" cy="200" r="124" />
<circle cx="200" cy="200" r="170" />
<circle cx="200" cy="200" r="200" />
<line class="hero-sweep" x1="200" y1="200" x2="200" y2="0" />
</svg>
<div class="hero-id">
<h1>PoC Index</h1>
<p>Public proof-of-concept exploits, indexed by CVE.</p>
</div>
<dl class="hero-stats">
<div><dt data-stat-total>&nbsp;</dt><dd>CVES INDEXED</dd></div>
<div><dt class="is-accent" data-stat-pocs>&nbsp;</dt><dd>WITH POCS</dd></div>
<div><dt class="is-danger" data-stat-kev>&nbsp;</dt><dd>KNOWN EXPLOITED</dd></div>
</dl>
</div>
</header>
<div class="container search-bar">
<form class="search" role="search" autocomplete="off">
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" aria-hidden="true">
<circle cx="7.6" cy="7.6" r="5.1" stroke="#8b949e" stroke-width="1.7" />
<path d="M11.5 11.5 L15.6 15.6" stroke="#8b949e" stroke-width="1.7" stroke-linecap="round" />
</svg>
<input type="text" spellcheck="false" data-search
placeholder="Search CVE, vendor, product or keyword &middot; exclude with -windows"
aria-label="Search CVE, vendor, product or keyword" />
<span class="search-status" data-status aria-live="polite"></span>
</form>
<div class="filters" data-filters aria-label="CVE filters">
<span class="filter-caption">FILTER</span>
<div class="filter-menu" data-filter-menu="severity">
<button type="button" class="filter-trigger" data-filter-trigger="severity"
aria-haspopup="true" aria-expanded="false" aria-controls="severity-options" disabled>
<span>SEVERITY</span><strong data-filter-summary="severity">ALL</strong>
</button>
<div class="filter-popover" id="severity-options" data-filter-options="severity"
aria-label="Severities" hidden></div>
</div>
<button type="button" class="filter-toggle" data-filter-kev aria-pressed="false" disabled>KEV</button>
<div class="filter-menu" data-filter-menu="source">
<button type="button" class="filter-trigger" data-filter-trigger="source"
aria-haspopup="true" aria-expanded="false" aria-controls="source-options" disabled>
<span>SOURCE</span><strong data-filter-summary="source">ALL</strong>
</button>
<div class="filter-popover" id="source-options" data-filter-options="source"
aria-label="Sources" hidden></div>
</div>
<button type="button" class="filter-clear" data-clear-filters hidden>CLEAR</button>
</div>
</div>
<main class="container content">
<section class="panel results" data-results hidden></section>
<section data-trending>
<div class="trend-controls">
<div class="switch" role="group" aria-label="Ranking">
<button type="button" data-mode="TRENDING" aria-pressed="true">TRENDING</button>
<button type="button" data-mode="RECENT" aria-pressed="false">RECENT</button>
</div>
<span class="trend-note" data-trend-note></span>
</div>
<div class="panel trending">
<div class="col-head">
<span class="col-stars">STARS</span>
<span class="col-updated">UPDATED</span>
<span>NAME</span>
<span class="col-desc">DESCRIPTION</span>
</div>
<div data-trend-rows></div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container">
<span>sources: nvd &middot; cve program &middot; github &middot; github advisories &middot; cisa vulnrichment &middot; cisa kev &middot; first epss</span>
<span data-refreshed></span>
</div>
</footer>
<script src="/logic.js"></script>
</body>
</html>