Jump to content

Залили шелл на сайт


Recommended Posts

Залили шелл на сайт в корень, в wp-content, wp-content/uploads и еще хз куда.

Цитата

 

Known exploit = Fingerprint Match PHP Shell Exploit  P1517

Known exploit = Fingerprint Match  PHP REQUEST Exploit

 

называется как-то так up.php, wp-up.php и схожие названия.

Вопрос в следующем, как обезопасить в дальнейшем себя от залива подобного?

Я-то сейчас сайт восстановлю из бекапа, но как обезопасить себя в будущем?

Link to post
Share on other sites
  • Модератор

Как вариант: откатитесь и обновите ядро WP и все плагины. Должно помочь. Если сайт содержит собственноручные плагины и коды, их модификации, нужно ставить некоторые защиты. Например:

Создаем файл .htaccess и заливаем его в  /wp-includes

<FilesMatch "\.(php|php\.)(.+)(\w|\d)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|php\.)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|pl|py|jsp|asp|htm|shtml|sh|cgi)$">
ForceType text/plain
</FilesMatch>

Создаем файл .htaccess и заливаем его в /wp-content/uploads/ 

Order Allow,Deny
Deny from all
<FilesMatch "^[^.]+\.(?i:jpe?g|png|gif|pdf|ico|svg|css)$">
Allow from all
</FilesMatch>
 
<FilesMatch "\.(php|php\.)(.+)(\w|\d)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|php\.)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|pl|py|jsp|asp|htm|shtml|sh|cgi)$">
ForceType text/plain
</FilesMatch>

В файле functions.php текущей темы (вырезаем ненужное из ядра и прячем конфиденциальную инфо)

function remove_plugins() {
        remove_action('wp_head', 'feed_links_extra', 3);
        remove_action('wp_head', 'feed_links', 2);
        remove_action('wp_head', 'rsd_link' );
        remove_action('wp_head', 'wlwmanifest_link');
        remove_action('wp_head', 'wp_generator');
    remove_filter('comment_text', 'wptexturize');
remove_filter('the_content', 'wptexturize');
remove_filter('the_excerpt', 'wptexturize');
        remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
        remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
 }
    add_action('template_redirect', 'remove_plugins');

Открываем .htaccess в корне сайта и пихаем туда (запрещаем подозрительные обращения к сайту, блокируем распространенные боты, пауки и сканеры):

# Защита от хакеров от files. Подробности в скайпе: websochka
Options +FollowSymLinks -Indexes
########## Begin - Rewrite rules to block out some common exploits
# If the request query string contains /proc/self/environ (by SigSiu.net)
RewriteCond %{QUERY_STRING} proc/self/environ [OR]
# Block out any script trying to base64_encode or base64_decode data within the URL
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [OR]
## IMPORTANT: If the above line throws an HTTP 500 error, replace it with these 2 lines:
# RewriteCond %{QUERY_STRING} base64_encode\(.*\) [OR]
# RewriteCond %{QUERY_STRING} base64_decode\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]

RewriteCond %{REQUEST_METHOD} GET
# to put some exceptions
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=https:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=ftp:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
# CustomLog insert-path-and-name-of-log common env=bad-range
RewriteRule .* - [F]
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]
RewriteCond %{QUERY_STRING} ^(%2d|\-)[^=]+$ [NC]
RewriteRule .* - [F]
RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR]
RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC]
# CustomLog insert-path-and-name-of-log common env=bad-range
RewriteRule .* - [F]
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]
RewriteCond %{THE_REQUEST} (\\r|\\n|%0A|%0D) [NC,OR]
RewriteCond %{HTTP_REFERER} (<|>||%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{HTTP_COOKIE} (<|>||%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (libwww-perl|curl|wget|python|nikto|scan) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (<|>||%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{QUERY_STRING} proc\/self\/environ [NC,OR]
RewriteCond %{QUERY_STRING} etc\/passwd [NC,OR]
<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh|sql|inc)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# BEGIN Bad Bot Blocker
SetEnvIfNoCase User-Agent "Abonti|aggregator|AhrefsBot|asterias|BDCbot|BLEXBot|BuiltBotTough|Bullseye|BunnySlippers|ca\-crawler|CCBot|Cegbfeieh|CheeseBot|CherryPicker|CopyRightCheck|cosmos|Crescent|discobot|DittoSpyder|DotBot|Download Ninja|EasouSpider|EmailCollector|EmailSiphon|EmailWolf|EroCrawler|Exabot|ExtractorPro|Fasterfox|FeedBooster|Foobot|Genieo|grub\-client|Harvest|hloader|httplib|HTTrack|humanlinks|ieautodiscovery|InfoNaviRobot|IstellaBot|Java/1\.|JennyBot|k2spider|Kenjin Spider|Keyword Density/0\.9|larbin|LexiBot|libWeb|libwww|LinkextractorPro|linko|LinkScan/8\.1a Unix|LinkWalker|LNSpiderguy|lwp\-trivial|magpie|Mata Hari|MaxPointCrawler|MegaIndex|Microsoft URL Control|MIIxpc|Mippin|Missigua Locator|Mister PiX|MJ12bot|moget|MSIECrawler|NetAnts|NICErsPRO|Niki\-Bot|NPBot|Nutch|Offline Explorer|Openfind|panscient\.com|PHP/5\.\{|ProPowerBot/2\.14|ProWebWalker|Python\-urllib|QueryN Metasearch|RepoMonkey|RMA|SemrushBot|SeznamBot|SISTRIX|sitecheck\.Internetseer\.com|SiteSnagger|SnapPreviewBot|Sogou|SpankBot|spanner|spbot|Spinn3r|suzuran|Szukacz/1\.4|Teleport|Telesoft|The Intraformant|TheNomad|TightTwatBot|Titan|toCrawl/UrlDispatcher|True_Robot|turingos|TurnitinBot|UbiCrawler|UnisterBot|URLy Warning|VCI|WBSearchBot|Web Downloader/6\.9|Web Image Collector|WebAuto|WebBandit|WebCopier|WebEnhancer|WebmasterWorldForumBot|WebReaper|WebSauger|Website Quester|Webster Pro|WebStripper|WebZip|Wotbox|wsr\-agent|WWW\-Collector\-E|Zao|Zeus|ZyBORG|coccoc|Incutio|lmspider|memoryBot|SemrushBot|serf|Unknown|uptime files" bad_bot
Deny from env=bad_bot
# END Bad Bot Blocker
AddDefaultCharset utf-8
AddType 'text/html; charset=utf-8' .html .htm .shtml

<files .htaccess>
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
</IfModule>
    </files>
    <files readme.html>
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
</IfModule>
    </files>
    <files readme.txt>
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
</IfModule>
    </files>
    <files wp-config.php>
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
</IfModule>
    </files>

    <IfModule mod_rewrite.c>
RewriteEngine On

# Защита системных файлов
RewriteRule ^wp-admin/install\.php$ - [F]
RewriteRule ^wp-admin/includes/ - [F]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F]
RewriteRule ^wp-includes/theme-compat/ - [F]

# Disable PHP in Uploads
RewriteRule ^wp\-content/uploads/.*\.(?:php[1-7]?|pht|phtml?|phps)$ - [NC,F]

# Disable PHP in Plugins
RewriteRule ^wp\-content/plugins/.*\.(?:php[1-7]?|pht|phtml?|phps)$ - [NC,F]

# Disable PHP in Themes
RewriteRule ^wp\-content/themes/.*\.(?:php[1-7]?|pht|phtml?|phps)$ - [NC,F]
    </IfModule>

Если у Вас ситуация сложная и вы не понимаете как и зачем все это, то меня всегда можно найти в скайпе websochka

Link to post
Share on other sites

ответ очень прост - не использовать ВП, как можно использовать эту сплошную дырку, шаблоны которого в основном на 90% состоят из php файлов, в котором куча всякого шлака, я незнаю....

сколько не пытался себя обезопасить, какие плагины не ставил, и шаблоны строго с офф сайта и тд... итог один - залитые шеллы и засранные остальные сайты....

чую набегут вордпрессники и будут доказывать, что у меня руки не с того места раз взламывают, - ответ даю сразу - я согласен, что руки не с того места, но на ВП больше в жизни не вернусь, хватило опыта 3-5 лет работы с ним....дыраааааа.... дырявей движка не встречал

Link to post
Share on other sites
2 минуты назад, GUEVARA сказал:

ответ очень прост - не использовать ВП, как можно использовать эту сплошную дырку, шаблоны которого в основном на 90% состоят из php файлов, в котором куча всякого шлака, я незнаю....

сколько не пытался себя обезопасить, какие плагины не ставил, и шаблоны строго с офф сайта и тд... итог один - залитые шеллы и засранные остальные сайты....

чую набегут вордпрессники и будут доказывать, что у меня руки не с того места раз взламывают, - ответ даю сразу - я согласен, что руки не с того места, но на ВП больше в жизни не вернусь, хватило опыта 3-5 лет работы с ним....дыраааааа.... дырявей движка не встречал

На что в итоге перешли? 

Link to post
Share on other sites
  • Модератор
Цитата

ответ очень прост - не использовать ВП, как можно использовать эту сплошную дырку, шаблоны которого в основном на 90% состоят из php файлов, в котором куча всякого шлака, я незнаю....

Цитата

я согласен, что руки не с того места

Если вы не умеете водить автомобиль, но садитесь за руль и попадая в аварию начинаете хамить всем кто ездит на автомобиле - не совсем логично.

Link to post
Share on other sites
6 minutes ago, files said:

Если вы не умеете водить автомобиль, но садитесь за руль и попадая в аварию начинаете хамить всем кто ездит на автомобиле - не совсем логично.

не подменяйте понятия, в данном случае хамства в сторону пользователей вп (водителей) не было, а только в сторону движка

Link to post
Share on other sites
20 минут назад, files сказал:

Как вариант: откатитесь и обновите ядро WP и все плагины. Должно помочь. Если сайт содержит собственноручные плагины и коды, их модификации, нужно ставить некоторые защиты. Например:

Создаем файл .htaccess и заливаем его в  /wp-content/wp-includes


<FilesMatch "\.(php|php\.)(.+)(\w|\d)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|php\.)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|pl|py|jsp|asp|htm|shtml|sh|cgi)$">
ForceType text/plain
</FilesMatch>

Создаем файл .htaccess и заливаем его в /wp-content/uploads/ 


Order Allow,Deny
Deny from all
<FilesMatch "^[^.]+\.(?i:jpe?g|png|gif|pdf|ico|svg|css)$">
Allow from all
</FilesMatch>
 
<FilesMatch "\.(php|php\.)(.+)(\w|\d)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|php\.)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|pl|py|jsp|asp|htm|shtml|sh|cgi)$">
ForceType text/plain
</FilesMatch>

В файле functions.php текущей темы (вырезаем ненужное из ядра и прячем конфиденциальную инфо)


function remove_plugins() {
        remove_action('wp_head', 'feed_links_extra', 3);
        remove_action('wp_head', 'feed_links', 2);
        remove_action('wp_head', 'rsd_link' );
        remove_action('wp_head', 'wlwmanifest_link');
        remove_action('wp_head', 'wp_generator');
    remove_filter('comment_text', 'wptexturize');
remove_filter('the_content', 'wptexturize');
remove_filter('the_excerpt', 'wptexturize');
        remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
        remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
 }
    add_action('template_redirect', 'remove_plugins');

Открываем .htaccess в корне сайта и пихаем туда (запрещаем подозрительные обращения к сайту, блокируем распространенные боты, пауки и сканеры):


# Защита от хакеров от files. Подробности в скайпе: websochka
Options +FollowSymLinks -Indexes
########## Begin - Rewrite rules to block out some common exploits
# If the request query string contains /proc/self/environ (by SigSiu.net)
RewriteCond %{QUERY_STRING} proc/self/environ [OR]
# Block out any script trying to base64_encode or base64_decode data within the URL
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [OR]
## IMPORTANT: If the above line throws an HTTP 500 error, replace it with these 2 lines:
# RewriteCond %{QUERY_STRING} base64_encode\(.*\) [OR]
# RewriteCond %{QUERY_STRING} base64_decode\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]

RewriteCond %{REQUEST_METHOD} GET
# to put some exceptions
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=https:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=ftp:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
# CustomLog insert-path-and-name-of-log common env=bad-range
RewriteRule .* - [F]
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC]
RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]
RewriteCond %{QUERY_STRING} ^(%2d|\-)[^=]+$ [NC]
RewriteRule .* - [F]
RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR]
RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC]
# CustomLog insert-path-and-name-of-log common env=bad-range
RewriteRule .* - [F]
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]
RewriteCond %{THE_REQUEST} (\\r|\\n|%0A|%0D) [NC,OR]
RewriteCond %{HTTP_REFERER} (<|>||%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{HTTP_COOKIE} (<|>||%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (libwww-perl|curl|wget|python|nikto|scan) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (<|>||%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{QUERY_STRING} proc\/self\/environ [NC,OR]
RewriteCond %{QUERY_STRING} etc\/passwd [NC,OR]
<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh|sql|inc)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# BEGIN Bad Bot Blocker
SetEnvIfNoCase User-Agent "Abonti|aggregator|AhrefsBot|asterias|BDCbot|BLEXBot|BuiltBotTough|Bullseye|BunnySlippers|ca\-crawler|CCBot|Cegbfeieh|CheeseBot|CherryPicker|CopyRightCheck|cosmos|Crescent|discobot|DittoSpyder|DotBot|Download Ninja|EasouSpider|EmailCollector|EmailSiphon|EmailWolf|EroCrawler|Exabot|ExtractorPro|Fasterfox|FeedBooster|Foobot|Genieo|grub\-client|Harvest|hloader|httplib|HTTrack|humanlinks|ieautodiscovery|InfoNaviRobot|IstellaBot|Java/1\.|JennyBot|k2spider|Kenjin Spider|Keyword Density/0\.9|larbin|LexiBot|libWeb|libwww|LinkextractorPro|linko|LinkScan/8\.1a Unix|LinkWalker|LNSpiderguy|lwp\-trivial|magpie|Mata Hari|MaxPointCrawler|MegaIndex|Microsoft URL Control|MIIxpc|Mippin|Missigua Locator|Mister PiX|MJ12bot|moget|MSIECrawler|NetAnts|NICErsPRO|Niki\-Bot|NPBot|Nutch|Offline Explorer|Openfind|panscient\.com|PHP/5\.\{|ProPowerBot/2\.14|ProWebWalker|Python\-urllib|QueryN Metasearch|RepoMonkey|RMA|SemrushBot|SeznamBot|SISTRIX|sitecheck\.Internetseer\.com|SiteSnagger|SnapPreviewBot|Sogou|SpankBot|spanner|spbot|Spinn3r|suzuran|Szukacz/1\.4|Teleport|Telesoft|The Intraformant|TheNomad|TightTwatBot|Titan|toCrawl/UrlDispatcher|True_Robot|turingos|TurnitinBot|UbiCrawler|UnisterBot|URLy Warning|VCI|WBSearchBot|Web Downloader/6\.9|Web Image Collector|WebAuto|WebBandit|WebCopier|WebEnhancer|WebmasterWorldForumBot|WebReaper|WebSauger|Website Quester|Webster Pro|WebStripper|WebZip|Wotbox|wsr\-agent|WWW\-Collector\-E|Zao|Zeus|ZyBORG|coccoc|Incutio|lmspider|memoryBot|SemrushBot|serf|Unknown|uptime files" bad_bot
Deny from env=bad_bot
# END Bad Bot Blocker
AddDefaultCharset utf-8
AddType 'text/html; charset=utf-8' .html .htm .shtml

<files .htaccess>
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
</IfModule>
    </files>
    <files readme.html>
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
</IfModule>
    </files>
    <files readme.txt>
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
</IfModule>
    </files>
    <files wp-config.php>
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
</IfModule>
    </files>

    <IfModule mod_rewrite.c>
RewriteEngine On

# Защита системных файлов
RewriteRule ^wp-admin/install\.php$ - [F]
RewriteRule ^wp-admin/includes/ - [F]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F]
RewriteRule ^wp-includes/theme-compat/ - [F]

# Disable PHP in Uploads
RewriteRule ^wp\-content/uploads/.*\.(?:php[1-7]?|pht|phtml?|phps)$ - [NC,F]

# Disable PHP in Plugins
RewriteRule ^wp\-content/plugins/.*\.(?:php[1-7]?|pht|phtml?|phps)$ - [NC,F]

# Disable PHP in Themes
RewriteRule ^wp\-content/themes/.*\.(?:php[1-7]?|pht|phtml?|phps)$ - [NC,F]
    </IfModule>

Если у Вас ситуация сложная и вы не понимаете как и зачем все это, то меня всегда можно найти в скайпе websochka

Огромное спасибо, очень полезная инфа. Сейчас откачу к бекапу до заражения, вроде все файлы созданы одним числом. Потом обновлю WP (не хотелось бы, но придется, есть плагины которые не работают как мне нужно с новыми версиями WP), а потом применю ваш гайд. Похожее находил, когда гуглил, но такого полного и объемного гайда не видел. Спасибо.

Link to post
Share on other sites

Мой Вам совет. Всем. Сам WP из коробки достаточно безопасен, есть ручные методы. Не ставьте плагины, тем более сторонних разработчиков, они дырявые почти все. К примеру список похожих записей. кол-ва просмотров статей, вывести только нужные статьи, внешний вид, шаблоны и прочее можно делать легко без плагинов, мануала полно, та же ajax подгрузка, поиск, пагинация, хлебные крошки и даже сео настройки. Знаю людей которые ставят плагин чтобы favicon поставить это же бред, у меня стоит 5 плагинов, 4 из которых якорные. 

Но конечно же соглашусь что фреймворки лучше в 100 раз, но тут все от задачи зависит, одно дело слабенький блог, другое крупный проект 

Link to post
Share on other sites
  • VIP

Если руки, простите, из жопы, любая CMS будет дырявой. Я с 2008 года использую WP, ни разу ни одного сайта не заразили вирусами, ни одного шелла не залили. Были проблемы со скрытыми ссылками, но это только из-за использования "бесплатных" шаблонов.

Link to post
Share on other sites

А есть какая-нибудь команда в cPanel чтобы найти файлы измененные в определенную дату? Как их автоматически найти?

 

Плюс, вроде где-то видел плагин безопасности, который что-то похожее умеет. Подскажите плс.

Link to post
Share on other sites
  • VIP
2 часа назад, sairon сказал:

Плюс, вроде где-то видел плагин безопасности, который что-то похожее умеет. Подскажите плс.

Wordfence Security....и предупредит, и не даст изменить файл, и сканирует по заданию, и еще много цего, сильно не нагружает систему, комплексно заменяет все существующие плагины безопасности

Link to post
Share on other sites
20 часов назад, files сказал:

Создаем файл .htaccess и заливаем его в  /wp-content/wp-includes


<FilesMatch "\.(php|php\.)(.+)(\w|\d)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|php\.)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|pl|py|jsp|asp|htm|shtml|sh|cgi)$">
ForceType text/plain
</FilesMatch>

отдельно в  /wp-content и отдельно в  /wp-includes ??

Link to post
Share on other sites
  • Модератор
Цитата

отдельно в  /wp-content и отдельно в  /wp-includes ??

Отдельно туда и туда, файлы то разные! В некоторых ситуациях нужна их корректировка, если на сайте перестает что-то работать.

Link to post
Share on other sites
  • Модератор
Цитата

просто меня путь смутил))

Чем именно? Мы запрещаем прямые обращения к файлам ядра WP извне.

P.S. Там имеется ввиду корневой /wp-includes (напутал чуток)

Link to post
Share on other sites
Только что, files сказал:

Чем именно? Мы запрещаем прямые обращения к файлам ядра WP извне.

Ну я к тому что вы пишете:
 

Создаем файл .htaccess и заливаем его в  /wp-content/wp-includes (такого пути нет, есть отдельно /wp-content и отдельно /wp-includes, поэтому я и уточнил, нижеследующий файл мы заливаем и туда и туда??)

<FilesMatch "\.(php|php\.)(.+)(\w|\d)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|php\.)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|pl|py|jsp|asp|htm|shtml|sh|cgi)$">
ForceType text/plain
</FilesMatch>




Потом вы пишете:

 

Создаем файл .htaccess и заливаем его в /wp-content/uploads/  (тут все ясно разрешаем конкретные типы файлов в папке /wp-content/uploads/)

Order Allow,Deny
Deny from all
<FilesMatch "^[^.]+\.(?i:jpe?g|png|gif|pdf|ico|svg|css)$">
Allow from all
</FilesMatch>
 
<FilesMatch "\.(php|php\.)(.+)(\w|\d)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|php\.)$">
Order Allow,Deny
Deny from all
</FilesMatch>
 
<FilesMatch "\.(php|pl|py|jsp|asp|htm|shtml|sh|cgi)$">
ForceType text/plain
</FilesMatch>
Link to post
Share on other sites
  • Модератор
Цитата

В защите от XSS-атак поможет?

Да, поможет. Смотрите код корневого .htaccess

Sairon, про пути напутал (исправил в первом ответе и отписал в P.S. сообщением выше).

Link to post
Share on other sites
8 минут назад, files сказал:

Да, поможет. Смотрите код корневого .htaccess

По поводу XSS отписал Вам вчера в личку в тему Скрытые ссылки. Буду очень признателен, если поможете.

Link to post
Share on other sites
  • Модератор
Цитата

По поводу XSS отписал Вам вчера в личку в тему Скрытые ссылки. Буду очень признателен, если поможете.

Продублируйте еще раз, так как нет вашего сообщения.

Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...