IT ITBrainHub Security Scan
🛡️ FREE NETWORK & WEB SECURITY SCANNER

Security Scan

Automated Endpoint, Vulnerability & OSINT Intelligence

Scan your web endpoints for SQL Injection, Reflected XSS, Path Traversal, missing HTTP Security Headers, and Cookie vulnerabilities. Powered by ITBrainHub's NetAudit security engine.

🔌

IP & Port Scan

Direct TCP port probes across IP ranges & domains.

🔐

SQL Injection

Probes parameters against DB error signatures.

⚡

XSS Detection

Canary reflection test for non-escaped script vectors.

📂

Path Traversal

Detects unauthorized local file inclusion.

🔒

HTTP Headers

Audits HSTS, CSP, X-Frame & issues A+ to F grade.

🍪

Cookie Security

Audits HttpOnly, Secure, & SameSite flags.

🛡️

Get Free Access to Security Scan

Enter your work details to receive an instant verification code and unlock the full security scanner.

⚠️ By requesting access, you confirm you will only scan assets you have explicit authorization to test.

`; printWindow.document.write(html); printWindow.document.close(); const menu = document.getElementById('export-menu-dropdown'); if (menu) menu.classList.add('hidden'); } function renderPortScanReport(data) { const loading = document.getElementById('scan-loading'); const report = document.getElementById('scan-report'); loading.classList.add('hidden'); report.classList.remove('hidden'); const isMulti = !!data.is_multi_target; const exposedPorts = data.exposed_ports || []; const listings = data.listings || []; const activeListings = listings.filter(l => l.listed); const isBlacklisted = data.reputation_status === 'BLACKLISTED' || activeListings.length > 0; const repBadgeClass = isBlacklisted ? 'bg-red-50 text-red-700 border border-red-200' : 'bg-emerald-50 text-emerald-700 border border-emerald-200'; const statusColor = data.status === 'FAIL' ? 'text-red-700 bg-red-100 border-red-200' : (data.status === 'WARNING' ? 'text-amber-700 bg-amber-100 border-amber-200' : 'text-emerald-700 bg-emerald-100 border-emerald-200'); let html = `
Public IP & Port Audit Report

Target: ${data.target || data.public_ip}

Scan Timestamp: ${new Date(data.timestamp).toLocaleString()} · ${data.summary?.scanned_ports_per_host || 21} Checked Service Ports

AUDIT ${data.status}
Reputation Status
${isBlacklisted ? '🚨 BLACKLISTED' : '✅ CLEAN'}

DNSBL blacklist check

Audited Target IP
${data.public_ip}

External WAN gateway (${data.geoip?.isp || 'ISP'}${data.geoip?.country ? `, ${data.geoip.country}` : ''})

Exposed WAN Ports
${exposedPorts.length}

Responding ports scanned remotely

🚨 Reputation Listings (Checked Databases)
${activeListings.length === 0 ? `
✅
No Listings Found

Target IP is not currently blacklisted by major databases.

` : `
${activeListings.map(b => `
🚨 ${b.name} ${b.blacklist}

${b.reason || b.description}

LISTED
`).join('')}
`}
View all ${listings.length} DNSBL databases checked
${listings.map(db => `
${db.name}
${db.description}
${db.listed ? 'LISTED' : 'CLEAN'}
`).join('')}
🔌 Remote Exposed Port Scan

The following ports responded to TCP connection requests on ${data.public_ip}:

${exposedPorts.length === 0 ? `
✅
No Public Ports Exposed

All audited standard ports are closed or filtered by perimeter firewall.

` : `
${exposedPorts.map((p, idx) => `
▶ Port ${p.port}/${p.protocol || 'tcp'} — open (${p.service})
${p.severity}
⚙️ App/Daemon: ${p.app_name || p.version || p.http?.server || p.banner || 'Unknown Daemon'} 💻 Target OS: ${p.detected_os || 'Linux / Unix (Remote Target)'}
Target IP Port State Service Application / Daemon Target OS
${data.public_ip} ${p.port}/tcp open ${p.tls ? 'ssl/http' : (p.http ? 'http' : (p.service?.split('(')[0]?.trim() || 'unknown'))} ${p.app_name || p.version || p.http?.server || p.banner || '—'} ${p.detected_os || 'Linux / Unix'}
${p.tls ? `
🔐 Certificate Info
${p.tls.version ? `
TLS Version: ${p.tls.version}
` : ''} ${p.tls.cipher ? `
Cipher Suite: ${p.tls.cipher}
` : ''} ${p.tls.cert_issuer ? `
Issuer (CA): ${p.tls.cert_issuer}
` : ''} ${p.tls.cert_subject ? `
Issued To: ${p.tls.cert_subject}
` : ''}
` : ''} ${p.http && (p.http.status || p.http.server || p.http.x_powered_by) ? `
🌐 HTTP Response
${p.http.status ? `
Status: ${p.http.status}
` : ''} ${p.http.server ? `
Server: ${p.http.server}
` : ''} ${p.http.x_powered_by ? `
Powered-By: ${p.http.x_powered_by}
` : ''}
` : ''}

Risk: ${p.risk}

⚠️ Attack Vector & Hacker Impact:

${p.impact}

`).join('')}
`}
💡 Audit Remediation Guide
Potential Causes:

If your IP is listed or critical ports are exposed, it is usually because:

  1. You are auditing a dynamic residential IP range. Most blacklists block these by default to prevent unauthorized home-based mail servers.
  2. A device on the audited network is infected with malware or joining a botnet emitting spam.
  3. Insecure port forwarding or DMZ is active on the router, exposing internal listening ports to the public Internet.
Recommended Solutions:

To delist the IP and secure exposed ports:

  1. Visit the blacklist provider's lookup tool (e.g., spamhaus.org/lookup) and request removal.
  2. Clean/scan all local devices on the target network for malware or unauthorized outbound SMTP traffic.
  3. Disable UPnP and port forwarding on the router for any services that do not need to be accessible from the Internet.
  4. Update binding settings of local services to bind to localhost (127.0.0.1) instead of 0.0.0.0.
`; report.innerHTML = html; } // 4. Web Security Scan Execution async function handleWebScan() { const urlInput = document.getElementById('ws-url'); const authConfirm = document.getElementById('ws-auth-confirm'); const errorDiv = document.getElementById('ws-error'); const scanBtn = document.getElementById('ws-scan-btn'); const targetUrl = urlInput?.value.trim(); if (!targetUrl) { errorDiv.innerText = 'Please enter a target URL (e.g. https://example.com/page?id=1).'; errorDiv.classList.remove('hidden'); return; } if (!authConfirm?.checked) { errorDiv.innerText = 'You must confirm authorization before initiating security scanning.'; errorDiv.classList.remove('hidden'); return; } errorDiv.classList.add('hidden'); const modules = []; if (document.getElementById('cb-sqli')?.checked) modules.push('sqli'); if (document.getElementById('cb-xss')?.checked) modules.push('xss'); if (document.getElementById('cb-traversal')?.checked) modules.push('traversal'); if (document.getElementById('cb-headers')?.checked) modules.push('headers'); if (document.getElementById('cb-cookies')?.checked) modules.push('cookies'); showResultsLoading(); try { const res = await fetch('/api/netaudit/scan/web', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + naToken }, body: JSON.stringify({ url: targetUrl, modules }) }); const data = await res.json(); if (res.ok && data.success) { renderWebScanReport(data); } else { showResultsError(data.error || 'Web scan request failed.'); } } catch(e) { showResultsError('Communication error: Failed to reach security scanner.'); } } // 4. External OSINT Audit Execution async function handleExternalScan() { const domainInput = document.getElementById('ext-domain'); const errorDiv = document.getElementById('ext-error'); const domain = domainInput?.value.trim(); if (!domain) { errorDiv.innerText = 'Please enter a domain name (e.g. example.com).'; errorDiv.classList.remove('hidden'); return; } errorDiv.classList.add('hidden'); showResultsLoading(); try { const res = await fetch('/api/netaudit/scan/external', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + naToken }, body: JSON.stringify({ domain }) }); const data = await res.json(); if (res.ok && data.success) { renderExternalAuditReport(data); } else { showResultsError(data.error || 'External OSINT audit failed.'); } } catch(e) { showResultsError('Communication error during external audit.'); } } function showResultsLoading() { const container = document.getElementById('scan-results-container'); const loading = document.getElementById('scan-loading'); const report = document.getElementById('scan-report'); container.classList.remove('hidden'); loading.classList.remove('hidden'); report.classList.add('hidden'); container.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); } function showResultsError(msg) { const loading = document.getElementById('scan-loading'); const report = document.getElementById('scan-report'); loading.classList.add('hidden'); report.classList.remove('hidden'); report.innerHTML = `

Audit Failed

${msg}

`; } // Report Render: Web Scan function renderWebScanReport(data) { const loading = document.getElementById('scan-loading'); const report = document.getElementById('scan-report'); loading.classList.add('hidden'); report.classList.remove('hidden'); const results = data.results || {}; let html = `
Web Audit Report

${data.target}

Scan Timestamp: ${new Date(data.timestamp).toLocaleString()}

`; // Security Headers Section if (results.headers) { const h = results.headers; const gradeColor = h.grade.startsWith('A') ? 'bg-emerald-100 text-emerald-800 border-emerald-300' : h.grade === 'B' ? 'bg-blue-100 text-blue-800 border-blue-300' : h.grade === 'C' ? 'bg-yellow-100 text-yellow-800 border-yellow-300' : 'bg-red-100 text-red-800 border-red-300'; html += `
HTTP Security Headers

Server: ${h.server_banner || 'Hidden / Generic'}

${h.grade} (${h.score}/100)
${(h.findings || []).map(f => `
${f.header}: ${f.description} ${f.recommendation ? `

💡 ${f.recommendation}

` : ''}
${f.status}
`).join('')}
`; } // SQL Injection if (results.sqli) { const sq = results.sqli; html += `
SQL Injection Vulnerability Check
${sq.vulnerable ? '⚠️ VULNERABLE' : '✓ SECURE / NO LEAKS'}

Tested parameters: ${(sq.tested_params || []).join(', ')}

${sq.vulnerable ? `
${(sq.findings || []).map(f => `

Param: ${f.param} | Payload: ${f.payload}

Evidence: ${f.evidence}

`).join('')}
` : '

No database syntax leakages or error anomalies observed across test vectors.

'}
`; } // XSS Check if (results.xss) { const xs = results.xss; html += `
Reflected XSS Vulnerability Check
${xs.vulnerable ? '⚠️ VULNERABLE' : '✓ SECURE / ESCAPED'}

Tested parameters: ${(xs.tested_params || []).join(', ')}

${xs.vulnerable ? `
${(xs.findings || []).map(f => `

Param: ${f.param} | Unescaped Payload: ${f.payload}

`).join('')}
` : '

Script tags and event handlers are properly HTML-escaped.

'}
`; } // Cookies Check if (results.cookies) { const ck = results.cookies; html += `
Cookie Security Attributes
${ck.cookie_count} Cookies Discovered
${ck.cookies && ck.cookies.length > 0 ? `
${ck.cookies.map(c => `
${c.name} ${c.risk_level} RISK
HttpOnly: ${c.httponly ? '✓' : '✗'} Secure: ${c.secure ? '✓' : '✗'} SameSite: ${c.samesite || 'None'}
`).join('')}
` : '

No Set-Cookie response headers detected on target endpoint.

'}
`; } report.innerHTML = html; } // Report Render: External OSINT Audit function renderExternalAuditReport(data) { const loading = document.getElementById('scan-loading'); const report = document.getElementById('scan-report'); loading.classList.add('hidden'); report.classList.remove('hidden'); const statusBadge = data.status === 'PASS' ? 'bg-emerald-100 text-emerald-800' : data.status === 'WARNING' ? 'bg-yellow-100 text-yellow-800' : 'bg-red-100 text-red-800'; let html = `
OSINT Audit Report

${data.target}

Audit Timestamp: ${new Date(data.timestamp).toLocaleString()}

AUDIT STATUS: ${data.status}
📍 GeoIP Routing

IP: ${data.geoip?.ip || 'N/A'}

Country: ${data.geoip?.country || 'N/A'}

ISP: ${data.geoip?.isp || 'N/A'}

🔒 SSL/TLS Certificate

Status: ${data.ssl?.valid ? '✓ Valid & Trusted' : '✗ Invalid / Expired'}

Handshake: HTTP ${data.ssl?.status || 'OK'}

📨 Email Security (DNS)

SPF: ${data.dns?.SPF !== 'Not found' ? '✓ Configured' : '✗ Missing'}

DMARC: ${data.dns?.DMARC !== 'Not found' ? '✓ Configured' : '✗ Missing'}

Discovered Findings (${(data.findings || []).length})
${(data.findings || []).map(f => `
${f.item} (${f.category})

${f.impact}

${f.severity}
`).join('')}
`; report.innerHTML = html; } // ==================== ITBRAINHUB CLIENT-SIDE SECURITY & ANTI-SCRAPING SHIELD ==================== (function() { // 1. Frame-Busting: Prevent clickjacking / unauthorized embedding in foreign iframes if (window.top !== window.self) { try { window.top.location = window.self.location; } catch (e) { window.location = "about:blank"; } } // 2. Prevent right-click context menu on branding/content (allow inside interactive form inputs) document.addEventListener('contextmenu', function(e) { const tag = e.target.tagName ? e.target.tagName.toLowerCase() : ''; const isInput = tag === 'input' || tag === 'textarea' || e.target.isContentEditable; if (!isInput) { e.preventDefault(); return false; } }, false); // 3. Block DevTools scraping & source viewing keyboard shortcuts document.addEventListener('keydown', function(e) { // F12 if (e.keyCode === 123) { e.preventDefault(); return false; } // Ctrl+Shift+I / Cmd+Option+I (Inspect Element) // Ctrl+Shift+J / Cmd+Option+J (Console) // Ctrl+Shift+C / Cmd+Option+C (Element Selector) if ((e.ctrlKey || e.metaKey) && e.shiftKey && (e.keyCode === 73 || e.keyCode === 74 || e.keyCode === 67)) { e.preventDefault(); return false; } // Ctrl+U / Cmd+Option+U (View Page Source) if ((e.ctrlKey || (e.metaKey && e.altKey)) && (e.keyCode === 85 || e.key === 'u' || e.key === 'U')) { e.preventDefault(); return false; } // Ctrl+S / Cmd+S (Save Page) if ((e.ctrlKey || e.metaKey) && (e.keyCode === 83 || e.key === 's' || e.key === 'S')) { e.preventDefault(); return false; } }, false); // 4. Disable dragging of images & media assets document.addEventListener('dragstart', function(e) { if (e.target.tagName && e.target.tagName.toLowerCase() === 'img') { e.preventDefault(); return false; } }, false); // 5. Console Security Watermark Warning console.log( "%c🛑 ITBrainHub Security Notice%c\\nThis security scanner engine and client portal are proprietary intellectual property of ITBrainHub.\\nUnauthorized scraping, reproduction, or automated reverse-engineering is strictly prohibited.", "color: #059669; font-size: 18px; font-weight: 800; padding: 4px 0;", "color: #334155; font-size: 12px; font-weight: 500;" ); })();