
A Python-based security scanner for identifying the CVE-2025-31324 vulnerability in SAP Visual Composer systems, and detecting known Indicators of Compromise (IOCs) such as malicious .jsp.
A Python-based security scanner for identifying the CVE-2025-31324 vulnerability in SAP Visual Composer systems, and detecting known Indicators of Compromise (IOCs) such as malicious .jsp.
.jsp files (webshells)requests library (installed via requirements.txt)# 1. Clone the repository
git clone https://github.com/youruser/CVE-2025-31324.git
cd CVE-2025-31324
# 2. Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 3. Install dependencies
pip install -r requirements.txt
scan.py # Main scanner
targets.csv # Input list of targets
ioc_list.txt # Optional IOC signature list
results.csv # Output report (if --output used)
requirements.txt # Python dependencies
Create a file named targets.csv with the following semicolon-separated format with IP, Port and SSL option:
192.168.1.10;50000;false
myunsafelocation.example.com;443;true
10.0.0.5;8080;false
true, false, yes, or noCreate a file named ioc_list.txt:
# Default IOCs
cache.jsp
helper.jsp
nzwcnktc.jsp
# Add your own signatures
shell.jsp
webadmin.jsp
python3 scan.py --input targets.csv
| Flag | Description |
|---|---|
--iocfile | Path to custom IOC list (.txt) |
python3 scan.py --input targets.csv --iocfile ioc_list.txt --output results.csv --verbose
The script prints a result block for each host:
__________________________________
✅ Target 1 : 192.168.1.10:50000
Connection: Online
Status: Not Vulnerable
IOC: None detected
__________________________________
| Icon | Meaning |
|---|---|
| ✅ | Safe (Not vulnerable, no IOCs) |
| ❗ | Vulnerable, but no IOCs found |
| 💥 | Vulnerable + IOC(s) detected |
| ❌ | Host not reachable / connection failed |
To test locally, run a Python HTTP server simulating a vulnerable SAP system:
mkdir -p test/developmentserver
mkdir -p test/irj
echo "" > test/developmentserver/metadatauploader
echo "<%-- fake webshell --%>" > test/irj/cache.jsp
cd test
python3 -m http.server 8000
Add to targets.csv:
0.0.0.0;8000;false
This tool is provided for authorized security testing and research only. Do not use against systems you do not own or have explicit permission to scan.
For suggestions or improvements, please open an issue or submit a PR.
This project is licensed under the MIT License.
You are free to use, modify, and distribute it — commercially or privately.
Disclaimer:
This tool is provided as-is, without any warranty or guarantee.
The authors are not responsible for any damage or legal issues caused by its usage.
Use it only in environments where you have explicit authorization to scan and test systems.
--output or -o | Save results to CSV |
--verbose or -v | Enable detailed debug output |