#!/bin/bash

# Couleurs pour la sortie
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m'

WP_PATH="${1:-.}"

echo "=== Scan Malware WordPress : $WP_PATH ==="
echo ""

# 1. Fichiers PHP dans uploads (très suspect)
echo -e "${RED}[CRITIQUE] Fichiers PHP dans wp-content/uploads :${NC}"
find "$WP_PATH/wp-content/uploads" -type f -name "*.php" 2>/dev/null

# 2. Fonctions PHP dangereuses (obfuscation/backdoors)
echo -e "\n${RED}[CRITIQUE] Fichiers avec fonctions suspectes :${NC}"
grep -rlE "(eval\s*\(|base64_decode\s*\(|gzinflate\s*\(|gzuncompress\s*\(|str_rot13\s*\(|preg_replace\s*\(.*/e|assert\s*\(|create_function\s*\(|call_user_func\s*\(.*\\\$|shell_exec\s*\(|passthru\s*\(|system\s*\(|exec\s*\(|popen\s*\(|proc_open\s*\()" \
  --include="*.php" "$WP_PATH" 2>/dev/null | grep -v "wp-includes/PHPMailer"

# 3. Patterns d'obfuscation courants
echo -e "\n${RED}[CRITIQUE] Obfuscation détectée (chaînes encodées longues) :${NC}"
grep -rlE "(\\\$[a-zA-Z_]+\s*=\s*['\"][a-zA-Z0-9+/=]{100,}['\"]|chr\s*\(\s*[0-9]+\s*\)\s*\.\s*chr)" \
  --include="*.php" "$WP_PATH" 2>/dev/null

# 4. Backdoors WordPress connues
echo -e "\n${RED}[CRITIQUE] Signatures de backdoors connues :${NC}"
grep -rlE "(FilesMan|WSO|c99|r57|b374k|webshell|\\\$GLOBALS\[\s*['\"]\\\\x|GIF89a.*<\?php)" \
  --include="*.php" "$WP_PATH" 2>/dev/null

# 5. Fichiers modifiés récemment (dernières 48h)
echo -e "\n${YELLOW}[ATTENTION] Fichiers PHP modifiés ces dernières 48h :${NC}"
find "$WP_PATH" -type f -name "*.php" -mtime -2 2>/dev/null | head -50

# 6. Fichiers avec noms suspects
echo -e "\n${YELLOW}[ATTENTION] Noms de fichiers suspects :${NC}"
find "$WP_PATH" -type f \( -name "*.php.suspected" -o -name "*.php.bak" -o -name "*shell*" \
  -o -name "*backdoor*" -o -name "wp-tmp.php" -o -name "wp-feed.php" -o -name "wp-vcd.php" \
  -o -regex ".*[0-9a-f]\{8\}\.php" \) 2>/dev/null

# 7. .htaccess suspects
echo -e "\n${YELLOW}[ATTENTION] Fichiers .htaccess (vérifier manuellement) :${NC}"
find "$WP_PATH" -name ".htaccess" -exec echo "--- {} ---" \; -exec grep -E "(RewriteRule.*http|php_value auto_prepend)" {} \; 2>/dev/null

# 8. Fichiers avec permissions 777
echo -e "\n${YELLOW}[ATTENTION] Fichiers avec permissions 777 :${NC}"
find "$WP_PATH" -type f -perm 0777 2>/dev/null | head -20

# 9. Iframes et scripts externes injectés
echo -e "\n${YELLOW}[ATTENTION] Iframes/scripts suspects dans les fichiers :${NC}"
grep -rlE "(<iframe.*style\s*=\s*['\"].*display\s*:\s*none|<script[^>]+src\s*=\s*['\"]https?://(?!.*wordpress|.*googleapis|.*jquery))" \
  --include="*.php" --include="*.html" "$WP_PATH" 2>/dev/null

# 10. Vérification index.php du core
echo -e "\n${YELLOW}[INFO] Hash des fichiers core critiques :${NC}"
md5sum "$WP_PATH/index.php" "$WP_PATH/wp-config.php" "$WP_PATH/wp-settings.php" 2>/dev/null

echo -e "\n=== Scan terminé ==="
echo "Conseil : Compare les hash avec une installation WordPress fraîche de même version"
