67 lines
2.8 KiB
Bash
67 lines
2.8 KiB
Bash
#! /usr/bin/env bash
|
|
# Tool zum Schnellen prüfen mehrerer WordPress-Installationen
|
|
# Maintainer: peignerpausz
|
|
set -ou pipefail
|
|
|
|
RED="\033[31m"
|
|
GREEN="\033[32m"
|
|
YELLOW="\033[33m"
|
|
RESET="\033[0m"
|
|
declare -a wpuser
|
|
declare wppath
|
|
declare uploads
|
|
|
|
printf "WPChecker wird gestartet...\n\n"
|
|
printf "Führe zu prüfenden Usernamen an: "
|
|
read -a wpuser
|
|
echo "${wpuser[@]}"
|
|
printf "Führe Stammverzeichnis der zu prüfenden WordPress-Installationen an: "
|
|
read wppath
|
|
echo "$wppath"
|
|
printf "Beginne Prüfung der WordPress-Installationen\n++++++++++++++++++++\n"
|
|
for wordpress in $(find $wppath -type f -name "wp-config.php" -exec dirname {} \;); do
|
|
[[ -d "$wordpress" ]] || continue
|
|
# Setzt Prüfung nur für alle Verzeichnisse mit einer vorhandenen wp-config.php fort.
|
|
# Wenn viele Verzeichnisse geprüft werden ist für die Übersichtlichkeit die Unterdrückung von Fehlern mittels 2>/dev/null empfehlenswert.
|
|
printf "\nPrüfe $wordpress\n+++++++++++++++++\n"
|
|
corev=$(php ~/bin/wp-cli.phar core version --path="$wordpress")
|
|
printf "${YELLOW}%s${RESET}\n" "$corev"
|
|
coresum=$(php ~/bin/wp-cli.phar core verify-checksums --path="$wordpress" 2>/dev/null)
|
|
if [[ $? > 0 ]]; then
|
|
printf "${RED}X${RESET} Coresum-Fehler!\n"
|
|
else
|
|
printf="${GREEN}OK${RESET} Coresum okay!\n"
|
|
fi
|
|
userlist=$(php ~/bin/wp-cli.phar user list --role=administrator --path="$wordpress")
|
|
for a in "${wpuser[@]}"; do
|
|
if printf "%s" "$userlist" | grep -Fq -- $a; then
|
|
printf "${RED}X${RESET} Hinweis auf wp2hsell gefunden! Username: %s\n Rate zur Prüfung von wp-content/uploads auf .htaccess und php-Files.\n" "$a"
|
|
else
|
|
printf "${GREEN}OK${RESET} Kein eindeutiger Hinweis auf wp2shell!\n"
|
|
fi
|
|
done
|
|
plugincheck=$(php ~/bin/wp-cli.phar plugin verify-checksums --all --path="$wordpress" 2>/dev/null)
|
|
if [[ $? > 0 ]]; then
|
|
printf "${RED}X${RESET} Plugins prüfen!\n Rate zur Prüfung von wp-content/uploads auf .htaccess- und .php-Files\n"
|
|
else
|
|
printf "${GREEN}OK${RESET} Plugins okay!\n"
|
|
fi
|
|
for uploads in $(find $wppath -type d -wholename "wp-content/uploads" -exec dirname {} \;); do
|
|
[[ -d "$uploads" ]] || continue
|
|
printf "Prüfe Upload-Folder auf verdächtige .htaccess-Files\n"
|
|
htaccesschecker=$(find "$uploads" -type f -name ".htaccess")
|
|
if printf "%s" "$htaccesschecker" | grep "*.php"; then
|
|
printf "${RED}X${RESET} .htaccess im Uploadfolder gefunden: %s\n" "$htaccesschecker"
|
|
else
|
|
printf"${GREEN}OK${RESET} keine .htaccess im Uploadfolder gefunden!\n"
|
|
fi
|
|
printf "Prüfe Upload-Folder auf verdächtige php-Files\n"
|
|
phpchecker=$(find "$uploads" -type f -name "*.php" | wc -l)
|
|
if [[ "$phpchecker" > 0 ]]; then
|
|
printf "${RED}X${RESET} PHP-Files im Uploadfolder gefunden: %s\n" "$phpchecker"
|
|
else
|
|
printf "${GREEN}OK${RESET} keine PHP-Files im Uploadfolder gefunden!\n"
|
|
fi
|
|
done
|
|
done
|