Files
SneakyScan/app/templates/report_mockup.html

1425 lines
64 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SneakyScanner Report - Production Infrastructure Scan</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
background-color: #0f172a;
color: #e2e8f0;
line-height: 1.6;
padding: 20px;
}
.container {
max-width: 1400px;
margin: 0 auto;
}
/* Header */
.header {
background: linear-gradient(135deg, #1e293b 0%, #334155 100%);
padding: 30px;
border-radius: 12px;
margin-bottom: 30px;
border: 1px solid #475569;
}
.header h1 {
font-size: 2rem;
margin-bottom: 10px;
color: #60a5fa;
}
.header-meta {
display: flex;
gap: 30px;
color: #94a3b8;
font-size: 0.95rem;
}
.header-meta span {
display: flex;
align-items: center;
gap: 8px;
}
/* Summary Dashboard */
.dashboard {
background-color: #1e293b;
padding: 25px;
border-radius: 12px;
margin-bottom: 30px;
border: 1px solid #334155;
}
.dashboard h2 {
font-size: 1.5rem;
margin-bottom: 20px;
color: #60a5fa;
}
.dashboard-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 20px;
}
.dashboard-card {
background-color: #0f172a;
padding: 20px;
border-radius: 8px;
border: 1px solid #334155;
}
.dashboard-card h3 {
font-size: 1rem;
color: #94a3b8;
margin-bottom: 15px;
text-transform: uppercase;
font-weight: 600;
letter-spacing: 0.5px;
}
.stat-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 12px;
}
.stat-item {
display: flex;
justify-content: space-between;
padding: 8px 0;
}
.stat-label {
color: #94a3b8;
}
.stat-value {
color: #e2e8f0;
font-weight: 600;
}
.alert-grid {
display: flex;
flex-direction: column;
gap: 10px;
}
.alert-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px;
background-color: #1e293b;
border-radius: 6px;
border-left: 3px solid;
}
.alert-item.critical {
border-color: #ef4444;
}
.alert-item.warning {
border-color: #f59e0b;
}
.alert-item.info {
border-color: #3b82f6;
}
/* Badges */
.badge {
display: inline-block;
padding: 4px 12px;
border-radius: 12px;
font-size: 0.75rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.badge.expected {
background-color: #065f46;
color: #6ee7b7;
}
.badge.unexpected {
background-color: #7f1d1d;
color: #fca5a5;
}
.badge.missing {
background-color: #78350f;
color: #fcd34d;
}
.badge.critical {
background-color: #7f1d1d;
color: #fca5a5;
}
.badge.warning {
background-color: #78350f;
color: #fcd34d;
}
.badge.good {
background-color: #065f46;
color: #6ee7b7;
}
.badge.info {
background-color: #1e3a8a;
color: #93c5fd;
}
.badge-count {
background-color: #334155;
color: #e2e8f0;
padding: 2px 8px;
border-radius: 10px;
font-size: 0.85rem;
font-weight: 600;
}
/* Site Section */
.site-section {
background-color: #1e293b;
padding: 25px;
border-radius: 12px;
margin-bottom: 25px;
border: 1px solid #334155;
}
.site-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
padding-bottom: 15px;
border-bottom: 2px solid #334155;
}
.site-header h2 {
font-size: 1.75rem;
color: #60a5fa;
}
.site-stats {
display: flex;
gap: 15px;
color: #94a3b8;
font-size: 0.9rem;
}
/* IP Section */
.ip-section {
background-color: #0f172a;
padding: 20px;
border-radius: 8px;
margin-bottom: 20px;
border: 1px solid #334155;
}
.ip-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
}
.ip-header h3 {
font-size: 1.25rem;
color: #e2e8f0;
font-family: 'Courier New', monospace;
}
.ip-badges {
display: flex;
gap: 8px;
}
/* Service Table */
.service-table {
width: 100%;
border-collapse: collapse;
margin-bottom: 15px;
background-color: #1e293b;
border-radius: 6px;
overflow: hidden;
}
.service-table thead {
background-color: #334155;
}
.service-table th {
padding: 12px;
text-align: left;
font-weight: 600;
color: #94a3b8;
text-transform: uppercase;
font-size: 0.8rem;
letter-spacing: 0.5px;
}
.service-table td {
padding: 12px;
border-top: 1px solid #334155;
}
.service-table tbody tr {
cursor: pointer;
transition: all 0.2s ease;
border-left: 3px solid transparent;
}
.service-table tbody tr:hover {
background-color: #334155;
border-left-color: #60a5fa;
}
.service-row-clickable {
position: relative;
}
.service-row-clickable::after {
content: '▼';
position: absolute;
right: 12px;
color: #64748b;
font-size: 0.7rem;
transition: transform 0.2s;
}
.service-row-clickable.expanded::after {
transform: rotate(-180deg);
}
/* Service Details Card */
.service-details {
display: none;
background-color: #0f172a;
padding: 20px;
margin: 10px 0;
border-radius: 6px;
border: 1px solid #334155;
border-left: 3px solid #60a5fa;
}
.service-details.show {
display: block;
animation: slideDown 0.3s ease-out;
}
@keyframes slideDown {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.details-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 15px;
margin-bottom: 15px;
}
.detail-item {
display: flex;
flex-direction: column;
gap: 4px;
}
.detail-label {
color: #94a3b8;
font-size: 0.85rem;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.detail-value {
color: #e2e8f0;
font-weight: 500;
font-family: 'Courier New', monospace;
}
/* SSL/TLS Section */
.ssl-section {
background-color: #1e293b;
padding: 15px;
border-radius: 6px;
margin-top: 15px;
border: 1px solid #334155;
}
.ssl-header {
display: flex;
justify-content: space-between;
align-items: center;
cursor: pointer;
padding: 5px 0;
}
.ssl-header h4 {
color: #60a5fa;
font-size: 1rem;
}
.ssl-toggle {
color: #64748b;
font-size: 0.8rem;
}
.ssl-content {
display: none;
margin-top: 15px;
padding-top: 15px;
border-top: 1px solid #334155;
}
.ssl-content.show {
display: block;
}
.cert-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 15px;
margin-bottom: 20px;
}
.tls-versions {
margin-top: 15px;
}
.tls-version-item {
background-color: #0f172a;
padding: 12px;
border-radius: 4px;
margin-bottom: 10px;
border-left: 3px solid;
}
.tls-version-item.supported {
border-color: #10b981;
}
.tls-version-item.unsupported {
border-color: #64748b;
}
.tls-version-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}
.cipher-list {
color: #94a3b8;
font-size: 0.85rem;
font-family: 'Courier New', monospace;
margin-left: 15px;
}
.cipher-list li {
margin: 4px 0;
}
/* Screenshot Link */
.screenshot-link {
display: inline-flex;
align-items: center;
gap: 6px;
color: #60a5fa;
text-decoration: none;
font-size: 0.9rem;
margin-top: 10px;
transition: color 0.2s;
}
.screenshot-link:hover {
color: #93c5fd;
text-decoration: underline;
}
/* Utilities */
.mono {
font-family: 'Courier New', monospace;
}
.text-muted {
color: #94a3b8;
}
.text-success {
color: #10b981;
}
.text-warning {
color: #f59e0b;
}
.text-danger {
color: #ef4444;
}
</style>
</head>
<body>
<div class="container">
<!-- Header -->
<div class="header">
<h1>Production Infrastructure Scan</h1>
<div class="header-meta">
<span>📅 <strong>Scan Time:</strong> 2025-11-14 10:30:00 UTC</span>
<span>⏱️ <strong>Duration:</strong> 127.5 seconds</span>
<span>📄 <strong>Config:</strong> /app/configs/production.yaml</span>
</div>
</div>
<!-- Summary Dashboard -->
<div class="dashboard">
<h2>Scan Summary</h2>
<div class="dashboard-grid">
<!-- Statistics Card -->
<div class="dashboard-card">
<h3>Scan Statistics</h3>
<div class="stat-grid">
<div class="stat-item">
<span class="stat-label">Total IPs Scanned</span>
<span class="stat-value">5</span>
</div>
<div class="stat-item">
<span class="stat-label">TCP Ports Found</span>
<span class="stat-value">47</span>
</div>
<div class="stat-item">
<span class="stat-label">UDP Ports Found</span>
<span class="stat-value">3</span>
</div>
<div class="stat-item">
<span class="stat-label">Services Identified</span>
<span class="stat-value">42</span>
</div>
<div class="stat-item">
<span class="stat-label">Web Services</span>
<span class="stat-value">12</span>
</div>
<div class="stat-item">
<span class="stat-label">Screenshots Captured</span>
<span class="stat-value">11</span>
</div>
</div>
</div>
<!-- Drift Alerts Card -->
<div class="dashboard-card">
<h3>Drift Alerts</h3>
<div class="alert-grid">
<div class="alert-item warning">
<span>Unexpected TCP Ports</span>
<span class="badge-count">4</span>
</div>
<div class="alert-item critical">
<span>Missing Expected Services</span>
<span class="badge-count">2</span>
</div>
<div class="alert-item info">
<span>New Services Detected</span>
<span class="badge-count">3</span>
</div>
<div class="alert-item warning">
<span>Unexpected UDP Ports</span>
<span class="badge-count">1</span>
</div>
</div>
</div>
<!-- Security Warnings Card -->
<div class="dashboard-card">
<h3>Security Warnings</h3>
<div class="alert-grid">
<div class="alert-item critical">
<span>Certificates Expiring Soon (&lt;30 days)</span>
<span class="badge-count">2</span>
</div>
<div class="alert-item warning">
<span>Weak TLS Versions (1.0/1.1)</span>
<span class="badge-count">1</span>
</div>
<div class="alert-item warning">
<span>Self-Signed Certificates</span>
<span class="badge-count">3</span>
</div>
<div class="alert-item info">
<span>High Port Services (&gt;10000)</span>
<span class="badge-count">5</span>
</div>
</div>
</div>
</div>
</div>
<!-- Site 1: Production Web Servers -->
<div class="site-section">
<div class="site-header">
<h2>Production Web Servers</h2>
<div class="site-stats">
<span>3 IPs</span>
<span></span>
<span>28 Ports</span>
<span></span>
<span>7 Web Services</span>
</div>
</div>
<!-- IP: 192.168.1.10 -->
<div class="ip-section">
<div class="ip-header">
<h3>192.168.1.10</h3>
<div class="ip-badges">
<span class="badge expected">Ping: Expected</span>
<span class="badge warning">2 Unexpected Ports</span>
</div>
</div>
<table class="service-table">
<thead>
<tr>
<th>Port</th>
<th>Protocol</th>
<th>Service</th>
<th>Product</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr class="service-row-clickable" onclick="toggleDetails('service-1')">
<td class="mono">22</td>
<td>TCP</td>
<td>ssh</td>
<td>OpenSSH</td>
<td><span class="badge expected">Expected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-1" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">OpenSSH</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">8.2p1 Ubuntu 4ubuntu0.5</span>
</div>
<div class="detail-item">
<span class="detail-label">OS Type</span>
<span class="detail-value">Linux</span>
</div>
<div class="detail-item">
<span class="detail-label">Extra Info</span>
<span class="detail-value">protocol 2.0</span>
</div>
</div>
</div>
</td>
</tr>
<tr class="service-row-clickable" onclick="toggleDetails('service-2')">
<td class="mono">80</td>
<td>TCP</td>
<td>http</td>
<td>nginx</td>
<td><span class="badge expected">Expected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-2" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">nginx</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">1.18.0 (Ubuntu)</span>
</div>
<div class="detail-item">
<span class="detail-label">Protocol</span>
<span class="detail-value">HTTP</span>
</div>
</div>
<a href="scan_report_20251114_103000_screenshots/192_168_1_10_80.png" class="screenshot-link" target="_blank">
🖼️ View Screenshot
</a>
</div>
</td>
</tr>
<tr class="service-row-clickable" onclick="toggleDetails('service-3')">
<td class="mono">443</td>
<td>TCP</td>
<td>https</td>
<td>nginx</td>
<td><span class="badge expected">Expected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-3" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">nginx</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">1.18.0</span>
</div>
<div class="detail-item">
<span class="detail-label">Protocol</span>
<span class="detail-value">HTTPS</span>
</div>
</div>
<a href="scan_report_20251114_103000_screenshots/192_168_1_10_443.png" class="screenshot-link" target="_blank">
🖼️ View Screenshot
</a>
<!-- SSL/TLS Section -->
<div class="ssl-section">
<div class="ssl-header" onclick="toggleSSL('ssl-1')">
<h4>🔒 SSL/TLS Details</h4>
<span class="ssl-toggle">Click to expand ▼</span>
</div>
<div id="ssl-1" class="ssl-content">
<!-- Certificate Info -->
<h5 style="color: #94a3b8; margin-bottom: 10px;">Certificate Information</h5>
<div class="cert-grid">
<div class="detail-item">
<span class="detail-label">Subject</span>
<span class="detail-value">CN=prod.example.com</span>
</div>
<div class="detail-item">
<span class="detail-label">Issuer</span>
<span class="detail-value">CN=Let's Encrypt Authority X3</span>
</div>
<div class="detail-item">
<span class="detail-label">Valid From</span>
<span class="detail-value">2025-01-01 00:00:00 UTC</span>
</div>
<div class="detail-item">
<span class="detail-label">Valid Until</span>
<span class="detail-value text-success">2025-04-01 23:59:59 UTC</span>
</div>
<div class="detail-item">
<span class="detail-label">Days Until Expiry</span>
<span class="detail-value text-success">138 days</span>
</div>
<div class="detail-item">
<span class="detail-label">Serial Number</span>
<span class="detail-value">03:AB:CD:EF:12:34:56:78</span>
</div>
</div>
<div class="detail-item" style="margin-bottom: 15px;">
<span class="detail-label">Subject Alternative Names (SANs)</span>
<span class="detail-value">prod.example.com, www.prod.example.com, api.example.com</span>
</div>
<!-- TLS Versions -->
<div class="tls-versions">
<h5 style="color: #94a3b8; margin-bottom: 10px;">TLS Version Support</h5>
<div class="tls-version-item unsupported">
<div class="tls-version-header">
<strong>TLS 1.0</strong>
<span class="badge info">Not Supported</span>
</div>
</div>
<div class="tls-version-item unsupported">
<div class="tls-version-header">
<strong>TLS 1.1</strong>
<span class="badge info">Not Supported</span>
</div>
</div>
<div class="tls-version-item supported">
<div class="tls-version-header">
<strong>TLS 1.2</strong>
<span class="badge good">Supported</span>
</div>
<ul class="cipher-list">
<li>TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</li>
<li>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</li>
<li>TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256</li>
</ul>
</div>
<div class="tls-version-item supported">
<div class="tls-version-header">
<strong>TLS 1.3</strong>
<span class="badge good">Supported</span>
</div>
<ul class="cipher-list">
<li>TLS_AES_256_GCM_SHA384</li>
<li>TLS_AES_128_GCM_SHA256</li>
<li>TLS_CHACHA20_POLY1305_SHA256</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</td>
</tr>
<tr class="service-row-clickable" onclick="toggleDetails('service-4')">
<td class="mono">3000</td>
<td>TCP</td>
<td>http</td>
<td>Node.js Express</td>
<td><span class="badge unexpected">Unexpected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-4" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">Node.js Express</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">4.18.2</span>
</div>
<div class="detail-item">
<span class="detail-label">Protocol</span>
<span class="detail-value">HTTP</span>
</div>
<div class="detail-item">
<span class="detail-label">⚠️ Status</span>
<span class="detail-value text-warning">Not in expected ports list</span>
</div>
</div>
<a href="scan_report_20251114_103000_screenshots/192_168_1_10_3000.png" class="screenshot-link" target="_blank">
🖼️ View Screenshot
</a>
</div>
</td>
</tr>
<tr class="service-row-clickable" onclick="toggleDetails('service-5')">
<td class="mono">8080</td>
<td>TCP</td>
<td>http-proxy</td>
<td>Tomcat</td>
<td><span class="badge unexpected">Unexpected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-5" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">Apache Tomcat</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">9.0.65</span>
</div>
<div class="detail-item">
<span class="detail-label">Protocol</span>
<span class="detail-value">HTTP</span>
</div>
<div class="detail-item">
<span class="detail-label">⚠️ Status</span>
<span class="detail-value text-warning">Not in expected ports list</span>
</div>
</div>
<a href="scan_report_20251114_103000_screenshots/192_168_1_10_8080.png" class="screenshot-link" target="_blank">
🖼️ View Screenshot
</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- IP: 192.168.1.11 -->
<div class="ip-section">
<div class="ip-header">
<h3>192.168.1.11</h3>
<div class="ip-badges">
<span class="badge expected">Ping: Expected</span>
<span class="badge good">All Ports Expected</span>
</div>
</div>
<table class="service-table">
<thead>
<tr>
<th>Port</th>
<th>Protocol</th>
<th>Service</th>
<th>Product</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr class="service-row-clickable" onclick="toggleDetails('service-6')">
<td class="mono">22</td>
<td>TCP</td>
<td>ssh</td>
<td>OpenSSH</td>
<td><span class="badge expected">Expected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-6" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">OpenSSH</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">8.9p1 Ubuntu 3ubuntu0.1</span>
</div>
<div class="detail-item">
<span class="detail-label">OS Type</span>
<span class="detail-value">Linux</span>
</div>
</div>
</div>
</td>
</tr>
<tr class="service-row-clickable" onclick="toggleDetails('service-7')">
<td class="mono">443</td>
<td>TCP</td>
<td>https</td>
<td>Apache</td>
<td><span class="badge expected">Expected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-7" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">Apache httpd</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">2.4.52</span>
</div>
<div class="detail-item">
<span class="detail-label">Protocol</span>
<span class="detail-value">HTTPS</span>
</div>
</div>
<a href="scan_report_20251114_103000_screenshots/192_168_1_11_443.png" class="screenshot-link" target="_blank">
🖼️ View Screenshot
</a>
<!-- SSL/TLS Section with Warning -->
<div class="ssl-section">
<div class="ssl-header" onclick="toggleSSL('ssl-2')">
<h4>🔒 SSL/TLS Details <span class="badge critical" style="margin-left: 10px;">Certificate Expiring Soon</span></h4>
<span class="ssl-toggle">Click to expand ▼</span>
</div>
<div id="ssl-2" class="ssl-content">
<h5 style="color: #94a3b8; margin-bottom: 10px;">Certificate Information</h5>
<div class="cert-grid">
<div class="detail-item">
<span class="detail-label">Subject</span>
<span class="detail-value">CN=backup.example.com</span>
</div>
<div class="detail-item">
<span class="detail-label">Issuer</span>
<span class="detail-value">CN=DigiCert TLS RSA SHA256 2020 CA1</span>
</div>
<div class="detail-item">
<span class="detail-label">Valid From</span>
<span class="detail-value">2024-10-15 00:00:00 UTC</span>
</div>
<div class="detail-item">
<span class="detail-label">Valid Until</span>
<span class="detail-value text-danger">2025-11-29 23:59:59 UTC</span>
</div>
<div class="detail-item">
<span class="detail-label">Days Until Expiry</span>
<span class="detail-value text-danger">15 days ⚠️</span>
</div>
<div class="detail-item">
<span class="detail-label">Serial Number</span>
<span class="detail-value">09:FE:DC:BA:98:76:54:32</span>
</div>
</div>
<div class="detail-item" style="margin-bottom: 15px;">
<span class="detail-label">Subject Alternative Names (SANs)</span>
<span class="detail-value">backup.example.com</span>
</div>
<div class="tls-versions">
<h5 style="color: #94a3b8; margin-bottom: 10px;">TLS Version Support</h5>
<div class="tls-version-item supported">
<div class="tls-version-header">
<strong>TLS 1.0</strong>
<span class="badge warning">Supported (Weak) ⚠️</span>
</div>
<ul class="cipher-list">
<li>TLS_RSA_WITH_AES_128_CBC_SHA</li>
<li>TLS_RSA_WITH_AES_256_CBC_SHA</li>
</ul>
</div>
<div class="tls-version-item supported">
<div class="tls-version-header">
<strong>TLS 1.2</strong>
<span class="badge good">Supported</span>
</div>
<ul class="cipher-list">
<li>TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</li>
<li>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</li>
</ul>
</div>
<div class="tls-version-item unsupported">
<div class="tls-version-header">
<strong>TLS 1.3</strong>
<span class="badge info">Not Supported</span>
</div>
</div>
</div>
</div>
</div>
</div>
</td>
</tr>
<tr class="service-row-clickable" onclick="toggleDetails('service-8')">
<td class="mono">53</td>
<td>UDP</td>
<td>domain</td>
<td>ISC BIND</td>
<td><span class="badge expected">Expected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-8" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">ISC BIND</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">9.16.1-Ubuntu</span>
</div>
<div class="detail-item">
<span class="detail-label">Service Type</span>
<span class="detail-value">DNS Server</span>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- IP: 192.168.1.12 - Missing Expected Service -->
<div class="ip-section">
<div class="ip-header">
<h3>192.168.1.12</h3>
<div class="ip-badges">
<span class="badge expected">Ping: Expected</span>
<span class="badge critical">1 Missing Service</span>
</div>
</div>
<table class="service-table">
<thead>
<tr>
<th>Port</th>
<th>Protocol</th>
<th>Service</th>
<th>Product</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr class="service-row-clickable" onclick="toggleDetails('service-9')">
<td class="mono">22</td>
<td>TCP</td>
<td>ssh</td>
<td>OpenSSH</td>
<td><span class="badge expected">Expected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-9" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">OpenSSH</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">8.2p1</span>
</div>
</div>
</div>
</td>
</tr>
<tr style="background-color: rgba(127, 29, 29, 0.2);">
<td class="mono">443</td>
<td>TCP</td>
<td colspan="2" class="text-danger">❌ Expected but not found</td>
<td><span class="badge missing">Missing</span></td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- Site 2: Infrastructure Services -->
<div class="site-section">
<div class="site-header">
<h2>Infrastructure Services</h2>
<div class="site-stats">
<span>2 IPs</span>
<span></span>
<span>19 Ports</span>
<span></span>
<span>5 Web Services</span>
</div>
</div>
<!-- IP: 192.168.1.50 - Proxmox Server -->
<div class="ip-section">
<div class="ip-header">
<h3>192.168.1.50</h3>
<div class="ip-badges">
<span class="badge expected">Ping: Expected</span>
<span class="badge good">All Ports Expected</span>
</div>
</div>
<table class="service-table">
<thead>
<tr>
<th>Port</th>
<th>Protocol</th>
<th>Service</th>
<th>Product</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr class="service-row-clickable" onclick="toggleDetails('service-10')">
<td class="mono">22</td>
<td>TCP</td>
<td>ssh</td>
<td>OpenSSH</td>
<td><span class="badge expected">Expected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-10" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">OpenSSH</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">8.4p1 Debian 5+deb11u1</span>
</div>
</div>
</div>
</td>
</tr>
<tr class="service-row-clickable" onclick="toggleDetails('service-11')">
<td class="mono">8006</td>
<td>TCP</td>
<td>https</td>
<td>Proxmox VE</td>
<td><span class="badge expected">Expected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-11" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">Proxmox Virtual Environment</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">7.4-1</span>
</div>
<div class="detail-item">
<span class="detail-label">Protocol</span>
<span class="detail-value">HTTPS</span>
</div>
<div class="detail-item">
<span class="detail-label">Service Type</span>
<span class="detail-value">Virtualization Management</span>
</div>
</div>
<a href="scan_report_20251114_103000_screenshots/192_168_1_50_8006.png" class="screenshot-link" target="_blank">
🖼️ View Screenshot
</a>
<!-- SSL/TLS Section - Self-Signed -->
<div class="ssl-section">
<div class="ssl-header" onclick="toggleSSL('ssl-3')">
<h4>🔒 SSL/TLS Details <span class="badge warning" style="margin-left: 10px;">Self-Signed Certificate</span></h4>
<span class="ssl-toggle">Click to expand ▼</span>
</div>
<div id="ssl-3" class="ssl-content">
<h5 style="color: #94a3b8; margin-bottom: 10px;">Certificate Information</h5>
<div class="cert-grid">
<div class="detail-item">
<span class="detail-label">Subject</span>
<span class="detail-value">CN=proxmox.local</span>
</div>
<div class="detail-item">
<span class="detail-label">Issuer</span>
<span class="detail-value text-warning">CN=proxmox.local (Self-Signed)</span>
</div>
<div class="detail-item">
<span class="detail-label">Valid From</span>
<span class="detail-value">2024-01-10 12:00:00 UTC</span>
</div>
<div class="detail-item">
<span class="detail-label">Valid Until</span>
<span class="detail-value">2034-01-08 12:00:00 UTC</span>
</div>
<div class="detail-item">
<span class="detail-label">Days Until Expiry</span>
<span class="detail-value text-success">3342 days</span>
</div>
<div class="detail-item">
<span class="detail-label">Serial Number</span>
<span class="detail-value">01:23:45:67:89:AB:CD:EF</span>
</div>
</div>
<div class="tls-versions">
<h5 style="color: #94a3b8; margin-bottom: 10px;">TLS Version Support</h5>
<div class="tls-version-item unsupported">
<div class="tls-version-header">
<strong>TLS 1.0</strong>
<span class="badge info">Not Supported</span>
</div>
</div>
<div class="tls-version-item unsupported">
<div class="tls-version-header">
<strong>TLS 1.1</strong>
<span class="badge info">Not Supported</span>
</div>
</div>
<div class="tls-version-item supported">
<div class="tls-version-header">
<strong>TLS 1.2</strong>
<span class="badge good">Supported</span>
</div>
<ul class="cipher-list">
<li>TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</li>
<li>TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256</li>
</ul>
</div>
<div class="tls-version-item supported">
<div class="tls-version-header">
<strong>TLS 1.3</strong>
<span class="badge good">Supported</span>
</div>
<ul class="cipher-list">
<li>TLS_AES_256_GCM_SHA384</li>
<li>TLS_CHACHA20_POLY1305_SHA256</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- IP: 192.168.1.51 - Database Server -->
<div class="ip-section">
<div class="ip-header">
<h3>192.168.1.51</h3>
<div class="ip-badges">
<span class="badge expected">Ping: Expected</span>
<span class="badge good">All Ports Expected</span>
</div>
</div>
<table class="service-table">
<thead>
<tr>
<th>Port</th>
<th>Protocol</th>
<th>Service</th>
<th>Product</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr class="service-row-clickable" onclick="toggleDetails('service-12')">
<td class="mono">22</td>
<td>TCP</td>
<td>ssh</td>
<td>OpenSSH</td>
<td><span class="badge expected">Expected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-12" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">OpenSSH</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">8.9p1 Ubuntu 3ubuntu0.6</span>
</div>
</div>
</div>
</td>
</tr>
<tr class="service-row-clickable" onclick="toggleDetails('service-13')">
<td class="mono">5432</td>
<td>TCP</td>
<td>postgresql</td>
<td>PostgreSQL</td>
<td><span class="badge expected">Expected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-13" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">PostgreSQL DB</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">14.7</span>
</div>
<div class="detail-item">
<span class="detail-label">Extra Info</span>
<span class="detail-value">Debian 14.7-1.pgdg110+1</span>
</div>
<div class="detail-item">
<span class="detail-label">OS Type</span>
<span class="detail-value">Linux</span>
</div>
</div>
</div>
</td>
</tr>
<tr class="service-row-clickable" onclick="toggleDetails('service-14')">
<td class="mono">6379</td>
<td>TCP</td>
<td>redis</td>
<td>Redis</td>
<td><span class="badge expected">Expected</span></td>
</tr>
<tr>
<td colspan="5">
<div id="service-14" class="service-details">
<div class="details-grid">
<div class="detail-item">
<span class="detail-label">Product</span>
<span class="detail-value">Redis key-value store</span>
</div>
<div class="detail-item">
<span class="detail-label">Version</span>
<span class="detail-value">7.0.8</span>
</div>
<div class="detail-item">
<span class="detail-label">Extra Info</span>
<span class="detail-value">64-bit</span>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<script>
function toggleDetails(id) {
const details = document.getElementById(id);
const row = event.currentTarget;
if (details.classList.contains('show')) {
details.classList.remove('show');
row.classList.remove('expanded');
} else {
details.classList.add('show');
row.classList.add('expanded');
}
}
function toggleSSL(id) {
const sslContent = document.getElementById(id);
const header = event.currentTarget;
const toggle = header.querySelector('.ssl-toggle');
if (sslContent.classList.contains('show')) {
sslContent.classList.remove('show');
toggle.textContent = 'Click to expand ▼';
} else {
sslContent.classList.add('show');
toggle.textContent = 'Click to collapse ▲';
}
event.stopPropagation();
}
</script>
</body>
</html>