WebShield is a developer-first web security scanner. Point it at any website and get:
- A security score (0โ100) and letter grade (A+ to F)
- 78 parallel scan modules covering every OWASP Top 10:2025 category
- Code-level fix examples for every finding โ not just "you have XSS", but here's the exact vulnerable line and the safe version
- Auto-crawling โ discovers injectable URLs automatically, no manual param setup
- HTML + JSON + SARIF reports
- Default credential testing on 60+ real apps
- WAF evasion techniques to find bypasses
- CVE fingerprinting for 10+ critical vulnerabilities
v1.8.0 โ 78 modules. New: default credential testing, exposed panel detection, WAF evasion, OpenAPI/Swagger endpoint testing, blind XXE, source code disclosure, 403 bypass, PII detection, Spring Actuator, HTTP parameter pollution, CVE checks, WebSocket security.
git clone https://github.com/AKIB473/webshield.git
cd webshield && pip install -e .
webshield scan https://yoursite.comWebShield ships with a deliberately vulnerable Flask app that exercises every module:
# Terminal 1 โ run the vulnerable demo app
python3 demo/app.py
# โ http://localhost:5000
# Terminal 2 โ scan it
webshield scan http://localhost:5000 --output report.html --json results.jsonDemo scan results (verified):
Score: 0/100 Grade: F | 100+ findings | 25+ CRITICAL | ~12s
๐ด CRITICAL โ SQL injection, SSTI RCE, OS command injection, JWT alg:none,
heap dump exposed, PII data (SSN/CC/IBAN), .git exposed,
default credentials (admin/admin), NoSQL auth bypass...
๐ HIGH โ Reflected XSS, DOM XSS, IDOR, CORS, source maps, actuator/env,
OpenAPI spec with unauth endpoints, websocket downgrade...
๐ก MEDIUM โ CSRF, GraphQL introspection, cache deception, HPP, evasion...
๐ต LOW โ Cookie flags, info disclosure, SameSite missing...
webshield scan https://example.comwebshield scan https://example.com \
--output report.html \
--json results.json \
--sarif results.sarif \
--timeout 15webshield scan https://example.com \
--auth-cookie "session=abc123" \
--auth-header "Authorization=Bearer eyJ..."webshield scan https://example.com \
--modules sql_injection,xss_detection,default_credentials,cve_checkswebshield scan https://example.com --ci --fail-on high
echo $? # 0 = pass, 1 = HIGH+ findings foundwebshield scan https://example.com --json before.json
# ... deploy your fixes ...
webshield scan https://example.com --json after.json
webshield compare before.json after.jsonwebshield list-modules# From source (recommended)
git clone https://github.com/AKIB473/webshield.git
cd webshield && pip install -e .
# Directly from GitHub
pip install git+https://github.com/AKIB473/webshield.git
# Development (tests included)
pip install -e ".[dev]"Requirements: Python 3.9+ ยท No external tools needed
WebShield runs on Android via Termux โ all modules work, with graceful fallback for raw-socket features:
# Install Termux from F-Droid (not Play Store)
pkg update && pkg upgrade
pkg install python openssl-tool
# Install WebShield (pure Python โ no compilation needed)
pip install webshield
# Scan any site
webshield scan https://example.com
# Full scan with reports
webshield scan https://example.com \
--output report.html \
--json results.jsonWhat works on Termux (all 78 modules):
- โ All 78 scan modules run
- โ HTML + JSON + SARIF reports
- โ All injection, header, auth, CVE, disclosure modules
- โ Raw socket modules use smart fallback (timing-based detection)
โ ๏ธ request_smugglingโ timing probe instead of raw socket (root not needed)โ ๏ธ websocket_securityโ HTTP-based checks (CSWSH test skipped, run on PC for full)โ ๏ธ HTTP/2: runpip install h2for optional HTTP/2 support
PC/Linux with HTTP/2:
pip install "webshield[http2]"| Feature | WebShield | Nikto | OWASP ZAP | Others |
|---|---|---|---|---|
| Security Score (0โ100) | โ | โ | โ | โ |
| Letter Grade (A+ to F) | โ | โ | โ | โ |
| Code-level fix examples | โ | โ | โ | โ |
| Auto URL crawler | โ | โ | โ | โ |
| Default credential testing | โ | โ | โ | โ |
| WAF evasion techniques | โ | โ | โ | โ |
| OpenAPI spec import + testing | โ | โ | โ | โ |
| Source code disclosure (.git) | โ | โ | โ | โ |
| 403 bypass detection | โ | โ | โ | โ |
| PII detection (SSN, CC, IBAN) | โ | โ | โ | โ |
| Spring Actuator exposure | โ | โ | โ | โ |
| HTTP parameter pollution | โ | โ | โ | โ |
| CVE fingerprinting (10+ CVEs) | โ | โ | โ | โ |
| WebSocket security | โ | โ | โ | โ |
| SSTI โ RCE detection | โ | โ | โ | โ |
| DOM XSS (JS static analysis) | โ | โ | โ | โ |
| Web cache deception | โ | โ | โ | โ |
| Business logic flaws | โ | โ | โ | โ |
| NoSQL injection | โ | โ | โ | โ |
| Insecure deserialization | โ | โ | โ | โ |
| JWT deep analysis | โ | โ | โ | โ |
| Supply chain CVE check | โ | โ | โ | โ |
| IDOR / Broken Access Control | โ | โ | Partial | โ |
| 2025 secret patterns | โ | โ | โ | โ |
| Authenticated scanning | โ | โ | โ | โ |
| SARIF (GitHub Security tab) | โ | โ | โ | โ |
| Async parallel scanning | โ | โ | โ | โ |
| Dark mode HTML report | โ | โ | โ | โ |
Single pip install |
โ | โ | โ | โ |
| Module | What it detects | Max CVSS |
|---|---|---|
sql_injection |
Error-based, boolean-blind, time-based, UNION โ MySQL/PG/MSSQL/Oracle/SQLite | 9.8 |
xss_detection |
Reflected XSS โ 30+ payloads, WAF bypass, context-aware | 8.2 |
ssti |
SSTI โ RCE โ Jinja2, Twig, Freemarker, Velocity, Mako, ERB | 9.8 |
cmd_injection |
OS command injection โ error-based + time-based blind | 9.8 |
lfi |
LFI/Path Traversal โ 31 payloads: PHP wrappers, null bytes, /proc/self |
9.8 |
ssrf |
SSRF โ AWS/GCP/Azure metadata, localhost bypass, IPv6 | 9.8 |
xxe |
XXE โ XML external entity injection | 9.8 |
xxe_oob |
Blind/OOB XXE โ error-based, parameter entities, JSON-to-XML | 9.8 |
nosql_injection |
NoSQL injection โ MongoDB $ne/$regex/$where auth bypass |
9.1 |
log4shell |
Log4Shell (CVE-2021-44228), Shellshock, critical CVE detection | 10.0 |
proto_pollution |
JavaScript prototype pollution via URL parameters | 6.5 |
crlf_injection |
CRLF / HTTP response splitting | 6.1 |
evasion_scan |
WAF bypass โ double-encoding, comment injection, case variation, HPP, null bytes | 9.8 |
| Module | What it detects | Max CVSS |
|---|---|---|
idor_check |
IDOR โ sequential IDs, query param enumeration, unauth user lists | 9.1 |
business_logic |
Username enumeration, mass assignment, workflow bypass | 8.8 |
auth_hardening |
No rate limiting, MFA absence, default credentials, weak password reset | 9.8 |
http_header_injection |
Host header poisoning, X-Original-URL bypass | 8.1 |
bypass_403 |
HTTP verb tampering, URL path tricks, X-Original-URL/X-Rewrite-URL bypass | 7.5 |
| Module | What it detects | Max CVSS |
|---|---|---|
jwt |
alg:none, weak secret brute-force, kid SQLi/path-traversal, missing exp |
9.8 |
cookies |
Missing Secure/HttpOnly/SameSite, low-entropy session IDs | 7.5 |
csrf_check |
Missing CSRF tokens, SameSite enforcement, state-changing GET | 6.5 |
rate_limit |
Brute-force protection, login throttling | 7.5 |
default_credentials |
60+ apps โ Jenkins, Grafana, WordPress, Portainer, Gitea, Kibana, phpMyAdmin, Tomcat, Drupal, Rancher, Traefik | 9.8 |
| Module | What it detects | Max CVSS |
|---|---|---|
headers |
HSTS, CSP, X-Frame-Options, X-Content-Type-Options + info-leaking headers | 7.5 |
csp |
Full CSP analysis โ unsafe-inline, unsafe-eval, wildcards |
6.1 |
clickjacking |
X-Frame-Options, CSP frame-ancestors |
6.1 |
cors |
Wildcard, reflected origin + credentials, null origin, pre-domain bypass | 9.3 |
ssl_tls |
Certificate validity, TLS version, weak ciphers, self-signed | 9.8 |
http_methods |
Dangerous methods: PUT, DELETE, TRACE, CONNECT | 5.3 |
sri_check |
Missing integrity= on CDN scripts/styles |
6.1 |
mixed_content |
HTTP resources on HTTPS pages | 4.3 |
http_parameter_pollution |
Duplicate params, array notation, WAF bypass, business logic abuse | 7.5 |
| Module | What it detects | Max CVSS |
|---|---|---|
secret_leak |
API keys in source โ AWS, GitHub, OpenAI, Anthropic, Stripe, Slack + more | 9.8 |
info_leak |
.env, .git, SQL dumps, backups โ 24 sensitive paths |
9.8 |
source_code_disclosure |
.git/.svn/.hg repos, backup files (.bak, .php~), source maps, composer.json |
9.8 |
pii_detection |
SSN, credit cards (Luhn-verified), bulk email dumps, IBAN, UK National Insurance | 9.8 |
sensitive_paths |
Admin panels, phpMyAdmin, Spring Actuator, debug UIs โ 36 paths | 5.3 |
dir_listing |
Directory listing โ 40 paths including backups, logs, config | 6.5 |
tech_fingerprint |
25 tech patterns + 13 CVE version checks | varies |
cloud_exposure |
AWS/GCP/Azure metadata endpoint exposure, S3 buckets | 7.5 |
malware_indicators |
Suspicious scripts, iframes, known malware patterns | 9.8 |
api_exposure |
Swagger/OpenAPI specs, GraphiQL IDE, admin APIs, Prometheus metrics | 7.5 |
spring_actuator |
/actuator/heapdump, /actuator/env, /actuator/shutdown + Quarkus, Laravel Telescope, Django debug |
9.8 |
exposed_panels |
30 panels โ Elasticsearch, Prometheus, Grafana, Mongo Express, HAProxy, Nginx/Apache status, .env | 9.8 |
openapi_scan |
OpenAPI/Swagger spec discovery โ tests every endpoint for unauth access, sensitive data, SQLi | 9.8 |
| Module | What it detects | Max CVSS |
|---|---|---|
dns_email |
SPF, DMARC, CAA records โ email spoofing protection | 5.3 |
subdomain_takeover |
CNAME โ unclaimed services (GitHub Pages, Heroku, S3, Netlifyโฆ) | 8.1 |
waf_detect |
15+ WAF signatures (Cloudflare, AWS, Akamai, ModSecurity, Sucuriโฆ) | โ |
open_redirect |
22 redirect parameter names tested | 6.1 |
request_smuggling |
CL.TE and TE.CL via raw socket timing | 8.1 |
broken_links |
Dead links and unreachable resources | โ |
security_txt |
RFC 9116 security.txt compliance | โ |
websocket_security |
CSWSH, ws:// downgrade on HTTPS, Next.js HMR in prod |
8.1 |
cve_checks |
Text4Shell, Confluence OGNL, Exchange ProxyShell, Grafana path traversal, Drupalgeddon2, Apache Struts, Fortinet auth bypass, GitLab, VMware vCenter, Citrix Bleed | 9.8 |
| Module | What it detects | Max CVSS |
|---|---|---|
supply_chain |
CVE check for package.json/requirements.txt โ 30+ vulnerable packages |
9.8 |
graphql |
Introspection, batch DoS, depth DoS, alias flooding, GET-based CSRF | 7.5 |
| Module | What it detects | Max CVSS |
|---|---|---|
web_cache_deception |
Omer Gil attack + James Kettle cache poisoning (unkeyed headers) | 9.0 |
file_upload |
Webshell detection, SVG-stored-XSS, dangerous MIME types | 9.8 |
dom_xss |
DOM XSS via JS static analysis โ location.hashโinnerHTML, jQuery sourceโsink |
8.8 |
insecure_deserialization |
Java serialization magic bytes, PHP serialize cookies, .NET ViewState | 9.8 |
Scanned against ginandjuice.shop (PortSwigger's intentionally vulnerable shop):
Score: 0/100 F | 21 findings | 23s
๐ HIGH
โ
X-Original-URL bypasses /admin (403 โ 200)
โ
Public AWS S3 bucket enumerable
โ
IDOR via ?id= query parameters
โ
No rate limiting on /login
โ
Missing HSTS, CSP
๐ก MEDIUM
โ
Web cache deception on /my-account
โ
CORS misconfiguration
โ
OpenAPI spec exposed
๐ก๏ธ WebShield v1.7.0 scanning https://example.com
๐ Crawling for injectable parameters...
๐ Found 8 URL(s) with parameters โ running injection modules
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Scan Summary โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Target: https://example.com โ
โ Score: 12/100 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ Grade: F โ
โ Time: 11.2s | Modules: 78 | Findings: 44 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
๐ด CRITICAL (6)
โ Default Credentials Accepted โ Jenkins (admin/admin)
CVSS: 9.8
โ Git Repository Exposed (/.git/HEAD)
Entire source code downloadable via git clone
CVSS: 9.8
โ PII Leaked: Social Security Numbers (5 found)
CVSS: 9.8
โ Spring Boot Environment Exposed (/actuator/env)
DB_PASSWORD, JWT_SECRET, AWS_ACCESS_KEY all in plaintext
CVSS: 9.8
โ SQL Injection (WAF Bypass via comment injection) โ param: id
CVSS: 9.8
โ XXE โ Local File Read (/etc/passwd)
CVSS: 9.8
name: WebShield Security Audit
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Run WebShield
run: |
pip install git+https://github.com/AKIB473/webshield.git
webshield scan ${{ vars.SITE_URL }} \
--ci --fail-on high \
--json results.json \
--output report.html \
--sarif results.sarif
- name: Upload to GitHub Security tab
uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: results.sarif
- name: Upload Report
uses: actions/upload-artifact@v4
if: always()
with:
name: webshield-report
path: "results.json\nreport.html"from webshield.core.scanner import run_scan
from webshield.reporter.html_report import save_html
from webshield.reporter.sarif import save_sarif
import json
# Run full scan โ auto-crawls for injectable URLs
result = run_scan("https://example.com", timeout=15)
print(f"Score: {result.score}/100 Grade: {result.grade}")
print(f"Critical: {len(result.by_severity('CRITICAL'))}")
print(f"Scan time: {result.scan_duration}s")
for f in result.findings:
print(f"[{f.severity.value}] {f.title}")
if f.code_fix:
print(f" Fix: {f.code_fix[:100]}")
# Export all report formats
save_html(result, "report.html")
save_sarif(result, "results.sarif")
with open("results.json", "w") as fp:
json.dump(result.to_dict(), fp, indent=2)- ๐ Default Credentials โ tests 60+ apps (Jenkins, Grafana, WordPress, Portainer, Gitea, Kibana, phpMyAdmin, Tomcat, Drupal, Rancher, Traefik)
- ๐ Exposed Panels โ 30 admin/monitoring panels (Elasticsearch, Prometheus, Grafana, Mongo Express, HAProxy, Nginx status, .env, pgAdmin...)
- ๐ WAF Evasion โ double-encoding, comment injection, case variation, null bytes, HPP bypass
- ๐ OpenAPI Scan โ discovers and tests all endpoints from Swagger/OpenAPI specs
- ๐ XXE OOB โ blind/OOB XXE with error-based fallback and parameter entity detection
- ๐ Module count: 55 โ 60 | Tests: 64 โ 96
- ๐ Source Code Disclosure โ
.git/.svn/.hgrepos, backup files, source maps, config files - ๐ 403 Bypass โ verb tampering, URL manipulation,
X-Original-URL/X-Rewrite-URLheader bypass - ๐ PII Detection โ SSN, credit cards (Luhn-verified), bulk email dumps, IBAN, UK NI numbers
- ๐ Spring Actuator โ
/actuator/heapdump,/env,/shutdown+ Laravel Telescope, Quarkus dev, Django debug - ๐ HTTP Parameter Pollution โ duplicate params, array notation, WAF bypass
- ๐ CVE Checks โ Text4Shell, Confluence, Exchange ProxyShell, Grafana, Drupalgeddon2, Struts, Fortinet, GitLab, VMware, Citrix Bleed
- ๐ WebSocket Security โ CSWSH origin bypass,
ws://downgrade, Next.js HMR exposure - ๐ Module count: 48 โ 55
- ๐ URL Crawler โ auto-discovers injectable endpoints before running injection modules
- ๐ Demo App (
demo/app.py) โ deliberately vulnerable Flask app, one vuln per module - โ Verified: 23/23 key module coverage on demo app (88 findings, 23 CRITICAL)
- ๐ SSTI, Web Cache Deception, File Upload Security, DOM XSS, Business Logic
- ๐ Module count: 43 โ 48
- ๐ OS Command Injection, NoSQL Injection, Host Header Injection, Insecure Deserialization
- ๐
--auth-cookie/--auth-header,webshield compare - ๐ Module count: 39 โ 43
- ๐ IDOR, API Exposure, Directory Listing, Auth Hardening
- ๐ Module count: 35 โ 39 | Full OWASP Top 10:2025 coverage
- ๐ SQLi, XSS, LFI, SSRF, XXE, Log4Shell, Secret Leak, CSRF, Cloud Exposure, Malware, Rate Limit, Broken Links, security.txt, CRLF, Proto Pollution
- โก Async parallel scanning | ๐ SARIF output
- ๐ Module count: 20 โ 35
- ๐ Initial release โ 17 modules, SSL/TLS, headers, CORS, CSP, JWT, cookies, WAF, GraphQL, supply chain CVEs
WebShield is for owners and authorized testers of websites only.
- โ Your own sites
- โ Sites you have written permission to test
- โ Unauthorized scanning is illegal and unethical
MIT โ see LICENSE
AKIBUZZAMAN AKIB โ @AKIB473
โญ If WebShield helped you, star it โ it helps others find it!