
🔍 Un simple script Bash para detectar webshells JSP maliciosos, incluyendo aquellos utilizados en exploits de SAP NetWeaver CVE-2025-31324.
Un script ligero para escanear archivos .jsp y .jspx en busca de patrones sospechosos típicamente asociados con webshells basadas en JSP, incluyendo aquellos observados en ataques que explotan SAP NetWeaver CVE-2025-31324.
Este escáner también se ha ampliado con comprobaciones de triage para indicadores de Oracle PeopleSoft / ShinyHunters / UNC6240 asociados con CVE-2026-35273, incluyendo rutas sospechosas de PeopleSoft, nombres de archivo, hashes y cadenas de C2.
Esta es una herramienta de triage. Está diseñada para ayudar a los defensores a identificar rápidamente archivos, rutas y cadenas sospechosas que requieran una revisión de seguimiento.
El escáner busca archivos JSP/JSPX y artefactos relacionados de la capa web que contengan patrones como:
Runtime.getRuntime()request.getParameter()exec(, , y cmd=command=ProcessBuildernew File(), FileWriter, PrintWriter y FileOutputStreamresponse.getWriter() y out.println()cmd.exe, powershell, /bin/sh y /bin/bashInspecciona el contenido de los archivos, no solo los nombres de archivo, lo que lo hace adecuado para detectar webshells renombrados u ocultos.
El escáner también incluye comprobaciones de triage para indicadores de Oracle PeopleSoft asociados con la campaña de ShinyHunters / UNC6240 de junio de 2026 que involucra CVE-2026-35273.
Estas comprobaciones incluyen:
/PSEMHUB/hub/PSIGW/HttpListeningConnector/PSEMHUB/.jsp o .jspx inesperados dentro de PSEMHUB.warPSEMHUB.war/envmetadata/transactionslogs, persistantstorage, persistentstorage o scratchpad sospechosos bajo rutas de PSEMHUBenvmetadata/data/environmentREADME-IF-YOU-SEE-THIS-YOUVE-BEEN-HACKED.TXT*_fanout.shpsappsrv.cfg, ps_config y config.xml142.11.200.186
142.11.200.187
142.11.200.188
142.11.200.189
142.11.200.190
108.174.202.99
176.120.22.24
azurenetfiles.net
wss://azurenetfiles.net:443/agent.ashx
README-IF-YOU-SEE-THIS-YOUVE-BEEN-HACKED.TXT
*_fanout.sh
meshagent
meshagent.exe
meshagent32-azure-ops.exe
meshagent64-azure-ops.exe
meshagent64-v2.exe
meshctrl.js
.bash_history
2ab684d93c1553fad87041b4dea97188a97e78589deee2a7bacff905564f3a35
f02a924c9ff92a8780ce812511341182c6b509d45bc59f3f7b522e37225d24fc
d83fdb9e53c5ff03c4cb0451ea1bebd79b53f29eadc1e2fa394c7af13a86ce2f
c7e9332731b06644fc73e0046a2a89eaa59b09f54250e9bd622467187351711f
68257a6f9ff196179ec03624e849927f26599eb180a7c82e14ef5bc4e93bc309
Clona el repositorio o descarga el script Bash:
chmod +x detect_webshells.sh
./detect_webshells.sh /path/to/scan
Ejemplo:
./detect_webshells.sh .
Ejemplo de ruta SAP:
./detect_webshells.sh /usr/sap
Ejemplo de rutas PeopleSoft:
./detect_webshells.sh /u01/app/psoft
./detect_webshells.sh /u01/app/psoft/ps_config_homes
./detect_webshells.sh /opt/oracle/psft
Clona el repositorio o descarga el script PowerShell:
.\detect_webshells.ps1 -Path .
Ejemplo:
.\detect_webshells.ps1 -Path C:\inetpub\wwwroot
Ejemplo de rutas PeopleSoft:
.\detect_webshells.ps1 -Path D:\PeopleSoft
.\detect_webshells.ps1 -Path D:\Oracle\PeopleSoft
.\detect_webshells.ps1 -Path C:\Oracle\Middleware
Si PowerShell bloquea la ejecución del script, ejecuta:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\detect_webshells.ps1 -Path .
Esto cambia la política de ejecución solo para la sesión actual de PowerShell.
==== 1. Suspicious JSP code patterns ====
[HIT] Suspicious JSP pattern: Runtime\.getRuntime\(
/usr/sap/OP1/J31/work/suspicious.jsp:13: out.println(Runtime.getRuntime().exec(cmd));
[HIT] Suspicious JSP pattern: request\.getParameter\(
/usr/sap/OP1/J31/work/shell.jsp:9: String cmd = request.getParameter("cmd");
==== 2. PeopleSoft / ShinyHunters HTTP path indicators ====
[HIT] HTTP/path indicator: POST /PSEMHUB/hub
/u01/app/psoft/logs/access.log:1042: 142.11.200.186 - - "POST /PSEMHUB/hub HTTP/1.1" 200
==== 4. Filename indicators ====
[HIT] Suspicious filename: /u01/app/psoft/README-IF-YOU-SEE-THIS-YOUVE-BEEN-HACKED.TXT
==== 1. Suspicious JSP code patterns ====
[HIT] Suspicious JSP pattern in C:\PeopleSoft\webserv\shell.jsp:9: String cmd = request.getParameter("cmd");
==== 5. Network/C2 indicators in files and logs ====
[HIT] Network/C2 IOC 'azurenetfiles.net' in C:\PeopleSoft\logs\access.log:522: connection to azurenetfiles.net
Un resultado del escáner debe tratarse como una pista para la investigación, no como una prueba definitiva de compromiso.
Para entornos SAP NetWeaver, revise:
Para entornos PeopleSoft, revise:
/PSEMHUB/hub/PSIGW/HttpListeningConnectorPSEMHUB.warEste script se proporciona tal cual, sin garantías de ningún tipo.
Está diseñado como una herramienta de triage rápido para ayudar en la identificación inicial de archivos .jsp y .jspx sospechosos, especialmente aquellos que pueden parecerse a webshells relacionados con vulnerabilidades como SAP NetWeaver CVE-2025-31324.
También incluye comprobaciones de triage para indicadores seleccionados de Oracle PeopleSoft / ShinyHunters / UNC6240, pero no es un escáner forense integral de PeopleSoft.
Esta herramienta no sustituye una respuesta completa a incidentes, revisión forense, validación de parches del proveedor, telemetría EDR o análisis de registros.
Usted es el único responsable de cómo interpreta y actúa sobre los hallazgos. Este proyecto se comparte de buena fe y para beneficio de la comunidad, pero su uso es completamente bajo su propio riesgo.
Las contribuciones son bienvenidas y apreciadas.
Si desea mejorar esta herramienta —ya sea añadiendo nuevos patrones de detección, optimizando la lógica de escaneo, mejorando la cobertura de IOC o reduciendo falsos positivos—, no dude en abrir un issue o enviar un pull request.
Antes de enviar un pull request:
Gracias por apoyar las herramientas de seguridad de código abierto.