
🔍 Un simple script Bash pour détecter les webshells JSP malveillants, y compris ceux utilisés dans les exploits de SAP NetWeaver CVE-2025-31324.
Un script léger pour analyser les fichiers .jsp et .jspx à la recherche de motifs suspects généralement associés aux webshells basés sur JSP, y compris ceux observés dans les attaques exploitant SAP NetWeaver CVE-2025-31324.
Ce scanner a également été enrichi de contrôles de tri pour les indicateurs Oracle PeopleSoft / ShinyHunters / UNC6240 associés à CVE-2026-35273, notamment les chemins PeopleSoft suspects, les noms de fichiers, les hashs et les chaînes C2.
Il s'agit d'un outil de tri. Il est conçu pour aider les défenseurs à identifier rapidement les fichiers, chemins et chaînes suspects qui méritent un examen approfondi.
Le scanner recherche les fichiers JSP/JSPX et les artefacts associés de la couche web contenant des motifs tels que :
Runtime.getRuntime()request.getParameter()exec(, , et cmd=command=ProcessBuildernew File(), FileWriter, PrintWriter et FileOutputStreamresponse.getWriter() et out.println()cmd.exe, powershell, /bin/sh et /bin/bashIl inspecte le contenu des fichiers, pas seulement les noms de fichiers, ce qui le rend adapté à la détection de webshells renommés ou furtifs.
Le scanner inclut également des contrôles de tri pour les indicateurs Oracle PeopleSoft associés à la campagne ShinyHunters / UNC6240 de juin 2026 impliquant CVE-2026-35273.
Ces contrôles incluent :
/PSEMHUB/hub/PSIGW/HttpListeningConnector/PSEMHUB/.jsp ou .jspx inattendus sous PSEMHUB.warPSEMHUB.war/envmetadata/transactionslogs, persistantstorage, persistentstorage ou scratchpad suspects sous les chemins PSEMHUBenvmetadata/data/environmentREADME-IF-YOU-SEE-THIS-YOUVE-BEEN-HACKED.TXT*_fanout.shpsappsrv.cfg, ps_config et 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
Clonez le dépôt ou téléchargez le script Bash :
chmod +x detect_webshells.sh
./detect_webshells.sh /path/to/scan
Exemple :
./detect_webshells.sh .
Exemple de chemin SAP :
./detect_webshells.sh /usr/sap
Exemples de chemins PeopleSoft :
./detect_webshells.sh /u01/app/psoft
./detect_webshells.sh /u01/app/psoft/ps_config_homes
./detect_webshells.sh /opt/oracle/psft
Clonez le dépôt ou téléchargez le script PowerShell :
.\detect_webshells.ps1 -Path .
Exemple :
.\detect_webshells.ps1 -Path C:\inetpub\wwwroot
Exemples de chemins PeopleSoft :
.\detect_webshells.ps1 -Path D:\PeopleSoft
.\detect_webshells.ps1 -Path D:\Oracle\PeopleSoft
.\detect_webshells.ps1 -Path C:\Oracle\Middleware
Si PowerShell bloque l'exécution du script, exécutez :
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\detect_webshells.ps1 -Path .
Cela ne modifie la stratégie d'exécution que pour la session PowerShell en cours.
==== 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
Une détection du scanner doit être traitée comme une piste d'investigation, et non comme une preuve définitive de compromission.
Pour les environnements SAP NetWeaver, examinez :
Pour les environnements PeopleSoft, examinez :
/PSEMHUB/hub/PSIGW/HttpListeningConnectorPSEMHUB.warCe script est fourni en l'état, sans garanties ni responsabilité d'aucune sorte.
Il est conçu comme un outil de tri rapide pour faciliter l'identification initiale des fichiers .jsp et .jspx suspects, en particulier ceux qui peuvent ressembler à des webshells liés à des vulnérabilités telles que SAP NetWeaver CVE-2025-31324.
Il inclut également des contrôles de tri pour certains indicateurs Oracle PeopleSoft / ShinyHunters / UNC6240, mais il ne constitue pas un scanner forensique PeopleSoft exhaustif.
Cet outil ne remplace pas une réponse à incident complète, une revue forensique, la validation des correctifs fournisseur, la télémétrie EDR ou l'analyse des journaux.
Vous êtes seul responsable de la manière dont vous interprétez et exploitez les résultats. Ce projet est partagé de bonne foi et pour le bénéfice de la communauté, mais son utilisation se fait entièrement à vos risques et périls.
Les contributions sont les bienvenues et appréciées.
Si vous souhaitez améliorer cet outil — que ce soit en ajoutant de nouveaux motifs de détection, en optimisant la logique d'analyse, en améliorant la couverture IOC ou en réduisant les faux positifs — n'hésitez pas à ouvrir une issue ou à soumettre une pull request.
Avant de soumettre une pull request :
Merci de soutenir les outils de sécurité open source.