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