Skip to content

Instantly share code, notes, and snippets.

@ksrhaziel ksrhaziel/wphard.sh Secret
Last active Dec 10, 2017

Embed
What would you like to do?
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
You can’t perform that action at this time.