A comprehensive web application security scanner that helps identify common vulnerabilities in websites. This tool performs automated security assessments to detect issues like XSS, SQL Injection, CSRF, insecure headers, and more.
- Comprehensive Vulnerability Detection: Scans for 10+ types of common web vulnerabilities
- Detailed Reporting: Provides severity ratings and remediation advice for each vulnerability
- Real-time Progress Tracking: Monitor scan progress in real-time
- Asynchronous Processing: Background processing of scans using Celery
- Modern Tech Stack: Built with Django, React, and Celery
- Cross-Site Scripting (XSS)
- SQL Injection
- Cross-Site Request Forgery (CSRF)
- Missing Security Headers
- SSL/TLS Misconfigurations
- Clickjacking Vulnerabilities
- CORS Misconfigurations
- Sensitive Data Exposure
- Outdated Software/CMS Detection
- Open Redirect Vulnerabilities
- Insecure Cookie Settings
- Server Information Disclosure
- Backend: Django, Django REST Framework
- Frontend: React, Next JS, Shadcn
- Task Queue: Celery with Redis
- Database: PostgreSQL
- Security Tools: OWASP ZAP integration
- Python 3.8+
- Node.js 14+
- Redis
- PostgreSQL
- pip and npm
-
Clone the repository:
git clone https://github.com/shamscsediu/vsp.git cd vsp
-
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate
-
Install dependencies:
cd backend pip install -r requirements.txt
-
Configure environment variables:
- Copy the example .env file:
cp .env.example .env
- Edit the .env file with your database credentials and other settings
- Copy the example .env file:
-
Set up the database:
python manage.py migrate
-
Create a superuser (optional):
python manage.py createsuperuser
- Install dependencies:
cd ../frontend npm install
redis-server
cd backend
celery -A config worker --loglevel=info
### Start Backend Server
```bash
cd backend
python manage.py runserver
cd frontend
npm start
The application should now be running at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000/api/
- Admin interface: http://localhost:8000/admin/
The backend uses environment variables for configuration. These are stored in a .env file in the backend directory. Here are the key variables: Variable Description Default DEBUG
Django debug mode
False SECRET_KEY
Django secret key
None ALLOWED_HOSTS
Comma-separated list of allowed hosts
localhost,127.0.0.1 DB_ENGINE
Database engine
django.db.backends.sqlite3 DB_NAME
Database name
db.sqlite3 DB_USER
Database user
None DB_PASSWORD
Database password
None DB_HOST
Database host
None DB_PORT
Database port
None REDIS_HOST
Redis host
localhost REDIS_PORT
Redis port
6379 REDIS_DB
Redis database number
0 CELERY_BROKER_URL
Celery broker URL
redis://localhost:6379/0 CELERY_RESULT_BACKEND
Celery result backend
redis://localhost:6379/0 CORS_ALLOWED_ORIGINS
Comma-separated list of allowed CORS origins
- Navigate to the web interface at http://localhost:3000
- Enter the URL of the website you want to scan
- Click "Start Scan" and wait for the results
- View detailed vulnerability information and remediation advice
- POST /api/scanner/start-scan/ : Start a new scan
- GET /api/scanner/scan-status/<scan_id>/ : Get scan status and results
- GET /api/scanner/vulnerability/<scan_id>/<vuln_id>/ : Get detailed vulnerability information
- POST /api/scanner/rescan/<scan_id>/ : Start a new scan of a previously scanned URL
- GET /api/scanner/compare/<scan_id1>/<scan_id2>/ : Compare results between two scans
vsp/
├── backend/
│ ├── config/ # Django project settings
│ ├── scanner/ # Main scanner application
│ │ ├── models.py # Database models
│ │ ├── serializers.py # API serializers
│ │ ├── services.py # Scanner implementation
│ │ ├── tasks.py # Celery tasks
│ │ ├── urls.py # API endpoints
│ │ └── views.py # API views
│ ├── .env # Environment variables
│ └── requirements.txt # Python dependencies
├── frontend/
│ ├── public/ # Static files
│ ├── src/ # React source code
│ │ ├── components/ # UI components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API services
│ │ └── App.js # Main application
│ └── package.json # Node.js dependencies
└── README.md # This file
- This tool is designed for security professionals and website owners to test their own websites
- Always obtain proper authorization before scanning any website
- Some vulnerability checks may trigger security systems or cause unexpected behavior
- Use with caution on production systems
-
Redis Connection Error :
- Ensure Redis server is running
- Check Redis connection settings in .env file
-
Celery Worker Not Starting :
- Verify Redis is running
- Check for missing Python dependencies
- Ensure the virtual environment is activated
-
Database Connection Issues :
- Verify PostgreSQL is running
- Check database credentials in .env file
- Ensure the database exists
-
Scan Failures :
- Check network connectivity to target website
- Verify the URL format is correct
- Some websites may block automated scanning tools
- OWASP for security best practices and guidelines
- Django for the backend framework
- React for the frontend framework
- Celery for task queue management
This tool is meant for educational purposes and authorized security testing only. Always obtain proper permission before scanning any website. The developers are not responsible for any misuse of this tool.