| 
	
 | 
 Posted by Jerry Stuckle on 06/24/07 02:27 
Manuel Lemos wrote: 
> Hello, 
>  
> on 06/23/2007 08:25 AM Jerry Stuckle said the following: 
>>>>> It's been mentioned here a couple of times in different threads 
>>>>> regarding 
>>>>> image uploading. It's not new, but I found a clear explanation of 
>>>>> what it 
>>>>> is and how to deal with it. Hope it helps some of you. 
>>>>> 
>>>>> http://www.phpclasses.org/blog/post/67-PHP-security-exploit-with-GIF-images.html 
>>>>> 
>>>>> 
>>>>> 
>>>>> Best! 
>>>>> Sh. 
>>>> How this exploit is related specifically to GIF files? You can insert 
>>>> php code in any file and every upload script that doesn't check file 
>>>> extensions is vulnerable. 
>>> It is explained in the article. You can upload a specially crafted GIF 
>>> image that embeds PHP code. Many developers use PHP getimagesize() 
>>> function to validate that the image is GIF (or other types). The 
>>> getimagesize function will not fail because the crafted image is a valid 
>>> GIF. 
>>> 
>>> Depending on you serve uploaded GIF files, the embedded PHP code may be 
>>> executed . 
>>> 
>>> Using GD image manipulation functions may not save anybody from exploits 
>>> because the PHP code may be embedded in the image palette space. If 
>>> those GD functions preserve the original palette, the embedded PHP code 
>>> remains there. 
>>> 
>> I don't know anyone in their right mind who would set up a server to 
>> parse gif's as PHP code. 
>  
> You are missing the point. Developers are not parsing GIFs as PHP code 
> intentionally. 
> 
 
No, I'm not. 
 
> Some less informed developers are serving uploaded GIFs in a insecure 
> ways because that triggers the execution of PHP code that may embedded 
> inside the GIF data, for instance as a stream of bytes in the GIF 
> palette like this:. 
>  
 
That's their problem.  If you don't know enough about security to lock  
your house, you have little right to complain when someone walks in and  
steals your TV. 
 
> GIF98a other binary data and then GIF palette here<?php 
> readfile('/etc/passwd'); ?> more binary data. 
>  
> That is explained in the article. 
>  
 
I understand the article.  What I don't understand is why this would be  
a problem to anyone with a bit of sense. 
 
For instance - /etc/passwd does NOT have passwords in it in a modern  
Linux system.  Those are in /etc/shadow, which is only readable by root. 
 
And even if /etc/passwd had passwords, those are encrypted (actually,  
hashed), and even if they were read one would have to go through a lot  
of gyrations to determine a compatible password. 
 
A bunch of hype for the truly uninformed, IMHO. 
 
--  
================== 
Remove the "x" from my email address 
Jerry Stuckle 
JDS Computer Training Corp. 
jstucklex@attglobal.net 
==================
 
  
Navigation:
[Reply to this message] 
 |