Compare commits
2
Commits
cf1852fd0a
...
c950d17582
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c950d17582 | ||
|
|
e87a48cd7a |
@@ -0,0 +1,99 @@
|
|||||||
|
# wpchecker
|
||||||
|
|
||||||
|
Tool zum Schnellen prüfen mehrerer WordPress-Installationen
|
||||||
|
---
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Prüfen der Coreversion
|
||||||
|
- Prüfen der Core Checksums
|
||||||
|
- Prüfen der Plugin Checksums
|
||||||
|
- Prüfen der Adminnutzer
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Repository klonen oder Skript kopieren:
|
||||||
|
```bash
|
||||||
|
git clone git.int.loki-net.at/esn-support-bash-snippets.git
|
||||||
|
cd esn-support-bash-snippets/legacy/wpchecker
|
||||||
|
chmod +x wpchecker.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Abhängigkeiten (falls vorhanden) installieren:
|
||||||
|
- [`wp-cli`](https://group-one.atlassian.net/wiki/spaces/EASYNAME/pages/33673314407/WP-CLI-Mastery)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Nutzung
|
||||||
|
|
||||||
|
Skript kann im Prinzip von überall aus dem Usercontainer abgesetzt werden, da es über die $HOME-Variable direkt das html-Verzeichnis prüft.
|
||||||
|
|
||||||
|
### Standardaufruf
|
||||||
|
```bash
|
||||||
|
./wpchecker.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Beispiele
|
||||||
|
```bash
|
||||||
|
./wpchecker.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Optionen
|
||||||
|
|
||||||
|
```
|
||||||
|
Usage: ./<scriptname> [OPTIONS]
|
||||||
|
|
||||||
|
--help Zeigt diese Hilfe
|
||||||
|
--option Beispieloption
|
||||||
|
YYYY-MM-DD Beispiel für Datumsargument
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Beispielausgabe
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bash wpchecker
|
||||||
|
WPChecker wird gestartet...
|
||||||
|
|
||||||
|
Führe zu prüfenden Usernamen an: yun
|
||||||
|
yun
|
||||||
|
Führe Stammverzeichnis der zu prüfenden WordPress-Installationen an: html
|
||||||
|
html
|
||||||
|
Beginne Prüfung der WordPress-Installationen
|
||||||
|
++++++++++++++++++++
|
||||||
|
|
||||||
|
Prüfe html/pbtest/classicp
|
||||||
|
+++++++++++++++++
|
||||||
|
6.2.9
|
||||||
|
X Coresum-Fehler!
|
||||||
|
OK Kein eindeutiger Hinweis auf wp2shell!
|
||||||
|
OK Plugins okay!
|
||||||
|
|
||||||
|
Prüfe html/apps/wordpress-134151
|
||||||
|
+++++++++++++++++
|
||||||
|
7.1
|
||||||
|
OK Kein eindeutiger Hinweis auf wp2shell!
|
||||||
|
OK Plugins okay!
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Setup-Hinweise
|
||||||
|
|
||||||
|
Falls notwendig, Alias in `~/.bashrc` des Kunden setzen:
|
||||||
|
```bash
|
||||||
|
alias wpchecker='~/bin/wpchecker.sh'
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- WP-CLI muss unter /data/web/eUser/bin abgelegt und ausführbar sein
|
||||||
|
- ToDos
|
||||||
|
- non-interaktive Version bauen
|
||||||
@@ -1,19 +1,66 @@
|
|||||||
#! /usr/bin/env bash
|
#! /usr/bin/env bash
|
||||||
# Tool zum Schnellen prüfen mehrerer WordPress-Installationen
|
# Tool zum Schnellen prüfen mehrerer WordPress-Installationen
|
||||||
# Maintainer: peignerpausz
|
# Maintainer: peignerpausz
|
||||||
|
set -ou pipefail
|
||||||
|
|
||||||
printf "Bitte Namen der zu prüfenden Instanzen einsetzen"
|
RED="\033[31m"
|
||||||
read wordpresses
|
GREEN="\033[32m"
|
||||||
printf '🚀 WP-Checks für folgende Instanzen %s 🛠️ \n' "$wordpresses"
|
YELLOW="\033[33m"
|
||||||
found_errors=0
|
RESET="\033[0m"
|
||||||
for a in $wordpresses; do
|
declare -a wpuser
|
||||||
count=$(wp core verify-checksums --path="$wordpresses" | grep -v "Success" | wc -l)
|
declare wppath
|
||||||
count=$(wp plugin verify-checksums --all --path="$wordpresses" | grep -v "Success" | wc -l)
|
declare uploads
|
||||||
if [ "$count" -gt 0 ]; then
|
|
||||||
printf "❌ WordPress unter %s muss geprüft werden!\n" "$wordpresses"
|
printf "WPChecker wird gestartet...\n\n"
|
||||||
found_errors=1
|
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
|
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
|
done
|
||||||
if [ "$found_errors" -eq 0 ]; then
|
|
||||||
printf "✅ All systems green.\n"
|
|
||||||
fi
|
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#! /usr/bin/env bash
|
||||||
|
# Tool zum Schnellen prüfen mehrerer WordPress-Installationen
|
||||||
|
# Maintainer: peignerpausz
|
||||||
|
|
||||||
|
declare -a WORDPRESS=()
|
||||||
|
WORDPRESS="$(ls | grep wordpress)"
|
||||||
|
printf "Beginne Prüfung der Adminnutzer\n\n"
|
||||||
|
for wordpress in wordpress*/; do
|
||||||
|
[[ -d "$wordpress" ]] || continue
|
||||||
|
echo "Prüfe $wordpress"
|
||||||
|
userlist=$(php ~/bin/wp-cli.phar user list --role=administrator --path="$wordpress" 2>/dev/null)
|
||||||
|
if [[ -n "$userlist" ]]; then
|
||||||
|
printf "%s\n\n" "$userlist"
|
||||||
|
else
|
||||||
|
printf "Fehler bei %s\n\n" "$wordpress"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for uneasy in $(find html/. -type f -name "wp-config.php" -exec dirname {} \;); do
|
||||||
|
[[ -f "$uneasy" ]] || continue
|
||||||
|
echo "Prüfe $uneasy"
|
||||||
|
userlist2=$(php ~/bin/wp-cli.phar user list --role=administrator --path="$uneasy")
|
||||||
|
echo $userlist2
|
||||||
|
if [[ -n "$userlist2" ]]; then
|
||||||
|
printf "%s\n\n" "$userlist2"
|
||||||
|
else
|
||||||
|
printf "Fehler bei %s\n\n" "$uneasy"
|
||||||
|
fi
|
||||||
|
done
|
||||||
Reference in New Issue
Block a user