Actions

Difference between revisions of "Security Checklist/You have been hacked or defaced"

From Joomla! Documentation

< Security Checklist
(A Safe route for disaster relief: changed 2.5.x to auto version tag)
Line 78: Line 78:
 
* save the configuration.php file and your images and personal files one by one, (not the folder as it may contain unwanted files)
 
* save the configuration.php file and your images and personal files one by one, (not the folder as it may contain unwanted files)
 
* wipe the entire folder where Joomla! is installed
 
* wipe the entire folder where Joomla! is installed
* upload a new clean full package latest version of joomla 1.5.x or Joomla 1.7.x/{{CurrentLTSVer}} (minus the install folder)
+
* upload a new clean full package latest version of joomla 1.5.x or Joomla 1.7.x/2.5.x (minus the install folder)
 
* reupload your configuration file & images.
 
* reupload your configuration file & images.
 
* reupload or reinstall the latest versions of your extensions , templates (even better is to use original clean copies to ensure that the hacker/defacer did not leave any shell script files in your site)
 
* reupload or reinstall the latest versions of your extensions , templates (even better is to use original clean copies to ensure that the hacker/defacer did not leave any shell script files in your site)

Revision as of 07:08, 21 February 2012

Contents

You have been hacked/defaced ?

We are sorry for any basic language used in this document. Before you post in the Joomla! Security Forum please read this checklist summary, then use it as a post template.


On Line Action List

  • Run the forum post assistant and security tool The simple Instructions are available here. More detailed instructions are included in the download package. You will need to unzip this package and upload the fpa-en.php file to your server Joomla root The FPA is also available in a tar.gz package for those who desire or need a unix style package. The fpa-en.php file from the package will need to be uploaded to your server Joomla root.
  • Scan all machines with FTP, Joomla super admin, and Joomla admin access for malware, virus, trojans, spyware, etc. (see local security)
  • Ensure you have the latest version of Joomla
  • Notify your host and work with them to clean up the site, and to make sure there are no back doors to your site.
  • Review Vulnerable Extensions List to see if you have any vulnerable extensions and deal with them. A clue to any extensions being targeted is your logs file. Here is an example of what to look for,
//administrator/components/com_extension/admin.extension.php?mosConfig.absolute.path=http:

or

../../../../../../../../../../../../../../../../proc/self/environ
  • Review and action Security_Checklist to make sure you've gone through all of the steps (please note some steps are optional, but please review them all).
  • Change all passwords and if possible user names for the domains control panel, mysql, FTP, joomla Super Admin, and joomla Admin password; do change them often. Passwords should be at least 12 mixed alphanumeric characters and contain no common word phrases.
  • Do not use the standard Admin user. Disable it. If you need to reset your admin password, see these instructions
  • Replace all templates and files with clean copies,
  • Check and/or replace all .pdf, image, photo files for exploits
  • Check you server logs for IP's calling suspicious files or attempting POST commands to non-form's
  • Use proper permissions on files and directories. They should never be 777[1], but ideal is 644 for files and 755 folders.
  • Disable anonymous FTP

chmod and cron

IF you have permissions to access SSH (secure shell) via putty you can chmod the files and directories. If you do not have shell access, you can run the commands from cron by setting up a temporary cron job. Copy and paste the command into a cron job. Run the job about 2 minutes after saving the job. When using the command by putty or a cron job, the use of the full physical path to public_html is recommended for best results.

For files use:

find /home/xxxxxx/domains/xxxxxxx.com/public_html -type f -exec chmod 644 {} \;

and for directories use:

find /home/xxxxxx/domains/xxxxxxx.com/public_html -type d -exec chmod 755 {} \;


To check for recent file changes within the last day on your system use these commands from putty (SSH - secure shell) or via a cron job. If you run the command from a cron job you can schedule it to check for changed files several times each day. Results will be sent to the domain account owner and show the time/date stamp for any changed files. When using the command by putty or a cron job, the use of the full physical path to public_html is recommended for best results.

find /home/xxxxxx/domains/xxxxxxx.com/public_html -type f -ctime -1 -exec ls -ls {} \;


Please note your sites files may be located in public_html, httpdocs, www, or a similar place, and your physical path may also be different than in the examples. Adjust the physical path accordingly.


777 Permissions

If the server your are on requires 777 permissions for Joomla to work correctly, then request to be put on another server with php as cgi and suphp and up-to-date serverside software (apache, php etc) on your existing host or find another server host if necessary.

To protect directories that seemed to need 777 permissions to run or as a default in your images/media folder try this code within a .htaccess file within the open folder.

# secure directory by disabling script execution
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI
especially in your images folder
  • Make sure that is in a htaccess file in a directory that will not run any scripts or remove the extensions as required

Do check with your hosting provider to see if they have purposely secured the server your site is on; and that they or you perform regular (weekly) security updates to keep the server up to date. Check you have jail shell. A rule of thumb is the less you pay, the less they care

A Safe route for disaster relief

  • save the configuration.php file and your images and personal files one by one, (not the folder as it may contain unwanted files)
  • wipe the entire folder where Joomla! is installed
  • upload a new clean full package latest version of joomla 1.5.x or Joomla 1.7.x/2.5.x (minus the install folder)
  • reupload your configuration file & images.
  • reupload or reinstall the latest versions of your extensions , templates (even better is to use original clean copies to ensure that the hacker/defacer did not leave any shell script files in your site)

To do this will take your site off line for around 15 minutes. To track down your hacked/defaced html may take hours or even longer.


Local Security

  • Don't store user name/password in ftp program
    • Use a password manager such as the free keepass
  • Scan all machines with FTP, Joomla super admin, and Joomla admin access for malware, virus, trojans, spyware, etc.

Other Considerations

  • Do not use the standard jos_ table prefix and avoid one click installers where possible
  • Use sFTP instead of FTP where possible
  • Check for any added sub domains and/or added directories
  • Check cron for any cron jobs not set up by domain administrator
  • Download and [2]
  • Deny any IP's that you got to the IP ban on your site but it may belong to a proxy site.
Was your site hacked in the past and proper site sanitation not used to remove actual
(and hidden) hack thus leaving a backdoor for reinfection.

Malicious Code or Odd Links appearing on your site

Check that the original template file does or does not insert the unwanted code/Malicious Javascript or that you downloaded a paid for template from a non trusted source eg file sharing sites

Gumblar doesn’t use any particular script vulnerability. This script is injected into every web page ( I would imagine though not confirmed, if infected page is edited then saved it will also be in database) on a site. Script changes every time it is accessed. It has been seen on phpBB, SMF and vBulletin forums, on WordPress 2.7.1 blogs, on proprietary PHP sites. The script starts with (function( and has no name and is obfusticated. A common Gumblar version breaks sites due to a bug in script.

iFrames

In recent iframe exploits the malicious code was only injected into files with most common filenames (e.g. index.html, index.php, etc.). Related Forum Sticky

Contributors & Editing

mandville PhilD fw116 JeffChannell dynamicnet

References

  1. Permissions should never be 777
  2. Review raw access and error logs.

When your hosting provider runs PHP as an Apache Module it executes as the user/group of the webserver which is usually "nobody", "httpd" or "apache". Under this (ownership) mode, files or directories that you require your php scripts to be able to write do need 777 permissions (read/write/execute at user/group/world level) if the ownership of the files and directories are not Chown (Change Owner) to the User. Such a scenario is absolute unacceptable from a security perspective since '777' not only allows the webserver to write to the file; it also allows anyone else to read or write to the file. If your provider is not able to change this, one should strongly consider changing host!

Logs Make sure that in your control panel your raw access logs have been activated for review!

Raw Access Logs allow you to see who has accessed your site without the use of graphs, charts or other graphics. in cPanel for instance you can use the Raw Access Logs menu to download a zipped version of the server's access log for your site. This can be very useful when you need to see who is accessing your site quickly. Many people forget that this needs to be activated by the user of the account and is not automatically activated upon the creation of a hosting account in cPanel for instance!

Security Checklists Table of Contents

  1. Getting Started
  2. Hosting and Server Setup
  3. Testing and Development
  4. Joomla Setup
  5. Site Administration
  6. Site Recovery