Remove WordPress vulnerabilities on filesystem containing multiple virtual web servers
#!/bin/bash | |
# | |
# WPHARD | |
# opis: skrypt do hardeningu serwisow zbudowanych na WordPressie, blokuje enumeracje uzytkownikow, usuwa plik readme.html, wylacza pokazywanie wersji WP | |
# autor: Karol Szadkowski, szadkowski.karol@gmail.com | |
# | |
webpath="/home/" # sciezka do filesystemu zawierajacego serwisy internetowe, ktora ma przeszukac find | |
paths="temppaths.txt" # plik tymczasowy gdzie zrzucane sa sciezki do wordpressow | |
tempfunc="tempfunc.txt" # plik tymczasowy gdzie zrzucane sa sciezki do plikow functions.php | |
find $webpath -iname "wp-config.php" | sed -e 's/wp-config.php//g' > $paths # zrzucenie sciezek filesystemow wordpressowych do pliku | |
while IFS='' read -r actualpath || [[ -n "$actualpath" ]]; # odczytanie pliku linia po linii | |
do | |
echo -e "\n========== Aktualna sciezka: $actualpath ==========" | |
if $(cat $actualpath/.htaccess | grep -q 'RewriteCond %{QUERY_STRING} ^author=(\[0-9]\*)') # sprawdzenie czy plik zawiera 'function remove_wp_version_rss' | |
then | |
echo -en '.htaccess - enumaracja WYLACZONA \t' | |
else | |
echo -en '.htaccess - NIE MA odpowiednich linii, dopisywanie...\t' | |
echo " | |
<IfModule mod_rewrite.c> | |
RewriteCond %{QUERY_STRING} ^author=([0-9]*) | |
RewriteRule .* https://127.0.0.1:8080/? [L,R=302] | |
</IfModule> | |
" >> $actualpath/.htaccess # dopisywanie linii do pliku .htaccess | |
fi | |
if [ -e $actualpath/readme.html ] # sprawdzenie czy plik readme.html istnieje | |
then | |
echo 'readme.html - ISTNIEJE, usuwanie...' | |
rm -f $actualpath/readme.html # usuniecie pliku readme.html | |
else | |
echo 'readme.html - BRAK pliku' | |
fi | |
find $actualpath -iname "functions.php" | cat > $tempfunc # zrzucenie sciezek functions.php do pliku | |
while IFS='' read -r actualpathfunc || [[ -n "$actualpathfunc" ]]; # odczytanie pliku linia po linii | |
do | |
if [[ $actualpathfunc == *"/wp-content/themes/"* ]]; # sprawdzenie czy sciezka do functions.php jest w folderze szablonow | |
then | |
if $(cat $actualpathfunc | grep -q 'function remove_wp_version_rss') # sprawdzenie czy plik zawiera 'function remove_wp_version_rss' | |
then | |
echo $actualpathfunc' - plik zabezpieczony' | |
else | |
echo $actualpathfunc' - NIE MA odpowiednich linii, dopisywanie...' | |
echo " | |
function remove_wp_version_rss() { | |
return ''; | |
} | |
add_filter('the_generator', 'remove_wp_version_rss'); | |
function vc_remove_wp_ver_css_js( \$src ) { | |
if ( strpos( \$src, 'ver=' ) ) | |
\$src = remove_query_arg( 'ver', \$src ); | |
return \$src; | |
} | |
add_filter( 'style_loader_src', 'vc_remove_wp_ver_css_js', 9999 ); | |
add_filter( 'script_loader_src', 'vc_remove_wp_ver_css_js', 9999 ); | |
" >> $actualpathfunc # dopisywanie linii do pliku functions.php | |
fi | |
fi | |
done < "$tempfunc" | |
rm -f $tempfunc # usuniecie pliku ze sciezkami functions.php | |
done < "$paths" | |
rm -f $paths # usuniecie pliku ze sciezkami do wordpressow |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment