Security Basics mailing list archives

Re: PHP global variable overwrites


From: dan.crowley () gmail com
Date: Sun, 12 Jul 2009 17:58:01 -0600

This attack requires php_register_globals to be enabled in php.ini. By default, I believe it is disabled.

However, consider the following code:

<?
if($_POST['password'] == "34lolThisIsAGreatPa$$word#$#"){
$admin = 1;
}

if($admin == 1){
//Do something privileged
}
?>

The problem here is that with php_register_globals on, any GET or POST variable can define a new global variable. 
Therefore, a request to this script like 
"http://www.example.com/example.php?password=thisIsNotTheRightPassword&admin=1"; is dangerous.

PHP will create a global variable called $admin with a value of 1 before running the script, which bypasses the need 
for a correct password, as having the correct password only serves to set $admin to 1.

Hope this helps!

--
Dan Crowley
"None of us is as smart as all of us." - Japanese proverb

------------------------------------------------------------------------
Securing Apache Web Server with thawte Digital Certificate
In this guide we examine the importance of Apache-SSL and who needs an SSL certificate.  We look at how SSL works, how 
it benefits your company and how your customers can tell if a site is secure. You will find out how to test, purchase, 
install and use a thawte Digital Certificate on your Apache web server. Throughout, best practices for set-up are 
highlighted to help you ensure efficient ongoing management of your encryption keys and digital certificates.

http://www.dinclinx.com/Redirect.aspx?36;4175;25;1371;0;5;946;e13b6be442f727d1
------------------------------------------------------------------------


Current thread: