My process for cleaning a hacked site includes
- changing all credentials (user/pass) on hosting, FTP, WP (don’t use an admin-level user called ‘admin’)
- updating everything- from the repository – WP, themes, plugins. Remove old/unused plugins and themes
- use FTP of file manager to check every folder for files that look out of place (look at the datestamp of the files; since you updated everything, the bad files should be easily visible)
- look at the generated pages source for things that shouldn’t be there.
There is guidance all over the googles about cleaning hackedsites. And I wrote up a procedure that I use here: https://securitydawg.com/recovering-from-a-hacked-wordpress-site/
It can be done, just takes a bit of work.
Related Posts:
- Could a user account with a stolen password compromised entire WP site?
- Verifying that I have fully removed a WordPress hack?
- If a hacker changed the blog_charset to UTF-7 does that make WordPress vulnerable to further attacks?
- Where to securely store API keys and passwords in WordPress?
- Why are passwords exportable as plain text in WordPress?
- Tips for finding SPAM links injected into the_content
- How is password strength calculated?
- Make password invalid once logged out of password-protected page
- What should I do about hacked server?
- How can I find security hole in my wordpress site?
- Can’t reset WordPress password
- Is the “lost password” feature truly a vulnerability?
- How to prevent bot or someone to modify any file automatically?
- Frontend Password change
- Is it possible to reduce the minimum character length for passwords?
- wp-config.php modified?
- Is there any point setting the keys and salts in wp-config.php?
- Suspicious Files
- How to prevent wp-login brute force attack from thousand of different IP? [duplicate]
- When is wp_set_password() called or how to capture a password
- Moving away from MD5: Where to declare the custom global $wp_hasher?
- How to get WordPress to send Password Reset Link Email instead of New Password?
- Malware script in database post table only? [closed]
- Verifying that I have fully removed a WordPress hack?
- How can I safely hide the fact that my website runs on WordPress? [closed]
- My WordPress Websites are always under attack
- How to find exploited wordpress plugin [closed]
- Basic password protection without using users and roles
- How can I force a specific password?
- Can a WordPress administrator see other users’ passwords?
- Any known bugs that could cause disappearance of the wp_users table?
- On new server, site got hacked, permissions a bit strange? Please help
- Replace domain in database
- Remove hacked code – out of ideas! [closed]
- After limiting the access to my wp-login.php by IP through .htaccess, all my password-protected posts stopped working. What’s the best solution now?
- WordPress Database Re-installed (Hacked)
- Verifying that I have fully removed a WordPress hack?
- Password-protect feed and make it usable in major aggregators
- how to find the way they hacked my WP site
- How to set custom validation for WordPress Passwords?
- How to stop repeated hack on header.php of custom theme? [closed]
- My WP site and password was hacked, what to do? [closed]
- Should WordPress Add Options to Enhance Security or Leave it to plugin developers? [closed]
- WordPress Hacks/Defacing [closed]
- How to get real password (before encrypt) when register a user?
- Directory to store secure file
- Can you alter the default wordpress strong password requirements?
- wp-salt.php and wp-cli.yml File present in public_html folder
- SSL Error: unable to get local issuer certificate
- When you use ‘badidea’ or ‘thisisunsafe’ to bypass a Chrome certificate/HSTS error, does it only apply for the current site? [closed]
- When you use ‘badidea’ or ‘thisisunsafe’ to bypass a Chrome certificate/HSTS error, does it only apply for the current site? [closed]
- How to redirect all HTTP requests to HTTPS
- What is the difference between a cer, pvk, and pfx file?
- How to solve “Kernel panic – not syncing – Attempted to kill init” — without erasing any user data
- What’s the best approach for generating a new API key?
- Is it possible to decrypt SHA1
- Simplest two-way encryption using PHP
- Why does the URL http://a/%%30%30 crash Google Chrome?
- what is a auth_user_file.txt?
- When you use ‘badidea’ or ‘thisisunsafe’ to bypass a Chrome certificate/HSTS error, does it only apply for the current site?
- How does the SQL injection from the “Bobby Tables” XKCD comic work?
- Error `sec_error_revoked_certificate` when viewed in Firefox only
- How to view PHP on live site
- Convert .pfx to .cer
- how fix “this certificate cannot be verified up to a trusted certification authority”
- Can an attacker use inspect element harmfully?
- Where does Internet Explorer store saved passwords?
- How can bcrypt have built-in salts?
- Is moving wp-config outside the web root really beneficial?
- Hide the fact a site is using WordPress?
- Infected Files – what to do [closed]
- Getting a List of Currently Available Roles on a WordPress Site?
- WordPress 4.7.1 REST API still exposing users
- Can I Prevent Enumeration of Usernames?
- Best way to eliminate xmlrpc.php?
- What’s the easiest way to stop WP from ever logging me out
- Should I escape wordpress functions like the_title, the_excerpt, the_content
- Why should I use the esc_url?
- Should I remove install.php and install-helper.php?
- Prevent access or auto-delete readme.html, license.txt, wp-config-sample.php
- How safe / sanitized is wp_insert_posts()?
- Why does WordPress need my private ssh key to update?
- When to use esc_html and when to use sanitize_text_field?
- From a security standpoint, should bloginfo() or get_bloginfo() be escaped?
- Are Nonces Useless?
- What is the difference between esc_html filter vs attribute_escape filter?
- Why escape if the_content isnt?
- Why does WordPress have more than one salt?
- What is the ideal setup to address security concerns?
- Will there be security updates for 3.1 once 3.2 is released?
- What’s the difference between esc_* functions?
- Full path disclosure on rss-functions.php
- What to use instead of wp_kses() in user output
- Enforcing password complexity
- How to set up fail2ban with WordFence?
- How do I technically prove that WordPress is secure?
- Are the default salts secure?
- is_email() VS sanitize_email()
- multi page password protection
- WordPress it’s cleaning a custom query_var to avoid sql injections?